[Mesa-dev] [PATCH] meta: Always do GenerateMipmaps in linear colorspace.

Pohjolainen, Topi topi.pohjolainen at gmail.com
Thu Aug 25 14:21:20 UTC 2016


On Wed, Aug 24, 2016 at 10:04:58PM -0700, Kenneth Graunke wrote:
> On Friday, August 12, 2016 3:59:35 PM PDT Kenneth Graunke wrote:
> > When generating mipmaps for sRGB textures, force both decode and encode,
> > so the filtering is done in linear colorspace, regardless of settings.
> > 
> > Fixes a WebGL conformance test in Chrome:
> > https://www.khronos.org/registry/webgl/sdk/tests/conformance2/textures/misc/tex-srgb-mipmap.html?webglVersion=2
> > 
> > Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> > ---
> >  src/mesa/drivers/common/meta_generate_mipmap.c | 12 ++++++++++--
> >  1 file changed, 10 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/mesa/drivers/common/meta_generate_mipmap.c b/src/mesa/drivers/common/meta_generate_mipmap.c
> > index 9cebbf7..bbe9d6d 100644
> > --- a/src/mesa/drivers/common/meta_generate_mipmap.c
> > +++ b/src/mesa/drivers/common/meta_generate_mipmap.c
> > @@ -221,9 +221,17 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
> >                                  GL_LINEAR);
> >        _mesa_set_sampler_wrap(ctx, mipmap->samp_obj, GL_CLAMP_TO_EDGE,
> >                               GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE);
> > +   }
> > +
> > +   if (ctx->Extensions.EXT_texture_sRGB_decode) {
> > +      const struct gl_texture_image *baseImage =
> > +         _mesa_select_tex_image(texObj, target, texObj->BaseLevel);
> > +      const bool srgb =
> > +         _mesa_get_format_color_encoding(baseImage->TexFormat) == GL_SRGB;
> >  
> > -      /* We don't want to encode or decode sRGB values; treat them as linear. */
> > -      _mesa_set_sampler_srgb_decode(ctx, mipmap->samp_obj, GL_SKIP_DECODE_EXT);
> > +      _mesa_set_sampler_srgb_decode(ctx, mipmap->samp_obj,
> > +                                    srgb ? GL_DECODE_EXT : GL_SKIP_DECODE_EXT);
> > +      _mesa_set_framebuffer_srgb(ctx, srgb);
> >     }
> >  
> >     _mesa_bind_sampler(ctx, ctx->Texture.CurrentUnit, mipmap->samp_obj);
> > 
> 
> Still could use review on this.  Thanks!

Seems sane to me:

Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>


More information about the mesa-dev mailing list