diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2019-04-17 21:11:50 +0300 |
---|---|---|
committer | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2019-04-18 21:13:45 +0300 |
commit | 25e99ccdde4a65f3f4c72ba85cebb18af815151a (patch) | |
tree | f5cea80a765cb03175468b1e5e64fd9abc169944 /lib/intel_batchbuffer.c | |
parent | e3647eb9e9200b4eac974eaa2fed5abf8e621b76 (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>
Diffstat (limited to 'lib/intel_batchbuffer.c')
-rw-r--r-- | lib/intel_batchbuffer.c | 52 |
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 |