<div dir="ltr">I should add that this patch enables this function to handle ASTC formats. This in turn enables such formats to be used for GL calls such as Tex*Storage*.<div><br></div><div>- Nanley</div><div> <br><div class="gmail_extra"><div class="gmail_quote">On Wed, Aug 26, 2015 at 2:38 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">From: Nanley Chery <<a href="mailto:nanley.g.chery@intel.com">nanley.g.chery@intel.com</a>><br>
<br>
This function's cases for non-generic compressed formats duplicate<br>
the GL to MESA translation in _mesa_glenum_to_compressed_format().<br>
This patch replaces the switch cases with a call to the translation<br>
function.<br>
<br>
Cc: Brian Paul <<a href="mailto:brianp@vmware.com">brianp@vmware.com</a>><br>
Cc: Chad Versace <<a href="mailto:chad.versace@intel.com">chad.versace@intel.com</a>><br>
Cc: Ian Romanick <<a href="mailto:ian.d.romanick@intel.com">ian.d.romanick@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>
 src/mesa/main/texformat.c | 94 +++++++----------------------------------------<br>
 1 file changed, 13 insertions(+), 81 deletions(-)<br>
<br>
diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c<br>
index f4d17e1..fd9f335 100644<br>
--- a/src/mesa/main/texformat.c<br>
+++ b/src/mesa/main/texformat.c<br>
@@ -38,6 +38,7 @@<br>
 #include "mtypes.h"<br>
 #include "texcompress.h"<br>
 #include "texformat.h"<br>
+#include "glformats.h"<br>
<br>
 #define RETURN_IF_SUPPORTED(f) do {            \<br>
    if (ctx->TextureFormatSupported[f])         \<br>
@@ -276,87 +277,6 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target,<br>
          RETURN_IF_SUPPORTED(MESA_FORMAT_YCBCR_REV);<br>
       break;<br>
<br>
-   /* For non-generic compressed format we assert two things:<br>
-    *<br>
-    * 1. The format has already been validated against the set of available<br>
-    *    extensions.<br>
-    *<br>
-    * 2. The driver only enables the extension if it supports all of the<br>
-    *    formats that are part of that extension.<br>
-    */<br>
-   case GL_COMPRESSED_RGB_FXT1_3DFX:<br>
-      return MESA_FORMAT_RGB_FXT1;<br>
-   case GL_COMPRESSED_RGBA_FXT1_3DFX:<br>
-      return MESA_FORMAT_RGBA_FXT1;<br>
-   case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:<br>
-   case GL_RGB_S3TC:<br>
-   case GL_RGB4_S3TC:<br>
-      return MESA_FORMAT_RGB_DXT1;<br>
-   case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:<br>
-      return MESA_FORMAT_RGBA_DXT1;<br>
-   case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:<br>
-   case GL_RGBA_S3TC:<br>
-   case GL_RGBA4_S3TC:<br>
-      return MESA_FORMAT_RGBA_DXT3;<br>
-   case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:<br>
-      return MESA_FORMAT_RGBA_DXT5;<br>
-   case GL_COMPRESSED_RED_RGTC1:<br>
-      return MESA_FORMAT_R_RGTC1_UNORM;<br>
-   case GL_COMPRESSED_SIGNED_RED_RGTC1:<br>
-      return MESA_FORMAT_R_RGTC1_SNORM;<br>
-   case GL_COMPRESSED_RG_RGTC2:<br>
-      return MESA_FORMAT_RG_RGTC2_UNORM;<br>
-   case GL_COMPRESSED_SIGNED_RG_RGTC2:<br>
-      return MESA_FORMAT_RG_RGTC2_SNORM;<br>
-   case GL_COMPRESSED_LUMINANCE_LATC1_EXT:<br>
-      return MESA_FORMAT_L_LATC1_UNORM;<br>
-   case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT:<br>
-      return MESA_FORMAT_L_LATC1_SNORM;<br>
-   case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:<br>
-      return MESA_FORMAT_LA_LATC2_UNORM;<br>
-   case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:<br>
-      return MESA_FORMAT_LA_LATC2_SNORM;<br>
-   case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:<br>
-      return MESA_FORMAT_LA_LATC2_UNORM;<br>
-   case GL_ETC1_RGB8_OES:<br>
-      return MESA_FORMAT_ETC1_RGB8;<br>
-   case GL_COMPRESSED_RGB8_ETC2:<br>
-      return MESA_FORMAT_ETC2_RGB8;<br>
-   case GL_COMPRESSED_SRGB8_ETC2:<br>
-      return MESA_FORMAT_ETC2_SRGB8;<br>
-   case GL_COMPRESSED_RGBA8_ETC2_EAC:<br>
-      return MESA_FORMAT_ETC2_RGBA8_EAC;<br>
-   case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:<br>
-      return MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC;<br>
-   case GL_COMPRESSED_R11_EAC:<br>
-      return MESA_FORMAT_ETC2_R11_EAC;<br>
-   case GL_COMPRESSED_RG11_EAC:<br>
-      return MESA_FORMAT_ETC2_RG11_EAC;<br>
-   case GL_COMPRESSED_SIGNED_R11_EAC:<br>
-      return MESA_FORMAT_ETC2_SIGNED_R11_EAC;<br>
-   case GL_COMPRESSED_SIGNED_RG11_EAC:<br>
-      return MESA_FORMAT_ETC2_SIGNED_RG11_EAC;<br>
-   case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:<br>
-      return MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1;<br>
-   case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:<br>
-      return MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1;<br>
-   case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:<br>
-      return MESA_FORMAT_SRGB_DXT1;<br>
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:<br>
-      return MESA_FORMAT_SRGBA_DXT1;<br>
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:<br>
-      return MESA_FORMAT_SRGBA_DXT3;<br>
-   case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:<br>
-      return MESA_FORMAT_SRGBA_DXT5;<br>
-   case GL_COMPRESSED_RGBA_BPTC_UNORM:<br>
-      return MESA_FORMAT_BPTC_RGBA_UNORM;<br>
-   case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:<br>
-      return MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM;<br>
-   case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:<br>
-      return MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT;<br>
-   case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:<br>
-      return MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT;<br>
-<br>
    case GL_ALPHA16F_ARB:<br>
       RETURN_IF_SUPPORTED(MESA_FORMAT_A_FLOAT16);<br>
       RETURN_IF_SUPPORTED(MESA_FORMAT_A_FLOAT32);<br>
@@ -844,6 +764,18 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target,<br>
    case GL_BGRA:<br>
       RETURN_IF_SUPPORTED(MESA_FORMAT_B8G8R8A8_UNORM);<br>
       break;<br>
+<br>
+   default:<br>
+      /* For non-generic compressed format we assert two things:<br>
+       *<br>
+       * 1. The format has already been validated against the set of available<br>
+       *    extensions.<br>
+       *<br>
+       * 2. The driver only enables the extension if it supports all of the<br>
+       *    formats that are part of that extension.<br>
+       */<br>
+      if (_mesa_is_compressed_format(ctx, internalFormat))<br>
+         return _mesa_glenum_to_compressed_format(internalFormat);<br>
    }<br>
<br>
    _mesa_problem(ctx, "unexpected format %s in _mesa_choose_tex_format()",<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.5.0<br>
<br>
</font></span></blockquote></div><br></div></div></div>