mesa/formatquery: Added SRGB_DECODE_ARB <pname> query
authorAntia Puentes <apuentes@igalia.com>
Sat, 19 Dec 2015 18:17:39 +0000 (19:17 +0100)
committerEduardo Lima Mitev <elima@igalia.com>
Thu, 3 Mar 2016 14:14:07 +0000 (15:14 +0100)
From the ARB_internalformat_query2 specification:

   "- SRGB_DECODE_ARB: The support for toggling whether sRGB decode happens at
      sampling time (see EXT/ARB_texture_sRGB_decode) for the resource is
      returned in <params>.
      Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
      If the resource or operation is not supported, NONE is returned."

Reviewed-by: Dave Airlie <airlied@redhat.com>
src/mesa/main/formatquery.c

index 03ec11ae56f1c6f526df0d1350447e264f564e82..444995b64143fcf87ec20dbd993fe60538473413 100644 (file)
@@ -600,6 +600,7 @@ _mesa_query_internal_format_default(struct gl_context *ctx, GLenum target,
    case GL_AUTO_GENERATE_MIPMAP:
    case GL_SRGB_READ:
    case GL_SRGB_WRITE:
+   case GL_SRGB_DECODE_ARB:
       params[0] = GL_FULL_SUPPORT;
       break;
 
@@ -1131,7 +1132,15 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
       break;
 
    case GL_SRGB_DECODE_ARB:
-      /* @TODO */
+      /* Presence of EXT_texture_sRGB_decode was already verified */
+      if (!_mesa_has_EXT_texture_sRGB(ctx) ||
+          target == GL_RENDERBUFFER ||
+          !_mesa_is_srgb_format(internalformat)) {
+         goto end;
+      }
+
+      ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname,
+                                      buffer);
       break;
 
    case GL_FILTER: