[Mesa-dev] [PATCH v2 17/32] intel/blorp: Adjust the compressed copy rectangle before convert_to_single_slice
Jason Ekstrand
jason at jlekstrand.net
Fri Oct 12 18:46:47 UTC 2018
It doesn't matter for the actual copy rectangle and this makes the
asserts a bit nicer as we don't need to bother with the intratile
offsets because there aren't any yet.
---
src/intel/blorp/blorp_blit.c | 29 +++++++++++++++--------------
1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c
index 0ba08d95555..dd43b8643b9 100644
--- a/src/intel/blorp/blorp_blit.c
+++ b/src/intel/blorp/blorp_blit.c
@@ -2454,22 +2454,16 @@ blorp_surf_convert_to_uncompressed(const struct isl_device *isl_dev,
assert(fmtl->bw > 1 || fmtl->bh > 1);
- /* This is a compressed surface. We need to convert it to a single
- * slice (because compressed layouts don't perfectly match uncompressed
- * ones with the same bpb) and divide x, y, width, and height by the
- * block size.
- */
- blorp_surf_convert_to_single_slice(isl_dev, info);
+ /* This should be the first modification made to the surface */
+ assert(info->tile_x_sa == 0 && info->tile_y_sa == 0);
if (width && height) {
-#ifndef NDEBUG
- uint32_t right_edge_px = info->tile_x_sa + *x + *width;
- uint32_t bottom_edge_px = info->tile_y_sa + *y + *height;
- assert(*width % fmtl->bw == 0 ||
- right_edge_px == info->surf.logical_level0_px.width);
- assert(*height % fmtl->bh == 0 ||
- bottom_edge_px == info->surf.logical_level0_px.height);
-#endif
+ UNUSED const uint32_t level_width =
+ minify(info->surf.logical_level0_px.width, info->view.base_level);
+ UNUSED const uint32_t level_height =
+ minify(info->surf.logical_level0_px.height, info->view.base_level);
+ assert(*width % fmtl->bw == 0 || *x + *width == level_width);
+ assert(*height % fmtl->bh == 0 || *y + *height == level_height);
*width = DIV_ROUND_UP(*width, fmtl->bw);
*height = DIV_ROUND_UP(*height, fmtl->bh);
}
@@ -2481,6 +2475,13 @@ blorp_surf_convert_to_uncompressed(const struct isl_device *isl_dev,
*y /= fmtl->bh;
}
+ /* This is a compressed surface. We need to convert it to a single
+ * slice (because compressed layouts don't perfectly match uncompressed
+ * ones with the same bpb) and divide x, y, width, and height by the
+ * block size.
+ */
+ blorp_surf_convert_to_single_slice(isl_dev, info);
+
info->surf.logical_level0_px.width =
DIV_ROUND_UP(info->surf.logical_level0_px.width, fmtl->bw);
info->surf.logical_level0_px.height =
--
2.19.1
More information about the mesa-dev
mailing list