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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev