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