[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