mesa/main: do not allow EXT_texture_shared_exponent enums before gles3
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Thu, 15 Nov 2018 17:00:24 +0000 (18:00 +0100)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Mon, 3 Dec 2018 17:16:44 +0000 (18:16 +0100)
ctx->Extensions.EXT_texture_shared_exponent is set regardless of the
API that's used, so checking for those direcly will always allow the
enums from this extensions when they are supported by the driver.

We also need to make sure this is enabled on OpenGL ES 3. Because the
check is repeated, let's introduce a helper.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/main/context.h
src/mesa/main/glformats.c

index af81717d9bddf98c97924d1455b8cfc390d66e5f..7db3b94e0b61279de9f33f756b87614e5bfa0c07 100644 (file)
@@ -367,6 +367,12 @@ _mesa_has_rg_textures(const struct gl_context *ctx)
    return _mesa_has_ARB_texture_rg(ctx) || _mesa_is_gles3(ctx);
 }
 
+static inline bool
+_mesa_has_texture_shared_exponent(const struct gl_context *ctx)
+{
+   return _mesa_has_EXT_texture_shared_exponent(ctx) || _mesa_is_gles3(ctx);
+}
+
 /**
  * Checks if the context supports geometry shaders.
  */
index fb1135284d9a865e6f8df0f8f8d4a924a3dd6e36..319422c27ad63ff3b8bd7a77aa014d6a547b1a75 100644 (file)
@@ -1966,7 +1966,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
                return (ctx->API == API_OPENGLES2)
                   ? GL_NO_ERROR : GL_INVALID_ENUM;
             case GL_UNSIGNED_INT_5_9_9_9_REV:
-               return ctx->Extensions.EXT_texture_shared_exponent
+               return _mesa_has_texture_shared_exponent(ctx)
                   ? GL_NO_ERROR : GL_INVALID_ENUM;
             case GL_UNSIGNED_INT_10F_11F_11F_REV:
                return _mesa_has_packed_float(ctx)
@@ -2589,7 +2589,7 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
       }
    }
 
-   if (ctx->Extensions.EXT_texture_shared_exponent) {
+   if (_mesa_has_texture_shared_exponent(ctx)) {
       switch (internalFormat) {
       case GL_RGB9_E5_EXT:
          return GL_RGB;