[Mesa-dev] [PATCH 2/2] mesa: expose EXT_texture_compression_bptc in GLES

Erik Faye-Lund erik.faye-lund at collabora.com
Tue Dec 4 20:29:26 UTC 2018


Nice :)

For the series:
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>

On Tue, 2018-12-04 at 14:57 -0500, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> tested by piglit.
> 
> v2: rebase
> 
> Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu> (v1)
> ---
>  docs/relnotes/19.0.0.html        |  1 +
>  src/mesa/main/extensions_table.h |  1 +
>  src/mesa/main/glformats.c        | 13 ++++++++++++-
>  src/mesa/main/texcompress.c      |  8 ++++++++
>  4 files changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/docs/relnotes/19.0.0.html b/docs/relnotes/19.0.0.html
> index 4a61420be1a..5a2e96e4eab 100644
> --- a/docs/relnotes/19.0.0.html
> +++ b/docs/relnotes/19.0.0.html
> @@ -33,20 +33,21 @@ Compatibility contexts may report a lower version
> depending on each driver.
>  <h2>SHA256 checksums</h2>
>  <pre>
>  TBD.
>  </pre>
>  
>  
>  <h2>New features</h2>
>  
>  <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>
>  </ul>
>  
>  <h2>Bug fixes</h2>
>  
>  <ul>
>  <li>TBD</li>
>  </ul>
> diff --git a/src/mesa/main/extensions_table.h
> b/src/mesa/main/extensions_table.h
> index a229f3af2b2..d6ab81ee689 100644
> --- a/src/mesa/main/extensions_table.h
> +++ b/src/mesa/main/extensions_table.h
> @@ -269,20 +269,21 @@ EXT(EXT_shadow_funcs                        ,
> ARB_shadow
>  EXT(EXT_stencil_two_side                    ,
> EXT_stencil_two_side                   , GLL,  x ,  x ,  x , 2001)
>  EXT(EXT_stencil_wrap                        ,
> dummy_true                             , GLL,  x ,  x ,  x , 2002)
>  EXT(EXT_subtexture                          ,
> dummy_true                             , GLL,  x ,  x ,  x , 1995)
>  EXT(EXT_tessellation_point_size             ,
> ARB_tessellation_shader                ,  x ,  x ,  x ,  31, 2013)
>  EXT(EXT_tessellation_shader                 ,
> ARB_tessellation_shader                ,  x ,  x ,  x ,  31, 2013)
>  EXT(EXT_texture                             ,
> dummy_true                             , GLL,  x ,  x ,  x , 1996)
>  EXT(EXT_texture3D                           ,
> dummy_true                             , GLL,  x ,  x ,  x , 1996)
>  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)
>  EXT(EXT_texture_compression_s3tc            ,
> EXT_texture_compression_s3tc           , GLL, GLC,  x , ES2, 2000)
>  EXT(EXT_texture_cube_map                    ,
> ARB_texture_cube_map                   , GLL,  x ,  x ,  x , 2001)
>  EXT(EXT_texture_cube_map_array              ,
> OES_texture_cube_map_array             ,  x ,  x ,  x ,  31, 2014)
>  EXT(EXT_texture_edge_clamp                  ,
> dummy_true                             , GLL,  x ,  x ,  x , 1997)
>  EXT(EXT_texture_env_add                     ,
> dummy_true                             , GLL,  x ,  x ,  x , 1999)
>  EXT(EXT_texture_env_combine                 ,
> dummy_true                             , GLL,  x ,  x ,  x , 2000)
>  EXT(EXT_texture_env_dot3                    ,
> EXT_texture_env_dot3                   , GLL,  x ,  x ,  x , 2000)
> diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
> index 77e0d94a71b..74e1d3761ec 100644
> --- a/src/mesa/main/glformats.c
> +++ b/src/mesa/main/glformats.c
> @@ -1381,21 +1381,22 @@ _mesa_is_compressed_format(const struct
> gl_context *ctx, GLenum format)
>     case MESA_FORMAT_LAYOUT_RGTC:
>        return _mesa_has_ARB_texture_compression_rgtc(ctx) ||
>               _mesa_has_EXT_texture_compression_rgtc(ctx);
>     case MESA_FORMAT_LAYOUT_LATC:
>        return _mesa_has_EXT_texture_compression_latc(ctx);
>     case MESA_FORMAT_LAYOUT_ETC1:
>        return _mesa_has_OES_compressed_ETC1_RGB8_texture(ctx);
>     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:
>        return GL_FALSE;
>     }
>  }
>  
>  /**
>   * Test if the given format represents an sRGB format.
>   * \param format the GL format (can be an internal format)
> @@ -2837,20 +2838,25 @@ _mesa_gles_error_check_format_and_type(const
> struct gl_context *ctx,
>           switch (internalFormat) {
>           case GL_RGBA:
>           case GL_RGBA8:
>           case GL_RGB5_A1:
>           case GL_RGBA4:
>              break;
>           case GL_SRGB8_ALPHA8_EXT:
>              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;
>           }
>           break;
>  
>        case GL_BYTE:
>           if (ctx->Version <= 20 || internalFormat != GL_RGBA8_SNORM)
>              return GL_INVALID_OPERATION;
>           break;
>  
> @@ -3041,20 +3047,25 @@ _mesa_gles_error_check_format_and_type(const
> struct gl_context *ctx,
>           case GL_RGB16F:
>           case GL_RGB32F:
>           case GL_R11F_G11F_B10F:
>           case GL_RGB9_E5:
>              if (ctx->Version <= 20)
>                 return GL_INVALID_OPERATION;
>              break;
>           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;
>           }
>           break;
>  
>        case GL_HALF_FLOAT_OES:
>           if (!_mesa_has_OES_texture_half_float(ctx) ||
> internalFormat != format)
>              return GL_INVALID_OPERATION;
>           break;
>  
> diff --git a/src/mesa/main/texcompress.c
> b/src/mesa/main/texcompress.c
> index dcdb81ec111..2406cc5cf7e 100644
> --- a/src/mesa/main/texcompress.c
> +++ b/src/mesa/main/texcompress.c
> @@ -320,20 +320,28 @@ _mesa_get_compressed_formats(struct gl_context
> *ctx, GLint *formats)
>      *     "New State
>      *
>      *         The queries for NUM_COMPRESSED_TEXTURE_FORMATS and
>      *         COMPRESSED_TEXTURE_FORMATS include ETC1_RGB8_OES."
>      */
>     if (_mesa_is_gles(ctx)
>         && ctx->Extensions.OES_compressed_ETC1_RGB8_texture) {
>        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)) {
>        formats[n++] = GL_COMPRESSED_RED_RGTC1_EXT;
>        formats[n++] = GL_COMPRESSED_SIGNED_RED_RGTC1_EXT;
>        formats[n++] = GL_COMPRESSED_RED_GREEN_RGTC2_EXT;
>        formats[n++] = GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;
>     }
>  
>     if (ctx->API == API_OPENGLES) {



More information about the mesa-dev mailing list