<div dir="ltr">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.<div><br></div><div>Regards,</div><div>Nanley</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 11, 2015 at 4:53 PM, Nanley Chery <span dir="ltr"><<a href="mailto:nanleychery@gmail.com" target="_blank">nanleychery@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">From: Nanley Chery <<a href="mailto:nanley.g.chery@intel.com">nanley.g.chery@intel.com</a>><br>
<br>
Add the classes of compressed formats as layouts. This will make determining if<br>
a texture is an ASTC format simpler.<br>
<br>
</span>v2. simplify layout name construction (Ilia).<br>
<span class=""><br>
Cc: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>><br>
Signed-off-by: Nanley Chery <<a href="mailto:nanley.g.chery@intel.com">nanley.g.chery@intel.com</a>><br>
---<br>
</span> src/mesa/main/format_info.py | 10 +---------<br>
<span class=""> src/mesa/main/formats.c      |  6 ++++++<br>
 src/mesa/main/formats.h      |  6 ++++++<br>
 src/mesa/main/texcompress.c  | 30 ++++++------------------------<br>
</span> 4 files changed, 19 insertions(+), 33 deletions(-)<br>
<br>
diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py<br>
index 3bae57e..c249e73 100644<br>
--- a/src/mesa/main/format_info.py<br>
+++ b/src/mesa/main/format_info.py<br>
@@ -98,14 +98,6 @@ def get_gl_data_type(fmat):<br>
    else:<br>
       assert False<br>
<br>
-def get_mesa_layout(fmat):<br>
-   if fmat.layout == 'array':<br>
-      return 'MESA_FORMAT_LAYOUT_ARRAY'<br>
-   elif fmat.layout == 'packed':<br>
-      return 'MESA_FORMAT_LAYOUT_PACKED'<br>
-   else:<br>
-      return 'MESA_FORMAT_LAYOUT_OTHER'<br>
-<br>
<span class=""> def get_channel_bits(fmat, chan_name):<br>
    if fmat.is_compressed():<br>
</span>       # These values are pretty-much bogus, but OpenGL requires that we<br>
@@ -179,7 +171,7 @@ for fmat in formats:<br>
    print '   {'<br>
    print '      {0},'.format(<a href="http://fmat.name" rel="noreferrer" target="_blank">fmat.name</a>)<br>
    print '      "{0}",'.format(<a href="http://fmat.name" rel="noreferrer" target="_blank">fmat.name</a>)<br>
-   print '      {0},'.format(get_mesa_layout(fmat))<br>
+   print '      {0},'.format('MESA_FORMAT_LAYOUT_' + fmat.layout.upper())<br>
    print '      {0},'.format(get_gl_base_format(fmat))<br>
    print '      {0},'.format(get_gl_data_type(fmat))<br>
<div class="HOEnZb"><div class="h5"><br>
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c<br>
index 90fa75b..cb5ad21 100644<br>
--- a/src/mesa/main/formats.c<br>
+++ b/src/mesa/main/formats.c<br>
@@ -188,6 +188,12 @@ _mesa_get_format_max_bits(mesa_format format)<br>
  * The return value will be one of:<br>
  *    MESA_FORMAT_LAYOUT_ARRAY<br>
  *    MESA_FORMAT_LAYOUT_PACKED<br>
+ *    MESA_FORMAT_LAYOUT_S3TC<br>
+ *    MESA_FORMAT_LAYOUT_RGTC<br>
+ *    MESA_FORMAT_LAYOUT_FXT1<br>
+ *    MESA_FORMAT_LAYOUT_ETC1<br>
+ *    MESA_FORMAT_LAYOUT_ETC2<br>
+ *    MESA_FORMAT_LAYOUT_BPTC<br>
  *    MESA_FORMAT_LAYOUT_OTHER<br>
  */<br>
 extern enum mesa_format_layout<br>
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h<br>
index e08247e..2fdd9bf 100644<br>
--- a/src/mesa/main/formats.h<br>
+++ b/src/mesa/main/formats.h<br>
@@ -64,6 +64,12 @@ extern "C" {<br>
 enum mesa_format_layout {<br>
    MESA_FORMAT_LAYOUT_ARRAY,<br>
    MESA_FORMAT_LAYOUT_PACKED,<br>
+   MESA_FORMAT_LAYOUT_S3TC,<br>
+   MESA_FORMAT_LAYOUT_RGTC,<br>
+   MESA_FORMAT_LAYOUT_FXT1,<br>
+   MESA_FORMAT_LAYOUT_ETC1,<br>
+   MESA_FORMAT_LAYOUT_ETC2,<br>
+   MESA_FORMAT_LAYOUT_BPTC,<br>
    MESA_FORMAT_LAYOUT_OTHER,<br>
 };<br>
<br>
diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c<br>
index 0fd1a36..edfb036 100644<br>
--- a/src/mesa/main/texcompress.c<br>
+++ b/src/mesa/main/texcompress.c<br>
@@ -586,34 +586,16 @@ _mesa_compressed_image_address(GLint col, GLint row, GLint img,<br>
 compressed_fetch_func<br>
 _mesa_get_compressed_fetch_func(mesa_format format)<br>
 {<br>
-   switch (format) {<br>
-   case MESA_FORMAT_RGB_DXT1:<br>
-   case MESA_FORMAT_RGBA_DXT1:<br>
-   case MESA_FORMAT_RGBA_DXT3:<br>
-   case MESA_FORMAT_RGBA_DXT5:<br>
-   case MESA_FORMAT_SRGB_DXT1:<br>
-   case MESA_FORMAT_SRGBA_DXT1:<br>
-   case MESA_FORMAT_SRGBA_DXT3:<br>
-   case MESA_FORMAT_SRGBA_DXT5:<br>
+   switch (_mesa_get_format_layout(format)) {<br>
+   case MESA_FORMAT_LAYOUT_S3TC:<br>
       return _mesa_get_dxt_fetch_func(format);<br>
-   case MESA_FORMAT_RGB_FXT1:<br>
-   case MESA_FORMAT_RGBA_FXT1:<br>
+   case MESA_FORMAT_LAYOUT_FXT1:<br>
       return _mesa_get_fxt_fetch_func(format);<br>
-   case MESA_FORMAT_R_RGTC1_UNORM:<br>
-   case MESA_FORMAT_L_LATC1_UNORM:<br>
-   case MESA_FORMAT_R_RGTC1_SNORM:<br>
-   case MESA_FORMAT_L_LATC1_SNORM:<br>
-   case MESA_FORMAT_RG_RGTC2_UNORM:<br>
-   case MESA_FORMAT_LA_LATC2_UNORM:<br>
-   case MESA_FORMAT_RG_RGTC2_SNORM:<br>
-   case MESA_FORMAT_LA_LATC2_SNORM:<br>
+   case MESA_FORMAT_LAYOUT_RGTC:<br>
       return _mesa_get_compressed_rgtc_func(format);<br>
-   case MESA_FORMAT_ETC1_RGB8:<br>
+   case MESA_FORMAT_LAYOUT_ETC1:<br>
       return _mesa_get_etc_fetch_func(format);<br>
-   case MESA_FORMAT_BPTC_RGBA_UNORM:<br>
-   case MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM:<br>
-   case MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT:<br>
-   case MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT:<br>
+   case MESA_FORMAT_LAYOUT_BPTC:<br>
       return _mesa_get_bptc_fetch_func(format);<br>
    default:<br>
       return NULL;<br>
--<br>
2.5.0<br>
<br>
</div></div></blockquote></div><br></div>