Mesa (master): mesa: fix a glGetTexImage issue with base-converted texture formats

Roland Scheidegger sroland at kemper.freedesktop.org
Sat Mar 28 01:12:07 UTC 2009


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

Author: Roland Scheidegger <sroland at vmware.com>
Date:   Sat Mar 28 01:19:49 2009 +0100

mesa: fix a glGetTexImage issue with base-converted texture formats

need to respect the user-supplied base format, not the one derived from
the texture format actually used.

---

 src/mesa/main/texformat.c |    1 +
 src/mesa/main/texstore.c  |   16 ++++++++--------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index ee531c4..0d60e5e 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -382,6 +382,7 @@ const struct gl_texture_format _mesa_texformat_sl8 = {
    store_texel_sl8			/* StoreTexel */
 };
 
+/* Note: this format name looks like a misnomer, make it sal8? */
 const struct gl_texture_format _mesa_texformat_sla8 = {
    MESA_FORMAT_SLA8,			/* MesaFormat */
    GL_LUMINANCE_ALPHA,			/* BaseFormat */
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 7e7e0ac..a94df53 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -4078,18 +4078,18 @@ _mesa_get_teximage(GLcontext *ctx, GLenum target, GLint level,
 
                for (col = 0; col < width; col++) {
                   (*texImage->FetchTexelf)(texImage, col, row, img, rgba[col]);
-                  if (texImage->TexFormat->BaseFormat == GL_LUMINANCE) {
+                  if (texImage->_BaseFormat == GL_LUMINANCE) {
                      rgba[col][RCOMP] = linear_to_nonlinear(rgba[col][RCOMP]);
                      rgba[col][GCOMP] = 0.0;
                      rgba[col][BCOMP] = 0.0;
                   }
-                  else if (texImage->TexFormat->BaseFormat == GL_LUMINANCE_ALPHA) {
+                  else if (texImage->_BaseFormat == GL_LUMINANCE_ALPHA) {
                      rgba[col][RCOMP] = linear_to_nonlinear(rgba[col][RCOMP]);
                      rgba[col][GCOMP] = 0.0;
                      rgba[col][BCOMP] = 0.0;
                   }
-                  else if (texImage->TexFormat->BaseFormat == GL_RGB ||
-                     texImage->TexFormat->BaseFormat == GL_RGBA) {
+                  else if (texImage->_BaseFormat == GL_RGB ||
+                     texImage->_BaseFormat == GL_RGBA) {
                      rgba[col][RCOMP] = linear_to_nonlinear(rgba[col][RCOMP]);
                      rgba[col][GCOMP] = linear_to_nonlinear(rgba[col][GCOMP]);
                      rgba[col][BCOMP] = linear_to_nonlinear(rgba[col][BCOMP]);
@@ -4117,21 +4117,21 @@ _mesa_get_teximage(GLcontext *ctx, GLenum target, GLint level,
 
                for (col = 0; col < width; col++) {
                   (*texImage->FetchTexelf)(texImage, col, row, img, rgba[col]);
-                  if (texImage->TexFormat->BaseFormat == GL_ALPHA) {
+                  if (texImage->_BaseFormat == GL_ALPHA) {
                      rgba[col][RCOMP] = 0.0;
                      rgba[col][GCOMP] = 0.0;
                      rgba[col][BCOMP] = 0.0;
                   }
-                  else if (texImage->TexFormat->BaseFormat == GL_LUMINANCE) {
+                  else if (texImage->_BaseFormat == GL_LUMINANCE) {
                      rgba[col][GCOMP] = 0.0;
                      rgba[col][BCOMP] = 0.0;
                      rgba[col][ACOMP] = 1.0;
                   }
-                  else if (texImage->TexFormat->BaseFormat == GL_LUMINANCE_ALPHA) {
+                  else if (texImage->_BaseFormat == GL_LUMINANCE_ALPHA) {
                      rgba[col][GCOMP] = 0.0;
                      rgba[col][BCOMP] = 0.0;
                   }
-                  else if (texImage->TexFormat->BaseFormat == GL_INTENSITY) {
+                  else if (texImage->_BaseFormat == GL_INTENSITY) {
                      rgba[col][GCOMP] = 0.0;
                      rgba[col][BCOMP] = 0.0;
                      rgba[col][ACOMP] = 1.0;




More information about the mesa-commit mailing list