On Fri, Oct 12, 2018 at 01:46:47PM -0500, Jason Ekstrand wrote: > 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.
Reviewed-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > --- > 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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev