[Mesa-dev] [PATCH] mesa: set clamp bit in glGetTexImage for GL_UNSIGNED_NORMALIZED

Brian Paul brian.e.paul at gmail.com
Thu Jan 26 06:40:07 PST 2012


On Tue, Jan 24, 2012 at 10:58 PM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> Color clamping should be enabled in glGetTexImage if texture dataType is
> GL_UNSIGNED_NORMALIZED and format is GL_LUMINANCE or GL_LUMINANCE_ALPHA
>
> Fixes 2 Intel oglconform test cases: pxconv-gettex and pxtrans-gettex
> https://bugs.freedesktop.org/show_bug.cgi?id=40864
>
> NOTE: This is a candidate for the 8.0 branch
>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
>  src/mesa/main/texgetimage.c |    7 ++++++-
>  1 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
> index 8c85c1e..f89b868 100644
> --- a/src/mesa/main/texgetimage.c
> +++ b/src/mesa/main/texgetimage.c
> @@ -415,7 +415,12 @@ get_tex_rgba(struct gl_context *ctx, GLuint dimensions,
>          transferOps |= IMAGE_CLAMP_BIT;
>       }
>    }
> -
> +   else if ((format == GL_LUMINANCE ||
> +            format == GL_LUMINANCE_ALPHA) &&
> +            dataType == GL_UNSIGNED_NORMALIZED) {
> +      transferOps |= IMAGE_CLAMP_BIT;
> +   }
> +
>    if (_mesa_is_format_compressed(texImage->TexFormat)) {
>       get_tex_rgba_compressed(ctx, dimensions, format, type,
>                               pixels, texImage, transferOps);
> --

This looks OK.  However, we need to add more comments here.  I had to
do some digging to recall why luminance and lum/alpha are special.
The reason is if the source image is RGB, the returned luminance is
R+G+B and we need to clamp the sum to [0,1].

Would you please add a comment about that?  Thanks.

-Brian


More information about the mesa-dev mailing list