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.pho...@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 <bri...@vmware.com>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to