[Mesa-dev] [PATCH] gallium/util: don't use blocksize for minify for assertions
Brian Paul
brianp at vmware.com
Tue Jun 14 14:18:45 UTC 2016
On 06/14/2016 03:39 AM, Jose Fonseca wrote:
> On 14/06/16 02:35, sroland at vmware.com wrote:
>> From: Roland Scheidegger <sroland at vmware.com>
>>
>> The previous assertions required for texture sizes smaller than
>> block_size
>> that src_box.x + src_box.width still be block size.
>> (e.g. for a texture with width 3, and src_box.x = 0, src_box.width would
>> have to be 4 to not assert.)
>> This caused some assertions with some other state tracker.
>> It looks though like callers aren't expected to round up widths to
>> block sizes
>> (for sizes larger than block size the assertion would still have
>> verified it
>> wouldn't have been rounded up) so we simply shouldn't use a minify which
>> rounds up to block size.
>> (No piglit change with llvmpipe.)
>> ---
>> src/gallium/auxiliary/util/u_surface.c | 28
>> ++++++++--------------------
>> 1 file changed, 8 insertions(+), 20 deletions(-)
>>
>> diff --git a/src/gallium/auxiliary/util/u_surface.c
>> b/src/gallium/auxiliary/util/u_surface.c
>> index b9d2da0..8408aa8 100644
>> --- a/src/gallium/auxiliary/util/u_surface.c
>> +++ b/src/gallium/auxiliary/util/u_surface.c
>> @@ -238,14 +238,6 @@ util_fill_box(ubyte * dst,
>> }
>>
>>
>> -/** Mipmap level size computation, with minimum block size */
>> -static inline unsigned
>> -minify(unsigned value, unsigned levels, unsigned blocksize)
>> -{
>> - return MAX2(blocksize, value >> levels);
>> -}
>> -
>> -
>> /**
>> * Fallback function for pipe->resource_copy_region().
>> * We support copying between different formats (including compressed/
>> @@ -333,25 +325,21 @@ util_resource_copy_region(struct pipe_context
>> *pipe,
>> 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 == minify(src->width0, src_level,
>> src_bw));
>> + 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 == minify(src->height0,
>> src_level, src_bh));
>> + 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 == minify(dst->width0, dst_level,
>> dst_bw));
>> + 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 == minify(dst->height0,
>> dst_level, dst_bh));
>> + 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 <=
>> - minify(src->width0, src_level, src_bw));
>> - assert(src_box.y + src_box.height <=
>> - minify(src->height0, src_level, src_bh));
>> - assert(dst_box.x + dst_box.width <=
>> - minify(dst->width0, dst_level, dst_bw));
>> - assert(dst_box.y + dst_box.height <=
>> - minify(dst->height0, dst_level, dst_bh));
>> + assert(src_box.x + src_box.width <= u_minify(src->width0,
>> src_level));
>> + assert(src_box.y + src_box.height <= u_minify(src->height0,
>> src_level));
>> + assert(dst_box.x + dst_box.width <= u_minify(dst->width0,
>> dst_level));
>> + assert(dst_box.y + dst_box.height <= u_minify(dst->height0,
>> dst_level));
>>
>> /* check that total number of src, dest bytes match */
>> assert((src_box.width / src_bw) * (src_box.height / src_bh) *
>> src_bs ==
>>
>
> Thanks.
>
> Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
LGTM too. Thanks, Roland.
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the mesa-dev
mailing list