summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2018-05-31 18:19:45 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2018-06-01 10:42:38 +0100
commit8a8f0271a71e2e0d2a2caa4d41f4ad1d9c89670e (patch)
treedb70dbfb4c3cb5f5881ff75d85a3ee3b00125cbf /tests
parent8baa33c9b335698a7e4265997d86ab13f88dc05e (diff)
igt/gem_tiled_blits: Show more errors
glk is failing gem_tiled_blits which is very odd as it doesn't use fencing and so the tiling is all internal to the GPU. From the small number of examples seen so far, it looks like just a single bit is being flipped. Let's dump some values to see if it there is a larger pattern here. Furthermore since gem_linear_blits is also showing bitflips on glk, we can rule out the impact of tiling altogether! It just becomes a question of which piece of hw is broken... References: https://bugs.freedesktop.org/show_bug.cgi?id=106608 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_linear_blits.c11
-rw-r--r--tests/gem_tiled_blits.c14
2 files changed, 15 insertions, 10 deletions
diff --git a/tests/gem_linear_blits.c b/tests/gem_linear_blits.c
index 8297416c..6afa4e9c 100644
--- a/tests/gem_linear_blits.c
+++ b/tests/gem_linear_blits.c
@@ -141,16 +141,19 @@ create_bo(int fd, uint32_t val)
static void
check_bo(int fd, uint32_t handle, uint32_t val)
{
+ int num_errors;
int i;
gem_read(fd, handle, 0, linear, sizeof(linear));
+
+ num_errors = 0;
for (i = 0; i < WIDTH*HEIGHT; i++) {
- igt_assert_f(linear[i] == val,
- "Expected 0x%08x, found 0x%08x "
- "at offset 0x%08x\n",
- val, linear[i], i * 4);
+ if (linear[i] != val && num_errors++ < 32)
+ igt_warn("[%08x] Expected 0x%08x, found 0x%08x (difference 0x%08x)\n",
+ i * 4, val, linear[i], val ^ linear[i]);
val++;
}
+ igt_assert_eq(num_errors, 0);
}
static void run_test(int fd, int count)
diff --git a/tests/gem_tiled_blits.c b/tests/gem_tiled_blits.c
index a81226a1..51c1b584 100644
--- a/tests/gem_tiled_blits.c
+++ b/tests/gem_tiled_blits.c
@@ -90,10 +90,11 @@ create_bo(uint32_t start_val)
}
static void
-check_bo(drm_intel_bo *bo, uint32_t start_val)
+check_bo(drm_intel_bo *bo, uint32_t val)
{
drm_intel_bo *linear_bo;
uint32_t *linear;
+ int num_errors;
int i;
linear_bo = drm_intel_bo_alloc(bufmgr, "linear dst", 1024 * 1024, 4096);
@@ -103,13 +104,14 @@ check_bo(drm_intel_bo *bo, uint32_t start_val)
do_or_die(drm_intel_bo_map(linear_bo, 0));
linear = linear_bo->virtual;
+ num_errors = 0;
for (i = 0; i < 1024 * 1024 / 4; i++) {
- igt_assert_f(linear[i] == start_val,
- "Expected 0x%08x, found 0x%08x "
- "at offset 0x%08x\n",
- start_val, linear[i], i * 4);
- start_val++;
+ if (linear[i] != val && num_errors++ < 32)
+ igt_warn("[%08x] Expected 0x%08x, found 0x%08x (difference 0x%08x)\n",
+ i * 4, val, linear[i], val ^ linear[i]);
+ val++;
}
+ igt_assert_eq(num_errors, 0);
drm_intel_bo_unmap(linear_bo);
drm_intel_bo_unreference(linear_bo);