igt/gem_exec_flush: Give even batch write a unique value

One property lost in the expansion for various coherency checks was
ensuring that every time we overwrote the batch it had a unique value
(to ensure that the GPU was seeing the latest value).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2016-05-03 21:12:12 +01:00
parent 7b7503fb6c
commit 6102e2eca9

View File

@ -351,7 +351,7 @@ static void batch(int fd, unsigned ring, int nchild, int timeout,
b[-1] -= 1; b[-1] -= 1;
*b++ = offset; *b++ = offset;
} }
*b++ = i; *b++ = cycles + i;
*b++ = MI_BATCH_BUFFER_END; *b++ = MI_BATCH_BUFFER_END;
switch (mode) { switch (mode) {
@ -371,7 +371,6 @@ static void batch(int fd, unsigned ring, int nchild, int timeout,
break; break;
} }
gem_execbuf(fd, &execbuf); gem_execbuf(fd, &execbuf);
cycles++;
execbuf.batch_start_offset += 64; execbuf.batch_start_offset += 64;
reloc.offset += 64; reloc.offset += 64;
@ -379,14 +378,15 @@ static void batch(int fd, unsigned ring, int nchild, int timeout,
if (!(flags & COHERENT)) { if (!(flags & COHERENT)) {
gem_set_domain(fd, obj[0].handle, gem_set_domain(fd, obj[0].handle,
I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU,
I915_GEM_DOMAIN_CPU); I915_GEM_DOMAIN_CPU);
} else } else
gem_sync(fd, obj[0].handle); gem_sync(fd, obj[0].handle);
for (i = 0; i < 1024; i++) { for (i = 0; i < 1024; i++) {
igt_assert_eq(map[i], i); igt_assert_eq_u32(map[i], cycles + i);
map[i] = 0xabcdabcd; map[i] = 0xabcdabcd ^ cycles;
} }
cycles += 1024;
if (mode == BATCH_USER) if (mode == BATCH_USER)
gem_sync(fd, obj[1].handle); gem_sync(fd, obj[1].handle);