mesa: expose EXT_texture_compression_bptc in GLES
authorMarek Olšák <marek.olsak@amd.com>
Mon, 6 Aug 2018 04:29:00 +0000 (00:29 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 4 Dec 2018 20:33:29 +0000 (15:33 -0500)
tested by piglit.

v2: rebase

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> (v1)
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
docs/relnotes/19.0.0.html
src/mesa/main/extensions_table.h
src/mesa/main/glformats.c
src/mesa/main/texcompress.c

index 4a61420be1acda585551f73592c615682fb823fd..5a2e96e4eab20b5b116c7be1ba6724c0f2cbcb06 100644 (file)
@@ -40,6 +40,7 @@ TBD.
 
 <ul>
 <li>GL_EXT_shader_implicit_conversions on all drivers (ES extension).</li>
+<li>GL_EXT_texture_compression_bptc on all GL 4.0 drivers (ES extension).</li>
 <li>GL_EXT_texture_compression_rgtc on all GL 3.0 drivers (ES extension).</li>
 <li>GL_EXT_texture_view on drivers supporting texture views (ES extension).</li>
 <li>GL_OES_texture_view on drivers supporting texture views (ES extension).</li>
index a229f3af2b2e24b7601354deb9cb381e0bd2e182..d6ab81ee689d3cfb20f10e33c82b23ff6985147e 100644 (file)
@@ -276,6 +276,7 @@ EXT(EXT_texture3D                           , dummy_true
 EXT(EXT_texture_array                       , EXT_texture_array                      , GLL, GLC,  x ,  x , 2006)
 EXT(EXT_texture_border_clamp                , ARB_texture_border_clamp               ,  x ,  x ,  x , ES2, 2014)
 EXT(EXT_texture_buffer                      , OES_texture_buffer                     ,  x ,  x ,  x ,  31, 2014)
+EXT(EXT_texture_compression_bptc            , ARB_texture_compression_bptc           ,  x ,  x ,  x ,  30, 2017)
 EXT(EXT_texture_compression_dxt1            , ANGLE_texture_compression_dxt          , GLL, GLC, ES1, ES2, 2004)
 EXT(EXT_texture_compression_latc            , EXT_texture_compression_latc           , GLL,  x ,  x ,  x , 2006)
 EXT(EXT_texture_compression_rgtc            , ARB_texture_compression_rgtc           , GLL, GLC,  x ,  30, 2004)
index a63ccc0e5baa94e1af7ab1e5dd9cacd0e5145645..3a91600973501e70f818289e7447c980eba6fa46 100644 (file)
@@ -1388,7 +1388,8 @@ _mesa_is_compressed_format(const struct gl_context *ctx, GLenum format)
    case MESA_FORMAT_LAYOUT_ETC2:
       return _mesa_is_gles3(ctx) || _mesa_has_ARB_ES3_compatibility(ctx);
    case MESA_FORMAT_LAYOUT_BPTC:
-      return _mesa_has_ARB_texture_compression_bptc(ctx);
+      return _mesa_has_ARB_texture_compression_bptc(ctx) ||
+             _mesa_has_EXT_texture_compression_bptc(ctx);
    case MESA_FORMAT_LAYOUT_ASTC:
       return _mesa_has_KHR_texture_compression_astc_ldr(ctx);
    default:
@@ -2846,6 +2847,11 @@ _mesa_gles_error_check_format_and_type(const struct gl_context *ctx,
             if (ctx->Version <= 20)
                return GL_INVALID_OPERATION;
             break;
+         case GL_COMPRESSED_RGBA_BPTC_UNORM:
+         case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:
+            if (!_mesa_has_EXT_texture_compression_bptc(ctx))
+               return GL_INVALID_OPERATION;
+            break;
          default:
             return GL_INVALID_OPERATION;
          }
@@ -3050,6 +3056,11 @@ _mesa_gles_error_check_format_and_type(const struct gl_context *ctx,
          case GL_RGB:
             if (_mesa_has_OES_texture_float(ctx) && internalFormat == format)
                break;
+         case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:
+         case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:
+            if (!_mesa_has_EXT_texture_compression_bptc(ctx))
+               return GL_INVALID_OPERATION;
+            break;
          default:
             return GL_INVALID_OPERATION;
          }
index dcdb81ec111110063977e529745d3d595e9b28fa..2406cc5cf7ef168b39c87b2bcbf4ee548a77250e 100644 (file)
@@ -327,6 +327,14 @@ _mesa_get_compressed_formats(struct gl_context *ctx, GLint *formats)
       formats[n++] = GL_ETC1_RGB8_OES;
    }
 
+   /* Required by EXT_texture_compression_bptc in GLES. */
+   if (_mesa_has_EXT_texture_compression_bptc(ctx)) {
+      formats[n++] = GL_COMPRESSED_RGBA_BPTC_UNORM;
+      formats[n++] = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM;
+      formats[n++] = GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT;
+      formats[n++] = GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT;
+   }
+
    /* Required by EXT_texture_compression_rgtc in GLES. */
    if (_mesa_is_gles3(ctx) &&
        _mesa_has_EXT_texture_compression_rgtc(ctx)) {