mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 23:18:20 +02:00
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.
This commit is contained in:
parent
79e2df63af
commit
02a579f2e7
2 changed files with 9 additions and 8 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue