summaryrefslogtreecommitdiff
path: root/src/mesa/main/image.c
diff options
context:
space:
mode:
authorBrian <brian@yutani.localnet.net>2007-03-09 11:43:53 -0700
committerBrian <brian@yutani.localnet.net>2007-03-09 11:43:53 -0700
commit2cf5fd48d1586f961910a14324a457854cb66221 (patch)
tree6b8690b1e3ac2b59369356d692214cc7d6a889c6 /src/mesa/main/image.c
parent9f44247acf62b91669f77974a4bbad687d58859e (diff)
parentf9f79c8d770e696249bd98c68b563f887562c974 (diff)
Merge branch 'origin' into glsl-compiler-1
Conflicts: src/mesa/main/context.c
Diffstat (limited to 'src/mesa/main/image.c')
-rw-r--r--src/mesa/main/image.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
index fc8e1f0f57..eb91ebb611 100644
--- a/src/mesa/main/image.c
+++ b/src/mesa/main/image.c
@@ -1182,15 +1182,24 @@ _mesa_pack_rgba_span_float(GLcontext *ctx, GLuint n, GLfloat rgba[][4],
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];
+ }
}
}
}