summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2019-04-17 21:11:50 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2019-04-18 21:13:45 +0300
commit25e99ccdde4a65f3f4c72ba85cebb18af815151a (patch)
treef5cea80a765cb03175468b1e5e64fd9abc169944
parente3647eb9e9200b4eac974eaa2fed5abf8e621b76 (diff)
lib/intel_batchbuffer: Make blitter asserts more useful
Use igt_assert_lt/lte for the blitter coord/stride asserts so that we can see what the offending value was. gcc likes to optimize the values away so gdb often doesn't help as much as one would like. v2: Remove the duplicate CHECK_RANGE() definitions (Chris) Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--lib/intel_batchbuffer.c52
1 files changed, 25 insertions, 27 deletions
diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index 712ce1a3..07de5cbb 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -370,6 +370,11 @@ intel_batchbuffer_copy_data(struct intel_batchbuffer *batch,
return intel_batchbuffer_subdata_offset(batch, subdata);
}
+#define CHECK_RANGE(x) do { \
+ igt_assert_lte(0, (x)); \
+ igt_assert_lt((x), (1 << 15)); \
+} while (0)
+
/**
* intel_blt_copy:
* @batch: batchbuffer object
@@ -417,17 +422,12 @@ intel_blt_copy(struct intel_batchbuffer *batch,
cmd_bits |= XY_SRC_COPY_BLT_DST_TILED;
}
-#define CHECK_RANGE(x) ((x) >= 0 && (x) < (1 << 15))
- igt_assert(CHECK_RANGE(src_x1) && CHECK_RANGE(src_y1) &&
- CHECK_RANGE(dst_x1) && CHECK_RANGE(dst_y1) &&
- CHECK_RANGE(width) && CHECK_RANGE(height) &&
- CHECK_RANGE(src_x1 + width) &&
- CHECK_RANGE(src_y1 + height) &&
- CHECK_RANGE(dst_x1 + width) &&
- CHECK_RANGE(dst_y1 + height) &&
- CHECK_RANGE(src_pitch) &&
- CHECK_RANGE(dst_pitch));
-#undef CHECK_RANGE
+ CHECK_RANGE(src_x1); CHECK_RANGE(src_y1);
+ CHECK_RANGE(dst_x1); CHECK_RANGE(dst_y1);
+ CHECK_RANGE(width); CHECK_RANGE(height);
+ CHECK_RANGE(src_x1 + width); CHECK_RANGE(src_y1 + height);
+ CHECK_RANGE(dst_x1 + width); CHECK_RANGE(dst_y1 + height);
+ CHECK_RANGE(src_pitch); CHECK_RANGE(dst_pitch);
br13_bits = 0;
switch (bpp) {
@@ -715,14 +715,12 @@ void igt_blitter_fast_copy__raw(int fd,
dword0 = fast_copy_dword0(src_tiling, dst_tiling);
dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp);
-#define CHECK_RANGE(x) ((x) >= 0 && (x) < (1 << 15))
- assert(CHECK_RANGE(src_x) && CHECK_RANGE(src_y) &&
- CHECK_RANGE(dst_x) && CHECK_RANGE(dst_y) &&
- CHECK_RANGE(width) && CHECK_RANGE(height) &&
- CHECK_RANGE(src_x + width) && CHECK_RANGE(src_y + height) &&
- CHECK_RANGE(dst_x + width) && CHECK_RANGE(dst_y + height) &&
- CHECK_RANGE(src_pitch) && CHECK_RANGE(dst_pitch));
-#undef CHECK_RANGE
+ CHECK_RANGE(src_x); CHECK_RANGE(src_y);
+ CHECK_RANGE(dst_x); CHECK_RANGE(dst_y);
+ CHECK_RANGE(width); CHECK_RANGE(height);
+ CHECK_RANGE(src_x + width); CHECK_RANGE(src_y + height);
+ CHECK_RANGE(dst_x + width); CHECK_RANGE(dst_y + height);
+ CHECK_RANGE(src_pitch); CHECK_RANGE(dst_pitch);
batch[i++] = dword0;
batch[i++] = dword1 | dst_pitch;
@@ -791,14 +789,12 @@ void igt_blitter_fast_copy(struct intel_batchbuffer *batch,
dword0 = fast_copy_dword0(src->tiling, dst->tiling);
dword1 = fast_copy_dword1(src->tiling, dst->tiling, dst->bpp);
-#define CHECK_RANGE(x) ((x) >= 0 && (x) < (1 << 15))
- assert(CHECK_RANGE(src_x) && CHECK_RANGE(src_y) &&
- CHECK_RANGE(dst_x) && CHECK_RANGE(dst_y) &&
- CHECK_RANGE(width) && CHECK_RANGE(height) &&
- CHECK_RANGE(src_x + width) && CHECK_RANGE(src_y + height) &&
- CHECK_RANGE(dst_x + width) && CHECK_RANGE(dst_y + height) &&
- CHECK_RANGE(src_pitch) && CHECK_RANGE(dst_pitch));
-#undef CHECK_RANGE
+ CHECK_RANGE(src_x); CHECK_RANGE(src_y);
+ CHECK_RANGE(dst_x); CHECK_RANGE(dst_y);
+ CHECK_RANGE(width); CHECK_RANGE(height);
+ CHECK_RANGE(src_x + width); CHECK_RANGE(src_y + height);
+ CHECK_RANGE(dst_x + width); CHECK_RANGE(dst_y + height);
+ CHECK_RANGE(src_pitch); CHECK_RANGE(dst_pitch);
BEGIN_BATCH(10, 2);
OUT_BATCH(dword0);
@@ -816,6 +812,8 @@ void igt_blitter_fast_copy(struct intel_batchbuffer *batch,
intel_batchbuffer_flush(batch);
}
+#undef CHECK_RANGE
+
/**
* igt_get_render_copyfunc:
* @devid: pci device id