Brian Paul <[email protected]> writes:

> From: Brian Paul <[email protected]>
>
> 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 <[email protected]>

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.

Attachment: pgpmPkv67zOrW.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to