summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Scheidegger <sroland@vmware.com>2009-03-28 01:19:49 +0100
committerRoland Scheidegger <sroland@vmware.com>2009-03-28 02:06:40 +0100
commit02a579f2e7abc832dd46956048d1116f7dc3dd92 (patch)
treeae80b9840e9097b6fab307736a541537efdf38d4
parent79e2df63af4d231a1223887e79a819b3baac9a6c (diff)
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.
-rw-r--r--src/mesa/main/texformat.c1
-rw-r--r--src/mesa/main/texstore.c16
2 files changed, 9 insertions, 8 deletions
diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index ee531c45c6..0d60e5ebd3 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 7e7e0ac07a..a94df532c6 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;