[Mesa-dev] [RFC v2 03/15] mesa: disable online compression for ASTC formats

Ian Romanick idr at freedesktop.org
Tue Jun 9 11:58:27 PDT 2015


On 06/01/2015 10:13 AM, Nanley Chery wrote:
> From: Nanley Chery <nanley.g.chery at intel.com>
> 
> Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
> ---
>  src/mesa/main/texcompress.c | 22 ++++++++++++++++++++++
>  src/mesa/main/teximage.c    | 28 ++++++++++++++++++++++++++++
>  2 files changed, 50 insertions(+)
> 
> diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
> index 0fd1a36..1654fc6 100644
> --- a/src/mesa/main/texcompress.c
> +++ b/src/mesa/main/texcompress.c
> @@ -229,6 +229,28 @@ _mesa_gl_compressed_format_base_format(GLenum format)
>   *        what GL_NUM_COMPRESSED_TEXTURE_FORMATS and
>   *        GL_COMPRESSED_TEXTURE_FORMATS return."
>   *
> + * The KHR_texture_compression_astc_hdr spec says:
> + *
> + *    "Interactions with OpenGL 4.2
> + *
> + *        OpenGL 4.2 supports the feature that compressed textures can be
> + *        compressed online, by passing the compressed texture format enum as
> + *        the internal format when uploading a texture using TexImage1D,
> + *        TexImage2D or TexImage3D (see Section 3.9.3, Texture Image
> + *        Specification, subsection Encoding of Special Internal Formats).
> + *
> + *        Due to the complexity of the ASTC compression algorithm, it is not
> + *        usually suitable for online use, and therefore ASTC support will be
> + *        limited to pre-compressed textures only. Where on-device compression
> + *        is required, a domain-specific limited compressor will typically
> + *        be used, and this is therefore not suitable for implementation in
> + *        the driver.
> + *
> + *        In particular, the ASTC format specifiers will not be added to
> + *        Table 3.14, and thus will not be accepted by the TexImage*D
> + *        functions, and will not be returned by the (already deprecated)
> + *        COMPRESSED_TEXTURE_FORMATS query."
> + *
>   * There is no formal spec for GL_ATI_texture_compression_3dc.  Since the
>   * formats added by this extension are luminance-alpha formats, it is
>   * reasonable to expect them to follow the same rules as
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index 7616fd7..9207580 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -1778,6 +1778,34 @@ compressedteximage_only_format(const struct gl_context *ctx, GLenum format)
>     case GL_PALETTE8_R5_G6_B5_OES:
>     case GL_PALETTE8_RGBA4_OES:
>     case GL_PALETTE8_RGB5_A1_OES:
> +   case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
> +   case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
> +   case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
>        return GL_TRUE;
>     default:
>        return GL_FALSE;

As a follow-up patch, could you modify this function to use bool, true,
and false instead of GLboolean, GL_TRUE, and GL_FALSE?



More information about the mesa-dev mailing list