[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