[Mesa-dev] [PATCH v2] mesa/formats: add more MESA_FORMAT_LAYOUTs

Nanley Chery nanleychery at gmail.com
Wed Aug 12 14:45:18 PDT 2015


My comment about making ASTC format detection simpler is a little
subjective. I'm planning to remove it from the final patch if it's
accepted. What this change allows in general is detecting compressed
formats belonging to a certain category of compressed formats.

Regards,
Nanley

On Tue, Aug 11, 2015 at 4:53 PM, Nanley Chery <nanleychery at gmail.com> wrote:

> From: Nanley Chery <nanley.g.chery at intel.com>
>
> Add the classes of compressed formats as layouts. This will make
> determining if
> a texture is an ASTC format simpler.
>
> v2. simplify layout name construction (Ilia).
>
> Cc: Jason Ekstrand <jason.ekstrand at intel.com>
> Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
> ---
>  src/mesa/main/format_info.py | 10 +---------
>  src/mesa/main/formats.c      |  6 ++++++
>  src/mesa/main/formats.h      |  6 ++++++
>  src/mesa/main/texcompress.c  | 30 ++++++------------------------
>  4 files changed, 19 insertions(+), 33 deletions(-)
>
> diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
> index 3bae57e..c249e73 100644
> --- a/src/mesa/main/format_info.py
> +++ b/src/mesa/main/format_info.py
> @@ -98,14 +98,6 @@ def get_gl_data_type(fmat):
>     else:
>        assert False
>
> -def get_mesa_layout(fmat):
> -   if fmat.layout == 'array':
> -      return 'MESA_FORMAT_LAYOUT_ARRAY'
> -   elif fmat.layout == 'packed':
> -      return 'MESA_FORMAT_LAYOUT_PACKED'
> -   else:
> -      return 'MESA_FORMAT_LAYOUT_OTHER'
> -
>  def get_channel_bits(fmat, chan_name):
>     if fmat.is_compressed():
>        # These values are pretty-much bogus, but OpenGL requires that we
> @@ -179,7 +171,7 @@ for fmat in formats:
>     print '   {'
>     print '      {0},'.format(fmat.name)
>     print '      "{0}",'.format(fmat.name)
> -   print '      {0},'.format(get_mesa_layout(fmat))
> +   print '      {0},'.format('MESA_FORMAT_LAYOUT_' + fmat.layout.upper())
>     print '      {0},'.format(get_gl_base_format(fmat))
>     print '      {0},'.format(get_gl_data_type(fmat))
>
> diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
> index 90fa75b..cb5ad21 100644
> --- a/src/mesa/main/formats.c
> +++ b/src/mesa/main/formats.c
> @@ -188,6 +188,12 @@ _mesa_get_format_max_bits(mesa_format format)
>   * The return value will be one of:
>   *    MESA_FORMAT_LAYOUT_ARRAY
>   *    MESA_FORMAT_LAYOUT_PACKED
> + *    MESA_FORMAT_LAYOUT_S3TC
> + *    MESA_FORMAT_LAYOUT_RGTC
> + *    MESA_FORMAT_LAYOUT_FXT1
> + *    MESA_FORMAT_LAYOUT_ETC1
> + *    MESA_FORMAT_LAYOUT_ETC2
> + *    MESA_FORMAT_LAYOUT_BPTC
>   *    MESA_FORMAT_LAYOUT_OTHER
>   */
>  extern enum mesa_format_layout
> diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
> index e08247e..2fdd9bf 100644
> --- a/src/mesa/main/formats.h
> +++ b/src/mesa/main/formats.h
> @@ -64,6 +64,12 @@ extern "C" {
>  enum mesa_format_layout {
>     MESA_FORMAT_LAYOUT_ARRAY,
>     MESA_FORMAT_LAYOUT_PACKED,
> +   MESA_FORMAT_LAYOUT_S3TC,
> +   MESA_FORMAT_LAYOUT_RGTC,
> +   MESA_FORMAT_LAYOUT_FXT1,
> +   MESA_FORMAT_LAYOUT_ETC1,
> +   MESA_FORMAT_LAYOUT_ETC2,
> +   MESA_FORMAT_LAYOUT_BPTC,
>     MESA_FORMAT_LAYOUT_OTHER,
>  };
>
> diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
> index 0fd1a36..edfb036 100644
> --- a/src/mesa/main/texcompress.c
> +++ b/src/mesa/main/texcompress.c
> @@ -586,34 +586,16 @@ _mesa_compressed_image_address(GLint col, GLint row,
> GLint img,
>  compressed_fetch_func
>  _mesa_get_compressed_fetch_func(mesa_format format)
>  {
> -   switch (format) {
> -   case MESA_FORMAT_RGB_DXT1:
> -   case MESA_FORMAT_RGBA_DXT1:
> -   case MESA_FORMAT_RGBA_DXT3:
> -   case MESA_FORMAT_RGBA_DXT5:
> -   case MESA_FORMAT_SRGB_DXT1:
> -   case MESA_FORMAT_SRGBA_DXT1:
> -   case MESA_FORMAT_SRGBA_DXT3:
> -   case MESA_FORMAT_SRGBA_DXT5:
> +   switch (_mesa_get_format_layout(format)) {
> +   case MESA_FORMAT_LAYOUT_S3TC:
>        return _mesa_get_dxt_fetch_func(format);
> -   case MESA_FORMAT_RGB_FXT1:
> -   case MESA_FORMAT_RGBA_FXT1:
> +   case MESA_FORMAT_LAYOUT_FXT1:
>        return _mesa_get_fxt_fetch_func(format);
> -   case MESA_FORMAT_R_RGTC1_UNORM:
> -   case MESA_FORMAT_L_LATC1_UNORM:
> -   case MESA_FORMAT_R_RGTC1_SNORM:
> -   case MESA_FORMAT_L_LATC1_SNORM:
> -   case MESA_FORMAT_RG_RGTC2_UNORM:
> -   case MESA_FORMAT_LA_LATC2_UNORM:
> -   case MESA_FORMAT_RG_RGTC2_SNORM:
> -   case MESA_FORMAT_LA_LATC2_SNORM:
> +   case MESA_FORMAT_LAYOUT_RGTC:
>        return _mesa_get_compressed_rgtc_func(format);
> -   case MESA_FORMAT_ETC1_RGB8:
> +   case MESA_FORMAT_LAYOUT_ETC1:
>        return _mesa_get_etc_fetch_func(format);
> -   case MESA_FORMAT_BPTC_RGBA_UNORM:
> -   case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:
> -   case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT:
> -   case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT:
> +   case MESA_FORMAT_LAYOUT_BPTC:
>        return _mesa_get_bptc_fetch_func(format);
>     default:
>        return NULL;
> --
> 2.5.0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150812/2b31bed9/attachment-0001.html>


More information about the mesa-dev mailing list