summaryrefslogtreecommitdiffstats
path: root/src/intel/blorp
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-08-31 12:58:54 -0700
committerJason Ekstrand <[email protected]>2016-09-12 19:42:57 -0700
commit6da968b651f7c3f3475f68c80756adce441754e1 (patch)
tree64a8c8ce18203076d8d75f8a5feabbfbdc405da3 /src/intel/blorp
parentec7e0d62c5fe5b17e833c7ab91d0b753f0d02918 (diff)
intel/blorp: Fix the early return condition in convert_to_single_slice
The convert_to_single_slice operation is *mostly* idempotent. The only non-repeatable thing it does is that, when it sets the intratile offset fields, it just overwrites them instead of doing a += operation. This is supposed to be ok because we have an early return at the top that should make it bail of the surface is already a single slice. Unfortunately, the if condition has been broken ever since it was first added in 96fa98c18. This commit fixes the condition and adds an assert to ensure we don't stomp any non-zero intratile offsets. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Topi Pohjolainen <[email protected]>
Diffstat (limited to 'src/intel/blorp')
-rw-r--r--src/intel/blorp/blorp_blit.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c
index 9108e5db4dd..0a276284674 100644
--- a/src/intel/blorp/blorp_blit.c
+++ b/src/intel/blorp/blorp_blit.c
@@ -1254,9 +1254,14 @@ surf_convert_to_single_slice(const struct isl_device *isl_dev,
/* Just bail if we have nothing to do. */
if (info->surf.dim == ISL_SURF_DIM_2D &&
info->view.base_level == 0 && info->view.base_array_layer == 0 &&
- info->surf.levels == 0 && info->surf.logical_level0_px.array_len == 0)
+ info->surf.levels == 1 && info->surf.logical_level0_px.array_len == 1)
return;
+ /* If this gets triggered then we've gotten here twice which. This
+ * shouldn't happen thanks to the above early return.
+ */
+ assert(info->tile_x_sa == 0 && info->tile_y_sa == 0);
+
uint32_t x_offset_sa, y_offset_sa;
isl_surf_get_image_offset_sa(&info->surf, info->view.base_level,
info->view.base_array_layer, 0,