i965: Prepare blit engine for isl based miptrees
authorTopi Pohjolainen <topi.pohjolainen@intel.com>
Thu, 22 Jun 2017 18:04:29 +0000 (21:04 +0300)
committerTopi Pohjolainen <topi.pohjolainen@intel.com>
Thu, 20 Jul 2017 08:32:21 +0000 (11:32 +0300)
v2: Do not concern cpp, pitch and tiling which are already
    transitioned.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/mesa/drivers/dri/i965/intel_blit.c

index a6f7aee32f79132c26b0ed3842c4884b320ab8fa..4ffff76cc54a14423f3483da76c0f5c4ae363949 100644 (file)
@@ -328,11 +328,17 @@ intel_miptree_blit(struct brw_context *brw,
    intel_miptree_access_raw(brw, src_mt, src_level, src_slice, false);
    intel_miptree_access_raw(brw, dst_mt, dst_level, dst_slice, true);
 
-   if (src_flip)
-      src_y = minify(src_mt->physical_height0, src_level - src_mt->first_level) - src_y - height;
-
-   if (dst_flip)
-      dst_y = minify(dst_mt->physical_height0, dst_level - dst_mt->first_level) - dst_y - height;
+   if (src_flip) {
+      const unsigned h0 = src_mt->surf.size > 0 ?
+         src_mt->surf.phys_level0_sa.height : src_mt->physical_height0;
+      src_y = minify(h0, src_level - src_mt->first_level) - src_y - height;
+   }
+   if (dst_flip) {
+      const unsigned h0 = dst_mt->surf.size > 0 ?
+         dst_mt->surf.phys_level0_sa.height : dst_mt->physical_height0;
+      dst_y = minify(h0, dst_level - dst_mt->first_level) - dst_y - height;
+   }
 
    uint32_t src_image_x, src_image_y, dst_image_x, dst_image_y;
    intel_miptree_get_image_offset(src_mt, src_level, src_slice,