[Mesa-dev] [PATCH] gallium/util: remove some block alignment assertions

Brian Paul brianp at vmware.com
Wed Oct 25 14:29:08 UTC 2017


On 10/24/2017 07:06 PM, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> These assertions were revisited a couple of times in the past, and they
> still weren't quite right.
> The problem I was seeing (with some other state tracker) was a copy between
> two 512x512 s3tc textures, but from mip level 0 to mip level 8. Therefore,
> the destination has only size 2x2 (not a full block), so the box width/height
> was only 2, causing the assertion to trigger for src alignment.
> As far as I can tell, such a copy is completely legal, and because a correct
> assertion would get ridiculously complicated just get rid of it for good.
> ---
>   src/gallium/auxiliary/util/u_surface.c | 8 --------
>   1 file changed, 8 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_surface.c b/src/gallium/auxiliary/util/u_surface.c
> index 5abf966..0a79a25 100644
> --- a/src/gallium/auxiliary/util/u_surface.c
> +++ b/src/gallium/auxiliary/util/u_surface.c
> @@ -324,16 +324,8 @@ util_resource_copy_region(struct pipe_context *pipe,
>      /* check that region boxes are block aligned */
>      assert(src_box.x % src_bw == 0);
>      assert(src_box.y % src_bh == 0);
> -   assert(src_box.width % src_bw == 0 ||
> -          src_box.x + src_box.width == u_minify(src->width0, src_level));
> -   assert(src_box.height % src_bh == 0 ||
> -          src_box.y + src_box.height == u_minify(src->height0, src_level));
>      assert(dst_box.x % dst_bw == 0);
>      assert(dst_box.y % dst_bh == 0);
> -   assert(dst_box.width % dst_bw == 0 ||
> -          dst_box.x + dst_box.width == u_minify(dst->width0, dst_level));
> -   assert(dst_box.height % dst_bh == 0 ||
> -          dst_box.y + dst_box.height == u_minify(dst->height0, dst_level));
>
>      /* check that region boxes are not out of bounds */
>      assert(src_box.x + src_box.width <= u_minify(src->width0, src_level));
>

Would one alternative be to put the assertions inside a conditional 
testing that the texture is at least 4x4?  That'd keep the checking in 
place for common cases.

Either way,
Reviewed-by: Brian Paul <brianp at vmware.com>



More information about the mesa-dev mailing list