Mesa (master): st/mesa: remove some old GetTexImage() code

Brian Paul brianp at kemper.freedesktop.org
Thu Sep 29 08:20:19 PDT 2011


Module: Mesa
Branch: master
Commit: 1a867385d56022e904ef0235cbed545057fcb998
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a867385d56022e904ef0235cbed545057fcb998

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Sep 29 09:18:20 2011 -0600

st/mesa: remove some old GetTexImage() code

We can use the core Mesa code for glGetTexImage() since it handles the
image mapping/unmapping now.  We'll keep the decompress_with_blit() path
in the hope that it's faster than core Mesa's software decompression code.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=41312

---

 src/mesa/state_tracker/st_cb_texture.c |   36 ++++---------------------------
 1 files changed, 5 insertions(+), 31 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index 8df753f..260df09 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -922,8 +922,7 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
 
 
 /**
- * Need to map texture image into memory before copying image data,
- * then unmap it.
+ * Called via ctx->Driver.GetTexImage()
  */
 static void
 st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level,
@@ -931,46 +930,21 @@ st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level,
                struct gl_texture_object *texObj,
                struct gl_texture_image *texImage)
 {
-   struct st_context *st = st_context(ctx);
    struct st_texture_image *stImage = st_texture_image(texImage);
-   const GLuint dstImageStride =
-      _mesa_image_image_stride(&ctx->Pack, texImage->Width, texImage->Height,
-                               format, type);
-   GLuint depth, i;
-   GLubyte *dest;
 
    if (stImage->pt && util_format_is_s3tc(stImage->pt->format)) {
       /* Need to decompress the texture.
-       * We'll do this by rendering a textured quad.
+       * We'll do this by rendering a textured quad (which is hopefully
+       * faster than using the fallback code in texcompress.c.
        * Note that we only expect RGBA formats (no Z/depth formats).
        */
       decompress_with_blit(ctx, target, level, format, type, pixels,
                            texObj, texImage);
-      return;
    }
-
-   depth = texImage->Depth;
-   texImage->Depth = 1;
-
-   dest = (GLubyte *) pixels;
-
-   for (i = 0; i < depth; i++) {
-      _mesa_get_teximage(ctx, target, level, format, type, dest,
+   else {
+      _mesa_get_teximage(ctx, target, level, format, type, pixels,
 			 texObj, texImage);
-
-      if (stImage->pt && i + 1 < depth) {
-         /* unmap this slice */
-	 st_texture_image_unmap(st, stImage);
-         /* map next slice of 3D texture */
-	 texImage->Data = st_texture_image_map(st, stImage, i + 1,
-                                               PIPE_TRANSFER_READ, 0, 0,
-                                               stImage->base.Width,
-                                               stImage->base.Height);
-	 dest += dstImageStride;
-      }
    }
-
-   texImage->Depth = depth;
 }
 
 



More information about the mesa-commit mailing list