mesa/main: do not allow integer-texture enums before gles3
[mesa.git] / src / mesa / main / glformats.c
index 41e7393a46df72b785b517e0a085cd649df8cbf7..76f1f9a28b7239a087cac850cc427f342879941e 100644 (file)
@@ -1354,8 +1354,7 @@ _mesa_is_compressed_format(const struct gl_context *ctx, GLenum format)
    case GL_RGBA4_S3TC:
       return _mesa_has_S3_s3tc(ctx);
    case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
-      return ctx->API == API_OPENGL_COMPAT
-         && ctx->Extensions.ATI_texture_compression_3dc;
+      return _mesa_has_ATI_texture_compression_3dc(ctx);
    case GL_PALETTE4_RGB8_OES:
    case GL_PALETTE4_RGBA8_OES:
    case GL_PALETTE4_R5_G6_B5_OES:
@@ -1372,33 +1371,25 @@ _mesa_is_compressed_format(const struct gl_context *ctx, GLenum format)
    switch (_mesa_get_format_layout(m_format)) {
    case MESA_FORMAT_LAYOUT_S3TC:
       if (_mesa_get_format_color_encoding(m_format) == GL_LINEAR) {
-         /* Assume that the ANGLE flag will always be set if the
-          * EXT flag is set.
-          */
-         return ctx->Extensions.ANGLE_texture_compression_dxt;
+         return _mesa_has_EXT_texture_compression_s3tc(ctx);
       } else {
          return _mesa_has_EXT_texture_sRGB(ctx) &&
             _mesa_has_EXT_texture_compression_s3tc(ctx);
       }
    case MESA_FORMAT_LAYOUT_FXT1:
-      return _mesa_is_desktop_gl(ctx)
-         && ctx->Extensions.TDFX_texture_compression_FXT1;
+      return _mesa_has_3DFX_texture_compression_FXT1(ctx);
    case MESA_FORMAT_LAYOUT_RGTC:
-      return _mesa_is_desktop_gl(ctx)
-         && ctx->Extensions.ARB_texture_compression_rgtc;
+      return _mesa_has_ARB_texture_compression_rgtc(ctx);
    case MESA_FORMAT_LAYOUT_LATC:
-      return ctx->API == API_OPENGL_COMPAT
-         && ctx->Extensions.EXT_texture_compression_latc;
+      return _mesa_has_EXT_texture_compression_latc(ctx);
    case MESA_FORMAT_LAYOUT_ETC1:
-      return _mesa_is_gles(ctx)
-         && ctx->Extensions.OES_compressed_ETC1_RGB8_texture;
+      return _mesa_has_OES_compressed_ETC1_RGB8_texture(ctx);
    case MESA_FORMAT_LAYOUT_ETC2:
-      return _mesa_is_gles3(ctx) || ctx->Extensions.ARB_ES3_compatibility;
+      return _mesa_is_gles3(ctx) || _mesa_has_ARB_ES3_compatibility(ctx);
    case MESA_FORMAT_LAYOUT_BPTC:
-      return _mesa_is_desktop_gl(ctx) &&
-         ctx->Extensions.ARB_texture_compression_bptc;
+      return _mesa_has_ARB_texture_compression_bptc(ctx);
    case MESA_FORMAT_LAYOUT_ASTC:
-      return ctx->Extensions.KHR_texture_compression_astc_ldr;
+      return _mesa_has_KHR_texture_compression_astc_ldr(ctx);
    default:
       return GL_FALSE;
    }
@@ -1809,7 +1800,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
          break; /* OK */
       }
       if (format == GL_RGB_INTEGER_EXT &&
-          ctx->Extensions.ARB_texture_rgb10_a2ui) {
+          _mesa_has_texture_rgb10_a2ui(ctx)) {
          break; /* OK */
       }
       return GL_INVALID_OPERATION;
@@ -1824,7 +1815,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
          break; /* OK */
       }
       if ((format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT) &&
-          ctx->Extensions.ARB_texture_rgb10_a2ui) {
+          _mesa_has_texture_rgb10_a2ui(ctx)) {
          break; /* OK */
       }
       return GL_INVALID_OPERATION;
@@ -1838,7 +1829,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
          break; /* OK */
       }
       if ((format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT) &&
-          ctx->Extensions.ARB_texture_rgb10_a2ui) {
+          _mesa_has_texture_rgb10_a2ui(ctx)) {
          break; /* OK */
       }
       if (type == GL_UNSIGNED_INT_2_10_10_10_REV && format == GL_RGB &&
@@ -2096,7 +2087,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
             case GL_UNSIGNED_BYTE_2_3_3_REV:
             case GL_UNSIGNED_SHORT_5_6_5:
             case GL_UNSIGNED_SHORT_5_6_5_REV:
-               return ctx->Extensions.ARB_texture_rgb10_a2ui
+               return _mesa_has_texture_rgb10_a2ui(ctx)
                   ? GL_NO_ERROR : GL_INVALID_ENUM;
             default:
                return GL_INVALID_ENUM;
@@ -2136,7 +2127,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
             case GL_UNSIGNED_INT_8_8_8_8_REV:
             case GL_UNSIGNED_INT_10_10_10_2:
             case GL_UNSIGNED_INT_2_10_10_10_REV:
-               return ctx->Extensions.ARB_texture_rgb10_a2ui
+               return _mesa_has_texture_rgb10_a2ui(ctx)
                   ? GL_NO_ERROR : GL_INVALID_ENUM;
             default:
                return GL_INVALID_ENUM;
@@ -2151,7 +2142,7 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
             case GL_UNSIGNED_SHORT:
             case GL_INT:
             case GL_UNSIGNED_INT:
-               return ctx->Extensions.EXT_texture_integer
+               return _mesa_has_integer_textures(ctx)
                   ? GL_NO_ERROR : GL_INVALID_ENUM;
             default:
                return GL_INVALID_ENUM;
@@ -2330,7 +2321,8 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
       }
    }
 
-   if (ctx->Extensions.ARB_depth_texture) {
+   if (_mesa_has_ARB_depth_texture(ctx) || _mesa_has_OES_depth_texture(ctx) ||
+       ctx->API == API_OPENGL_CORE) {
       switch (internalFormat) {
       case GL_DEPTH_COMPONENT:
       case GL_DEPTH_COMPONENT16:
@@ -2345,7 +2337,8 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
       }
    }
 
-   if (ctx->Extensions.ARB_texture_stencil8) {
+   if (_mesa_has_ARB_texture_stencil8(ctx) ||
+       _mesa_has_OES_texture_stencil8(ctx)) {
       switch (internalFormat) {
       case GL_STENCIL_INDEX:
       case GL_STENCIL_INDEX1:
@@ -2382,9 +2375,9 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
             return base_compressed;
    }
 
-   if ((ctx->Extensions.KHR_texture_compression_astc_ldr &&
+   if ((_mesa_has_KHR_texture_compression_astc_ldr(ctx) &&
         is_astc_2d_format(internalFormat)) ||
-       (ctx->Extensions.OES_texture_compression_astc &&
+       (_mesa_has_OES_texture_compression_astc(ctx) &&
         is_astc_3d_format(internalFormat)))
         return GL_RGBA;
 
@@ -2508,14 +2501,14 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat)
       }
    }
 
-   if (ctx->Extensions.ARB_texture_rgb10_a2ui) {
+   if (_mesa_has_texture_rgb10_a2ui(ctx)) {
       switch (internalFormat) {
       case GL_RGB10_A2UI:
          return GL_RGBA;
       }
    }
 
-   if (ctx->Extensions.EXT_texture_integer) {
+   if (_mesa_has_integer_textures(ctx)) {
       switch (internalFormat) {
       case GL_ALPHA8UI_EXT:
       case GL_ALPHA16UI_EXT:
@@ -2808,7 +2801,7 @@ _mesa_gles_error_check_format_and_type(const struct gl_context *ctx,
    /* The GLES variant of EXT_texture_compression_s3tc is very vague and
     * doesn't list valid types. Just do exactly what the spec says.
     */
-   if (ctx->Extensions.EXT_texture_compression_s3tc &&
+   if (_mesa_has_EXT_texture_compression_s3tc(ctx) &&
        (internalFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT ||
         internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ||
         internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ||