mesa: Branch 'master'

Brian Paul brianp at kemper.freedesktop.org
Fri Mar 9 16:13:55 UTC 2007


 src/mesa/main/image.c    |   19 ++++++++++++++-----
 src/mesa/main/mtypes.h   |    1 +
 src/mesa/main/texstore.c |    2 +-
 3 files changed, 16 insertions(+), 6 deletions(-)

New commits:
diff-tree f9f79c8d770e696249bd98c68b563f887562c974 (from 4d9901a1cab8e0d55b1b2309cf3ffec235e53149)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Mar 9 09:08:41 2007 -0700

    New IMAGE_RED_TO_LUMINANCE flag passed to _mesa_pack_rgba_span_float() to fix glGetTexImage(GL_LUMINANCE) bug #10232.

diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
index fc8e1f0..eb91ebb 100644
--- a/src/mesa/main/image.c
+++ b/src/mesa/main/image.c
@@ -1182,15 +1182,24 @@ _mesa_pack_rgba_span_float(GLcontext *ct
 
    if (dstFormat == GL_LUMINANCE || dstFormat == GL_LUMINANCE_ALPHA) {
       /* compute luminance values */
-      if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) {
+      if (transferOps & IMAGE_RED_TO_LUMINANCE) {
+         /* Luminance = Red (glGetTexImage) */
          for (i = 0; i < n; i++) {
-            GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
-            luminance[i] = CLAMP(sum, 0.0F, 1.0F);
+            luminance[i] = rgba[i][RCOMP];
          }
       }
       else {
-         for (i = 0; i < n; i++) {
-            luminance[i] = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
+         /* Luminance = Red + Green + Blue (glReadPixels) */
+         if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) {
+            for (i = 0; i < n; i++) {
+               GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
+               luminance[i] = CLAMP(sum, 0.0F, 1.0F);
+            }
+         }
+         else {
+            for (i = 0; i < n; i++) {
+               luminance[i] = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
+            }
          }
       }
    }
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 422d176..7caa1f8 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2540,6 +2540,7 @@ struct matrix_stack
 #define IMAGE_HISTOGRAM_BIT                       0x200
 #define IMAGE_MIN_MAX_BIT                         0x400
 #define IMAGE_CLAMP_BIT                           0x800 /* extra */
+#define IMAGE_RED_TO_LUMINANCE                    0x1000
 
 
 /** Pixel Transfer ops up to convolution */
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 87f8fa7..994fb16 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -3611,7 +3611,7 @@ _mesa_get_teximage(GLcontext *ctx, GLenu
                }
                _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba,
                                           format, type, dest,
-                                          &ctx->Pack, 0x0 /*image xfer ops*/);
+                                          &ctx->Pack, IMAGE_RED_TO_LUMINANCE);
             } /* format */
          } /* row */
       } /* img */



More information about the mesa-commit mailing list