On Mon, Jan 17, 2011 at 3:44 PM, Benjamin Franzke <benjaminfran...@googlemail.com> wrote: > internalFormat=GL_BGRA is only allowed with gles1/2 > and GL_EXT_texture_format_BGRA8888 enabled. > --- > src/mesa/main/texformat.c | 4 ++++ > src/mesa/main/teximage.c | 9 +++++++++ > src/mesa/main/texparam.c | 7 +++++-- > src/mesa/main/texstate.c | 1 + > 4 files changed, 19 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c > index 146b2b3..3fb4530 100644 > --- a/src/mesa/main/texformat.c > +++ b/src/mesa/main/texformat.c > @@ -94,6 +94,10 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint > internalFormat, > RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444); > break; > > + case GL_BGRA: > + RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888); > + break; > + > /* deep RGBA formats */ > case GL_RGB10_A2: > RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB2101010); > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c > index 47d5093..7ee62b0 100644 > --- a/src/mesa/main/teximage.c > +++ b/src/mesa/main/teximage.c > @@ -183,6 +183,15 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint > internalFormat ) > ; /* fallthrough */ > } > > + if (ctx->Extensions.EXT_texture_format_BGRA8888) { > + switch (internalFormat) { > + case GL_BGRA_EXT: > + return GL_BGRA;
This should be return GL_RGBA. For base formats, we don't distinguish between RGBA and BGRA; we always use the former. > + default: > + ; /* fallthrough */ > + } > + } > + > if (ctx->Extensions.EXT_paletted_texture) { > switch (internalFormat) { > case GL_COLOR_INDEX: > diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c > index d2b8b5c..190a14d 100644 > --- a/src/mesa/main/texparam.c > +++ b/src/mesa/main/texparam.c > @@ -885,7 +885,9 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level, > } > /* FALLTHROUGH */ > case GL_TEXTURE_BLUE_SIZE: > - if (img->_BaseFormat == GL_RGB || img->_BaseFormat == GL_RGBA) > + if (img->_BaseFormat == GL_RGB || > + img->_BaseFormat == GL_RGBA || > + img->_BaseFormat == GL_BGRA) img->_BaseFormat should never be GL_BGRA. > *params = _mesa_get_format_bits(texFormat, pname); > else > *params = 0; > @@ -893,7 +895,8 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level, > case GL_TEXTURE_ALPHA_SIZE: > if (img->_BaseFormat == GL_ALPHA || > img->_BaseFormat == GL_LUMINANCE_ALPHA || > - img->_BaseFormat == GL_RGBA) > + img->_BaseFormat == GL_RGBA || > + img->_BaseFormat == GL_BGRA) Same thing here. > *params = _mesa_get_format_bits(texFormat, pname); > else > *params = 0; > diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c > index f4d7718..e8315a1 100644 > --- a/src/mesa/main/texstate.c > +++ b/src/mesa/main/texstate.c > @@ -176,6 +176,7 @@ calculate_derived_texenv( struct gl_tex_env_combine_state > *state, > case GL_LUMINANCE_ALPHA: > case GL_INTENSITY: > case GL_RGBA: > + case GL_BGRA: Remove that case too. > break; > > case GL_LUMINANCE: > -- Before we commit this stuff can you develop a piglit test to test it? -Brian _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev