diff options
author | Anuj Phogat <[email protected]> | 2012-02-10 16:27:19 -0800 |
---|---|---|
committer | Anuj Phogat <[email protected]> | 2012-02-13 11:07:48 -0800 |
commit | 40427025916e003cfd380c2e30df78ad2bc8fe10 (patch) | |
tree | 4592f742b26c980e29901745d8250ec8ca6d230b /src/mesa | |
parent | df1cd55ebf362948788c04d2fa7da55c80991605 (diff) |
meta: Add pixel store/pack operations in decompress_texture_image
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 <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | 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 0cf1028c49a..8f5b0360966 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); /* 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); } |