diff options
author | Brian Paul <[email protected]> | 2009-04-03 17:10:31 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2009-04-03 17:10:31 -0600 |
commit | 35d88e1ac2cd34d5cc62f521654d79f5b24fcdf8 (patch) | |
tree | ca61c928bdd4958d09c7510218471e320014f46e /src/mesa/main/texstore.c | |
parent | b7cb6650c1603cd9e6f26b32f5e0fae8377d59b8 (diff) |
mesa: clamp colors to [0,1] for glGetTexImage() when format is GL_LUMINANCE
For luminance, we add R+G+B and it seems we should always clamp in case.
Diffstat (limited to 'src/mesa/main/texstore.c')
-rw-r--r-- | src/mesa/main/texstore.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index c65b9a99d8c..28e9d5c3ecb 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -4115,9 +4115,11 @@ _mesa_get_teximage(GLcontext *ctx, GLenum target, GLint level, * Looks like we need clamp though when going from format * containing negative values to unsigned format. */ - if (!type_with_negative_values(type) && - (texImage->TexFormat->DataType == GL_FLOAT || - texImage->TexFormat->DataType == GL_SIGNED_NORMALIZED)) + if (format == GL_LUMINANCE || format == GL_LUMINANCE_ALPHA) + transferOps |= IMAGE_CLAMP_BIT; + else if (!type_with_negative_values(type) && + (texImage->TexFormat->DataType == GL_FLOAT || + texImage->TexFormat->DataType == GL_SIGNED_NORMALIZED)) transferOps |= IMAGE_CLAMP_BIT; for (col = 0; col < width; col++) { @@ -4144,7 +4146,7 @@ _mesa_get_teximage(GLcontext *ctx, GLenum target, GLint level, } _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba, format, type, dest, - &ctx->Pack, transferOps, GL_TRUE); + &ctx->Pack, transferOps, GL_FALSE); } /* format */ } /* row */ } /* img */ |