ville.syrj...@linux.intel.com writes: > From: Ville Syrjälä <ville.syrj...@linux.intel.com> > > Gen2 doesn't support the A8 texture format. Currently the driver > substitutes it with I8, but that results in incorrect RGB values. > Use A8L8 instead. We end up wasting a bit of memory, but at least > we should get the correct results. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72819 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80050 > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38873 > Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com> > --- > src/mesa/drivers/dri/i915/i830_texstate.c | 2 -- > src/mesa/drivers/dri/i915/i915_context.c | 3 ++- > src/mesa/drivers/dri/i915/intel_tex_image.c | 22 ++++++++++++++++++++++ > 3 files changed, 24 insertions(+), 3 deletions(-) > > diff --git a/src/mesa/drivers/dri/i915/i830_texstate.c > b/src/mesa/drivers/dri/i915/i830_texstate.c > index 58d3356..b1414c7 100644 > --- a/src/mesa/drivers/dri/i915/i830_texstate.c > +++ b/src/mesa/drivers/dri/i915/i830_texstate.c > @@ -47,8 +47,6 @@ translate_texture_format(GLuint mesa_format) > return MAPSURF_8BIT | MT_8BIT_L8; > case MESA_FORMAT_I_UNORM8: > return MAPSURF_8BIT | MT_8BIT_I8; > - case MESA_FORMAT_A_UNORM8: > - return MAPSURF_8BIT | MT_8BIT_I8; /* Kludge! */ > case MESA_FORMAT_L8A8_UNORM: > return MAPSURF_16BIT | MT_16BIT_AY88; > case MESA_FORMAT_B5G6R5_UNORM: > diff --git a/src/mesa/drivers/dri/i915/i915_context.c > b/src/mesa/drivers/dri/i915/i915_context.c > index 7f43896..3fd571d 100644 > --- a/src/mesa/drivers/dri/i915/i915_context.c > +++ b/src/mesa/drivers/dri/i915/i915_context.c > @@ -109,7 +109,8 @@ intel_init_texture_formats(struct gl_context *ctx) > ctx->TextureFormatSupported[MESA_FORMAT_B5G5R5A1_UNORM] = true; > ctx->TextureFormatSupported[MESA_FORMAT_B5G6R5_UNORM] = true; > ctx->TextureFormatSupported[MESA_FORMAT_L_UNORM8] = true; > - ctx->TextureFormatSupported[MESA_FORMAT_A_UNORM8] = true; > + if (intel->gen == 3) > + ctx->TextureFormatSupported[MESA_FORMAT_A_UNORM8] = true; > ctx->TextureFormatSupported[MESA_FORMAT_I_UNORM8] = true; > ctx->TextureFormatSupported[MESA_FORMAT_L8A8_UNORM] = true; > > diff --git a/src/mesa/drivers/dri/i915/intel_tex_image.c > b/src/mesa/drivers/dri/i915/intel_tex_image.c > index 57674b9..be9a4ff 100644 > --- a/src/mesa/drivers/dri/i915/intel_tex_image.c > +++ b/src/mesa/drivers/dri/i915/intel_tex_image.c > @@ -14,6 +14,7 @@ > #include "main/texobj.h" > #include "main/teximage.h" > #include "main/texstore.h" > +#include "main/texformat.h" > > #include "intel_context.h" > #include "intel_mipmap_tree.h" > @@ -362,9 +363,30 @@ intel_image_target_texture_2d(struct gl_context *ctx, > GLenum target, > image->tile_x, image->tile_y); > } > > +static mesa_format intel_choose_tex_format(struct gl_context *ctx, > + GLenum target, > + GLint internalFormat, > + GLenum format, GLenum type) > +{ > + struct intel_context *intel = intel_context(ctx); > + > + switch (internalFormat) { > + case GL_ALPHA: > + case GL_ALPHA4: > + case GL_ALPHA8: > + /* no A8 on gen2 :( */ > + if (intel->gen == 2) > + return MESA_FORMAT_L8A8_UNORM; > + /* fall through */ > + default: > + return _mesa_choose_tex_format(ctx, target, internalFormat, format, > type); > + } > +}
Instead, I'd rather see _mesa_choose_tex_format just grow another case: RETURN_IF_SUPPORTED(MESA_FORMAT_L8A8_UNORM);
pgpOsvZTR2qMU.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev