[Mesa-dev] [PATCH] meta: Add pixel store/pack operations in decompress_texture_image
Brian Paul
brianp at vmware.com
Mon Feb 13 11:01:07 PST 2012
On 02/13/2012 11:33 AM, Anuj Phogat wrote:
> This patch adds the pixel store operations in decompress_texture_image().
> decompress_texture_image() is used in glGetTexImage() for compressed
> textures with unsigned, normalized values.
>
> It also fixes the failures in intel oglconform pxstore-gettex due to
> following sub test cases:
>
> - Test all mipmaps with byte swapping enabled
> - Test all small mipmaps with all allowable alignment values
> - Test subimage packing for all mipmap levels
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40864
>
> Note: This is a candidate for stable branches
>
> Signed-off-by: Anuj Phogat<anuj.phogat at gmail.com>
> ---
> Please ignore my prvious email. I sent the wrong patch by mistake.
> This is an updated patch as per Brian's comments.
>
> src/mesa/drivers/common/meta.c | 8 +++-----
> 1 files changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index 0cf1028..f3f5d85 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -3244,7 +3244,7 @@ decompress_texture_image(struct gl_context *ctx,
> struct gl_texture_image *texImage,
> GLuint slice,
> GLenum destFormat, GLenum destType,
> - GLvoid *dest, GLint destRowLength)
> + GLvoid *dest)
> {
> struct decompress_state *decompress =&ctx->Meta->Decompress;
> struct gl_texture_object *texObj = texImage->TexObject;
> @@ -3274,7 +3274,7 @@ decompress_texture_image(struct gl_context *ctx,
> fboDrawSave = ctx->DrawBuffer->Name;
> fboReadSave = ctx->ReadBuffer->Name;
>
> - _mesa_meta_begin(ctx, MESA_META_ALL);
> + _mesa_meta_begin(ctx, MESA_META_ALL&& ~MESA_META_PIXEL_STORE);
That should be a bitwise &.
>
> /* Create/bind FBO/renderbuffer */
> if (decompress->FBO == 0) {
> @@ -3409,7 +3409,6 @@ decompress_texture_image(struct gl_context *ctx,
> _mesa_PixelTransferf(GL_BLUE_SCALE, 0.0f);
> }
>
> - ctx->Pack.RowLength = destRowLength;
> _mesa_ReadPixels(0, 0, width, height, destFormat, destType, dest);
> }
>
> @@ -3450,8 +3449,7 @@ _mesa_meta_GetTexImage(struct gl_context *ctx,
> const GLuint slice = 0; /* only 2D compressed textures for now */
> /* Need to unlock the texture here to prevent deadlock... */
> _mesa_unlock_texture(ctx, texObj);
> - decompress_texture_image(ctx, texImage, slice, format, type, pixels,
> - ctx->Pack.RowLength);
> + decompress_texture_image(ctx, texImage, slice, format, type, pixels);
> /* ... and relock it */
> _mesa_lock_texture(ctx, texObj);
> }
Other than the above, Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the mesa-dev
mailing list