[Mesa-dev] [PATCH] mesa: fix incorrect error for glCompressedSubTexImage
Brian Paul
brianp at vmware.com
Tue Sep 25 06:49:23 PDT 2012
On 09/24/2012 06:42 PM, Eric Anholt wrote:
> Brian Paul<brian.e.paul at gmail.com> writes:
>
>> From: Brian Paul<brianp at vmware.com>
>>
>> If a subtexture region isn't aligned to the compressed block size,
>> return GL_INVALID_OPERATION, not gl_INVALID_VALUE.
>>
>> NOTE: This is a candidate for the stable branches.
>> ---
>> src/mesa/main/teximage.c | 6 +++---
>> 1 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
>> index 08af668..c22e853 100644
>> --- a/src/mesa/main/teximage.c
>> +++ b/src/mesa/main/teximage.c
>> @@ -3574,13 +3574,13 @@ compressed_subtexture_error_check(struct gl_context *ctx, GLint dimensions,
>> get_compressed_block_size(format,&bw,&bh);
>>
>> if ((xoffset % bw != 0) || (yoffset % bh != 0))
>> - return GL_INVALID_VALUE;
>> + return GL_INVALID_OPERATION;
>>
>> if ((width % bw != 0)&& width != 2&& width != 1)
>> - return GL_INVALID_VALUE;
>> + return GL_INVALID_OPERATION;
>>
>> if ((height % bh != 0)&& height != 2&& height != 1)
>> - return GL_INVALID_VALUE;
>> + return GL_INVALID_OPERATION;
>
> Reviewed-by: Eric Anholt<eric at anholt.net>
>
> The conditions are pretty bogus, though. The s3tc text says:
>
> INVALID_OPERATION is generated by CompressedTexSubImage2D if
> TEXTURE_INTERNAL_FORMAT is COMPRESSED_RGB_S3TC_DXT1_EXT,
> COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or
> COMPRESSED_RGBA_S3TC_DXT5_EXT and any of the following apply:
>
> *<width> is not a multiple of four, and<width> plus<xoffset> is not
> equal to TEXTURE_WIDTH;
>
> *<height> is not a multiple of four, and<height> plus<yoffset> is
> not equal to TEXTURE_HEIGHT; or
>
> and the 3.1 core spec text says (section 3.8.3):
>
> These commands will result in an INVALID_OPERATION error if one of
> the following conditions occurs:
>
> • width is not a multiple of four, and width + xoffset is not equal
> to the value of TEXTURE_WIDTH.
>
> • height is not a multiple of four, and height + yoffset is not
> equal to the value of TEXTURE_HEIGHT.
>
> • xoffset or yoffset is not a multiple of four.
>
> Looks like this code wants to live in
> compressed_subtexture_error_check2(), which has some overlapping checks
> in it.
The follow-on patches consolidate all this texsubimage error checking
code.
-Brian
More information about the mesa-dev
mailing list