st/mesa: Respect GL_TEXTURE_SRGB_DECODE_EXT in GenerateMipmaps()
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 12 Jun 2019 02:20:58 +0000 (19:20 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 14 Jun 2019 20:13:46 +0000 (20:13 +0000)
Apparently, we're supposed to look at the texture object's built-in
sampler object's sRGB decode setting in order to decide whether to
decode/downsample/re-encode, or simply downsample as-is.  Previously,
we had just respected the pipe_resource's format.

Fixes SKQP's Skia_Unit_Tests.SRGBMipMaps test.

(This ports commit 337a808062c756b474ee80a9ac04b5a3dbbeb67e from i965
to st/mesa for Gallium drivers.)

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/state_tracker/st_gen_mipmap.c

index d6e9136384ed26f656facc49966314b0ca7090e6..b71a8ee57bb48eb8f0aa8d16dac1a9ba337bb16c 100644 (file)
@@ -125,6 +125,9 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
    else
       format = pt->format;
 
+   if (texObj->Sampler.sRGBDecode == GL_SKIP_DECODE_EXT)
+      format = util_format_linear(format);
+
    /* First see if the driver supports hardware mipmap generation,
     * if not then generate the mipmap by rendering/texturing.
     * If that fails, use the software fallback.