[Mesa-dev] [PATCH 2/4] ReadPixels: Force ALPHA to 1 while rebasing RGBA values for GL_RGB format
Brian Paul
brianp at vmware.com
Tue Jan 22 15:57:14 PST 2013
On 01/22/2013 03:22 PM, Carl Worth wrote:
> When performing a ReadPixels operation, we may be reading from a buffer that
> stores alpha values, but that is actually representing a buffer with no alpha
> channel. In this case, while rebasing the values, touch up all alpha values
> read to 1.0.
>
> This commit fixes the following piglit (sub) tests:
>
> ARB_texture_float/fbo-colormask-formats
> GL_RBG16F_ARB
> EXT_texture_snorm/fbo-colormask-formats
> GL_RGB16_SNORM
> GL_RGB8_SNORM
> GL_RGB_SNORM
>
> It likely improves the results of other tests as well, but a PASS remains
> elusive due to additional bugs.
> ---
> src/mesa/main/pack.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c
> index d6a97b3..e00ae63 100644
> --- a/src/mesa/main/pack.c
> +++ b/src/mesa/main/pack.c
> @@ -6022,6 +6022,11 @@ _mesa_rebase_rgba_float(GLuint n, GLfloat rgba[][4], GLenum baseFormat)
> rgba[i][BCOMP] = 0.0F;
> }
> break;
> + case GL_RGB:
> + for (i = 0; i< n; i++) {
> + rgba[i][ACOMP] = 1.0F;
> + }
> + break;
> default:
> /* no-op */
> ;
> @@ -6060,6 +6065,11 @@ _mesa_rebase_rgba_uint(GLuint n, GLuint rgba[][4], GLenum baseFormat)
> rgba[i][BCOMP] = 0;
> }
> break;
> + case GL_RGB:
> + for (i = 0; i< n; i++) {
> + rgba[i][ACOMP] = 1;
> + }
> + break;
> default:
> /* no-op */
> ;
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the mesa-dev
mailing list