panfrost: XMLify enum mali_format

Note we are just handling the index part of the format. This is *not*
the full format, which would include the swizzle (or v7 equivalent) and
the sRGB flag. But in the interest of incremental progress, let's move
this part over first and save on decoding complexity.

To avoid substantial churn from prefixing FORMAT to format names, we
special case the enums to avoid the prefix. This is undesirable but
reduces churn, especially since format handling is slated for an
overhaul soon to accomodate v7

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6195>
diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h
index 75ee394..5be15a5 100644
--- a/src/panfrost/include/panfrost-job.h
+++ b/src/panfrost/include/panfrost-job.h
@@ -217,129 +217,6 @@
 #define MALI_CHANNEL_FLOAT 7
 #define MALI_EXTRACT_BITS(fmt) (fmt & 0x7)
 
-enum mali_format {
-        /* Not all formats are in fact available, need to query dynamically to
-         * check. Factory settings for Juno enables only ETC2 and ASTC, no
-         * DXT/RGTC formats.
-         * */
-
-        /* 0x0 invalid */
-	MALI_ETC2_RGB8       = MALI_FORMAT_COMPRESSED | 0x1,
-	MALI_ETC2_R11_UNORM  = MALI_FORMAT_COMPRESSED | 0x2,
-	MALI_ETC2_RGBA8      = MALI_FORMAT_COMPRESSED | 0x3,
-	MALI_ETC2_RG11_UNORM = MALI_FORMAT_COMPRESSED | 0x4,
-        /* 0x5 reserved */
-        MALI_NXR             = MALI_FORMAT_COMPRESSED | 0x6, /* Nokia eXtended Range */
-        MALI_BC1_UNORM       = MALI_FORMAT_COMPRESSED | 0x7, /* DXT1 */
-        MALI_BC2_UNORM       = MALI_FORMAT_COMPRESSED | 0x8, /* DXT3 */
-        MALI_BC3_UNORM       = MALI_FORMAT_COMPRESSED | 0x9, /* DXT5 */
-        MALI_BC4_UNORM       = MALI_FORMAT_COMPRESSED | 0xA, /* RGTC1_UNORM */
-        MALI_BC4_SNORM       = MALI_FORMAT_COMPRESSED | 0xB, /* RGTC1_SNORM */
-        MALI_BC5_UNORM       = MALI_FORMAT_COMPRESSED | 0xC, /* RGTC2_UNORM */
-        MALI_BC5_SNORM       = MALI_FORMAT_COMPRESSED | 0xD, /* RGTC2_SNORM */
-        MALI_BC6H_UF16       = MALI_FORMAT_COMPRESSED | 0xE,
-        MALI_BC6H_SF16       = MALI_FORMAT_COMPRESSED | 0xF,
-        MALI_BC7_UNORM       = MALI_FORMAT_COMPRESSED | 0x10,
-	MALI_ETC2_R11_SNORM  = MALI_FORMAT_COMPRESSED | 0x11, /* EAC_SNORM */
-	MALI_ETC2_RG11_SNORM = MALI_FORMAT_COMPRESSED | 0x12, /* EAC_SNORM */
-	MALI_ETC2_RGB8A1     = MALI_FORMAT_COMPRESSED | 0x13,
-	MALI_ASTC_3D_LDR     = MALI_FORMAT_COMPRESSED | 0x14,
-	MALI_ASTC_3D_HDR     = MALI_FORMAT_COMPRESSED | 0x15,
-	MALI_ASTC_2D_LDR     = MALI_FORMAT_COMPRESSED | 0x16,
-	MALI_ASTC_2D_HDR     = MALI_FORMAT_COMPRESSED | 0x17,
-
-	MALI_RGB565         = MALI_FORMAT_SPECIAL | 0x0,
-	MALI_RGB5_X1_UNORM  = MALI_FORMAT_SPECIAL | 0x1,
-	MALI_RGB5_A1_UNORM  = MALI_FORMAT_SPECIAL | 0x2,
-	MALI_RGB10_A2_UNORM = MALI_FORMAT_SPECIAL | 0x3,
-	MALI_RGB10_A2_SNORM = MALI_FORMAT_SPECIAL | 0x5,
-	MALI_RGB10_A2UI     = MALI_FORMAT_SPECIAL | 0x7,
-	MALI_RGB10_A2I      = MALI_FORMAT_SPECIAL | 0x9,
-
-	MALI_RGB332_UNORM   = MALI_FORMAT_SPECIAL | 0xb,
-	MALI_RGB233_UNORM   = MALI_FORMAT_SPECIAL | 0xc,
-
-	MALI_Z24X8_UNORM    = MALI_FORMAT_SPECIAL | 0xd,
-	MALI_R32_FIXED      = MALI_FORMAT_SPECIAL | 0x11,
-	MALI_RG32_FIXED     = MALI_FORMAT_SPECIAL | 0x12,
-	MALI_RGB32_FIXED    = MALI_FORMAT_SPECIAL | 0x13,
-	MALI_RGBA32_FIXED   = MALI_FORMAT_SPECIAL | 0x14,
-	MALI_R11F_G11F_B10F = MALI_FORMAT_SPECIAL | 0x19,
-        MALI_R9F_G9F_B9F_E5F = MALI_FORMAT_SPECIAL | 0x1b,
-	/* Only used for varyings, to indicate the transformed gl_Position */
-	MALI_VARYING_POS    = MALI_FORMAT_SPECIAL | 0x1e,
-	/* Only used for varyings, to indicate that the write should be
-	 * discarded.
-	 */
-	MALI_VARYING_DISCARD = MALI_FORMAT_SPECIAL | 0x1f,
-
-	MALI_R8_SNORM     = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(1) | MALI_CHANNEL_8,
-	MALI_R16_SNORM    = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(1) | MALI_CHANNEL_16,
-	MALI_R32_SNORM    = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(1) | MALI_CHANNEL_32,
-	MALI_RG8_SNORM    = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(2) | MALI_CHANNEL_8,
-	MALI_RG16_SNORM   = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(2) | MALI_CHANNEL_16,
-	MALI_RG32_SNORM   = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(2) | MALI_CHANNEL_32,
-	MALI_RGB8_SNORM   = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(3) | MALI_CHANNEL_8,
-	MALI_RGB16_SNORM  = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(3) | MALI_CHANNEL_16,
-	MALI_RGB32_SNORM  = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(3) | MALI_CHANNEL_32,
-	MALI_RGBA8_SNORM  = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_8,
-	MALI_RGBA16_SNORM = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_16,
-	MALI_RGBA32_SNORM = MALI_FORMAT_SNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_32,
-
-	MALI_R8UI     = MALI_FORMAT_UINT | MALI_NR_CHANNELS(1) | MALI_CHANNEL_8,
-	MALI_R16UI    = MALI_FORMAT_UINT | MALI_NR_CHANNELS(1) | MALI_CHANNEL_16,
-	MALI_R32UI    = MALI_FORMAT_UINT | MALI_NR_CHANNELS(1) | MALI_CHANNEL_32,
-	MALI_RG8UI    = MALI_FORMAT_UINT | MALI_NR_CHANNELS(2) | MALI_CHANNEL_8,
-	MALI_RG16UI   = MALI_FORMAT_UINT | MALI_NR_CHANNELS(2) | MALI_CHANNEL_16,
-	MALI_RG32UI   = MALI_FORMAT_UINT | MALI_NR_CHANNELS(2) | MALI_CHANNEL_32,
-	MALI_RGB8UI   = MALI_FORMAT_UINT | MALI_NR_CHANNELS(3) | MALI_CHANNEL_8,
-	MALI_RGB16UI  = MALI_FORMAT_UINT | MALI_NR_CHANNELS(3) | MALI_CHANNEL_16,
-	MALI_RGB32UI  = MALI_FORMAT_UINT | MALI_NR_CHANNELS(3) | MALI_CHANNEL_32,
-	MALI_RGBA8UI  = MALI_FORMAT_UINT | MALI_NR_CHANNELS(4) | MALI_CHANNEL_8,
-	MALI_RGBA16UI = MALI_FORMAT_UINT | MALI_NR_CHANNELS(4) | MALI_CHANNEL_16,
-	MALI_RGBA32UI = MALI_FORMAT_UINT | MALI_NR_CHANNELS(4) | MALI_CHANNEL_32,
-
-	MALI_R8_UNORM = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(1) | MALI_CHANNEL_8,
-	MALI_R16_UNORM = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(1) | MALI_CHANNEL_16,
-	MALI_R32_UNORM = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(1) | MALI_CHANNEL_32,
-	MALI_R32F = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(1) | MALI_CHANNEL_FLOAT,
-	MALI_RG8_UNORM    = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(2) | MALI_CHANNEL_8,
-	MALI_RG16_UNORM   = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(2) | MALI_CHANNEL_16,
-	MALI_RG32_UNORM   = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(2) | MALI_CHANNEL_32,
-	MALI_RG32F = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(2) | MALI_CHANNEL_FLOAT,
-	MALI_RGB8_UNORM   = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(3) | MALI_CHANNEL_8,
-	MALI_RGB16_UNORM  = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(3) | MALI_CHANNEL_16,
-	MALI_RGB32_UNORM  = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(3) | MALI_CHANNEL_32,
-	MALI_RGB32F = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(3) | MALI_CHANNEL_FLOAT,
-	MALI_RGBA4_UNORM  = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_4,
-	MALI_RGBA8_UNORM  = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_8,
-	MALI_RGBA16_UNORM = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_16,
-	MALI_RGBA32_UNORM = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_32,
-	MALI_RGBA32F = MALI_FORMAT_UNORM | MALI_NR_CHANNELS(4) | MALI_CHANNEL_FLOAT,
-
-	MALI_R8I     = MALI_FORMAT_SINT | MALI_NR_CHANNELS(1) | MALI_CHANNEL_8,
-	MALI_R16I    = MALI_FORMAT_SINT | MALI_NR_CHANNELS(1) | MALI_CHANNEL_16,
-	MALI_R32I    = MALI_FORMAT_SINT | MALI_NR_CHANNELS(1) | MALI_CHANNEL_32,
-	MALI_R16F    = MALI_FORMAT_SINT | MALI_NR_CHANNELS(1) | MALI_CHANNEL_FLOAT,
-	MALI_RG8I    = MALI_FORMAT_SINT | MALI_NR_CHANNELS(2) | MALI_CHANNEL_8,
-	MALI_RG16I   = MALI_FORMAT_SINT | MALI_NR_CHANNELS(2) | MALI_CHANNEL_16,
-	MALI_RG32I   = MALI_FORMAT_SINT | MALI_NR_CHANNELS(2) | MALI_CHANNEL_32,
-	MALI_RG16F   = MALI_FORMAT_SINT | MALI_NR_CHANNELS(2) | MALI_CHANNEL_FLOAT,
-	MALI_RGB8I   = MALI_FORMAT_SINT | MALI_NR_CHANNELS(3) | MALI_CHANNEL_8,
-	MALI_RGB16I  = MALI_FORMAT_SINT | MALI_NR_CHANNELS(3) | MALI_CHANNEL_16,
-	MALI_RGB32I  = MALI_FORMAT_SINT | MALI_NR_CHANNELS(3) | MALI_CHANNEL_32,
-	MALI_RGB16F  = MALI_FORMAT_SINT | MALI_NR_CHANNELS(3) | MALI_CHANNEL_FLOAT,
-	MALI_RGBA8I  = MALI_FORMAT_SINT | MALI_NR_CHANNELS(4) | MALI_CHANNEL_8,
-	MALI_RGBA16I = MALI_FORMAT_SINT | MALI_NR_CHANNELS(4) | MALI_CHANNEL_16,
-	MALI_RGBA32I = MALI_FORMAT_SINT | MALI_NR_CHANNELS(4) | MALI_CHANNEL_32,
-	MALI_RGBA16F = MALI_FORMAT_SINT | MALI_NR_CHANNELS(4) | MALI_CHANNEL_FLOAT,
-
-	MALI_RGBA4      = MALI_FORMAT_SPECIAL2 | 0x8,
-	MALI_RGBA8_2    = MALI_FORMAT_SPECIAL2 | 0xd,
-	MALI_RGB10_A2_2 = MALI_FORMAT_SPECIAL2 | 0xe,
-};
-
-
 /* Applies to midgard1.flags_lo */
 
 /* Should be set when the fragment shader updates the depth value. */
diff --git a/src/panfrost/lib/decode.c b/src/panfrost/lib/decode.c
index d103829..54f8474 100644
--- a/src/panfrost/lib/decode.c
+++ b/src/panfrost/lib/decode.c
@@ -334,125 +334,6 @@
 };
 #undef FLAG_INFO
 
-#define DEFINE_CASE(name) case MALI_## name: return "MALI_" #name
-static char *pandecode_format(enum mali_format format)
-{
-        static char unk_format_str[10];
-
-        switch (format) {
-                DEFINE_CASE(ETC2_RGB8);
-                DEFINE_CASE(ETC2_R11_UNORM);
-                DEFINE_CASE(ETC2_RGBA8);
-                DEFINE_CASE(ETC2_RG11_UNORM);
-                DEFINE_CASE(ETC2_R11_SNORM);
-                DEFINE_CASE(ETC2_RG11_SNORM);
-                DEFINE_CASE(ETC2_RGB8A1);
-                DEFINE_CASE(NXR);
-                DEFINE_CASE(BC1_UNORM);
-                DEFINE_CASE(BC2_UNORM);
-                DEFINE_CASE(BC3_UNORM);
-                DEFINE_CASE(BC4_UNORM);
-                DEFINE_CASE(BC4_SNORM);
-                DEFINE_CASE(BC5_UNORM);
-                DEFINE_CASE(BC5_SNORM);
-                DEFINE_CASE(BC6H_UF16);
-                DEFINE_CASE(BC6H_SF16);
-                DEFINE_CASE(BC7_UNORM);
-                DEFINE_CASE(ASTC_3D_LDR);
-                DEFINE_CASE(ASTC_3D_HDR);
-                DEFINE_CASE(ASTC_2D_LDR);
-                DEFINE_CASE(ASTC_2D_HDR);
-                DEFINE_CASE(RGB565);
-                DEFINE_CASE(RGB5_X1_UNORM);
-                DEFINE_CASE(RGB5_A1_UNORM);
-                DEFINE_CASE(RGB10_A2_UNORM);
-                DEFINE_CASE(RGB10_A2_SNORM);
-                DEFINE_CASE(RGB10_A2UI);
-                DEFINE_CASE(RGB10_A2I);
-                DEFINE_CASE(RGB332_UNORM);
-                DEFINE_CASE(RGB233_UNORM);
-                DEFINE_CASE(Z24X8_UNORM);
-                DEFINE_CASE(R32_FIXED);
-                DEFINE_CASE(RG32_FIXED);
-                DEFINE_CASE(RGB32_FIXED);
-                DEFINE_CASE(RGBA32_FIXED);
-                DEFINE_CASE(R11F_G11F_B10F);
-                DEFINE_CASE(R9F_G9F_B9F_E5F);
-                DEFINE_CASE(VARYING_POS);
-                DEFINE_CASE(VARYING_DISCARD);
-
-                DEFINE_CASE(R8_SNORM);
-                DEFINE_CASE(R16_SNORM);
-                DEFINE_CASE(R32_SNORM);
-                DEFINE_CASE(RG8_SNORM);
-                DEFINE_CASE(RG16_SNORM);
-                DEFINE_CASE(RG32_SNORM);
-                DEFINE_CASE(RGB8_SNORM);
-                DEFINE_CASE(RGB16_SNORM);
-                DEFINE_CASE(RGB32_SNORM);
-                DEFINE_CASE(RGBA8_SNORM);
-                DEFINE_CASE(RGBA16_SNORM);
-                DEFINE_CASE(RGBA32_SNORM);
-
-                DEFINE_CASE(R8UI);
-                DEFINE_CASE(R16UI);
-                DEFINE_CASE(R32UI);
-                DEFINE_CASE(RG8UI);
-                DEFINE_CASE(RG16UI);
-                DEFINE_CASE(RG32UI);
-                DEFINE_CASE(RGB8UI);
-                DEFINE_CASE(RGB16UI);
-                DEFINE_CASE(RGB32UI);
-                DEFINE_CASE(RGBA8UI);
-                DEFINE_CASE(RGBA16UI);
-                DEFINE_CASE(RGBA32UI);
-
-                DEFINE_CASE(R8_UNORM);
-                DEFINE_CASE(R16_UNORM);
-                DEFINE_CASE(R32_UNORM);
-                DEFINE_CASE(R32F);
-                DEFINE_CASE(RG8_UNORM);
-                DEFINE_CASE(RG16_UNORM);
-                DEFINE_CASE(RG32_UNORM);
-                DEFINE_CASE(RG32F);
-                DEFINE_CASE(RGB8_UNORM);
-                DEFINE_CASE(RGB16_UNORM);
-                DEFINE_CASE(RGB32_UNORM);
-                DEFINE_CASE(RGB32F);
-                DEFINE_CASE(RGBA4_UNORM);
-                DEFINE_CASE(RGBA8_UNORM);
-                DEFINE_CASE(RGBA16_UNORM);
-                DEFINE_CASE(RGBA32_UNORM);
-                DEFINE_CASE(RGBA32F);
-
-                DEFINE_CASE(R8I);
-                DEFINE_CASE(R16I);
-                DEFINE_CASE(R32I);
-                DEFINE_CASE(RG8I);
-                DEFINE_CASE(R16F);
-                DEFINE_CASE(RG16I);
-                DEFINE_CASE(RG32I);
-                DEFINE_CASE(RG16F);
-                DEFINE_CASE(RGB8I);
-                DEFINE_CASE(RGB16I);
-                DEFINE_CASE(RGB32I);
-                DEFINE_CASE(RGB16F);
-                DEFINE_CASE(RGBA8I);
-                DEFINE_CASE(RGBA16I);
-                DEFINE_CASE(RGBA32I);
-                DEFINE_CASE(RGBA16F);
-
-                DEFINE_CASE(RGBA4);
-                DEFINE_CASE(RGBA8_2);
-                DEFINE_CASE(RGB10_A2_2);
-        default:
-                snprintf(unk_format_str, sizeof(unk_format_str), "MALI_0x%02x", format);
-                return unk_format_str;
-        }
-}
-
-#undef DEFINE_CASE
-
 static char *pandecode_attr_mode_short(enum mali_attr_mode mode)
 {
         switch(mode) {
@@ -918,33 +799,6 @@
         return (swizzle == default_swizzles[nr_comp - 1]);
 }
 
-/* Maps MALI_RGBA32F to rgba32f, etc */
-
-static void
-pandecode_format_short(enum mali_format fmt, bool srgb)
-{
-        /* We want a type-like format, so cut off the initial MALI_ */
-        char *format = pandecode_format(fmt);
-        format += strlen("MALI_");
-
-        unsigned len = strlen(format);
-        char *lower_format = calloc(1, len + 1);
-
-        for (unsigned i = 0; i < len; ++i)
-                lower_format[i] = tolower(format[i]);
-
-        /* Sanity check sRGB flag is applied to RGB, per the name */
-        if (srgb && lower_format[0] != 'r')
-                pandecode_msg("XXX: sRGB applied to non-colour format\n");
-
-        /* Just prefix with an s, so you get formats like srgba8_unorm */
-        if (srgb)
-                pandecode_log_cont("s");
-
-        pandecode_log_cont("%s", lower_format);
-        free(lower_format);
-}
-
 static void
 pandecode_swizzle(unsigned swizzle, enum mali_format format)
 {
@@ -1580,8 +1434,7 @@
         pandecode_prop("unk2 = 0x%" PRIx16, b->unk2);
         pandecode_prop("index = 0x%" PRIx16, b->index);
 
-        pandecode_log(".format = ");
-        pandecode_format_short(b->format, false);
+        pandecode_log(".format = %s", mali_format_as_str(b->format));
         pandecode_swizzle(b->swizzle, b->format);
         pandecode_log_cont(",\n");
 
@@ -1743,8 +1596,7 @@
                         pandecode_prop("unknown3 = 0x%" PRIx64, (u64) attr_meta->unknown3);
                 }
 
-                pandecode_format_short(attr_meta->format, false);
-                pandecode_log_cont(" %s_%u", prefix, attr_meta->index);
+                pandecode_log_cont("%s %s_%u", mali_format_as_str(attr_meta->format), prefix, attr_meta->index);
 
                 if (attr_meta->src_offset)
                         pandecode_log_cont("[%u]", attr_meta->src_offset);
diff --git a/src/panfrost/lib/gen_pack.py b/src/panfrost/lib/gen_pack.py
index c192b50..0266838 100644
--- a/src/panfrost/lib/gen_pack.py
+++ b/src/panfrost/lib/gen_pack.py
@@ -592,11 +592,16 @@
         self.emit_unpack_function(self.struct, self.group)
         self.emit_print_function(self.struct, self.group)
 
+    def enum_prefix(self, name):
+        return 
+
     def emit_enum(self):
         e_name = enum_name(self.enum)
+        prefix = e_name if self.enum != 'Format' else global_prefix
         print('enum {} {{'.format(e_name))
+
         for value in self.values:
-            name = '{}_{}'.format(e_name, value.name)
+            name = '{}_{}'.format(prefix, value.name)
             name = safe_name(name).upper()
             print('        % -36s = %6d,' % (name, value.value))
         print('};\n')
@@ -605,7 +610,7 @@
         print("{}_as_str(enum {} imm)\n{{".format(e_name.lower(), e_name))
         print("    switch (imm) {")
         for value in self.values:
-            name = '{}_{}'.format(e_name, value.name)
+            name = '{}_{}'.format(prefix, value.name)
             name = safe_name(name).upper()
             print('    case {}: return "{}";'.format(name, value.name))
         print('    default: return "XXX: INVALID";')
diff --git a/src/panfrost/lib/midgard.xml b/src/panfrost/lib/midgard.xml
index 97199b5..baa251e 100644
--- a/src/panfrost/lib/midgard.xml
+++ b/src/panfrost/lib/midgard.xml
@@ -45,6 +45,109 @@
     <value name="Always" value="7"/>
   </enum>
 
+  <enum name="Format">
+    <value name="ETC2 RGB8" value="1"/>
+    <value name="ETC2 R11 UNORM" value="2"/>
+    <value name="ETC2 RGBA8" value="3"/>
+    <value name="ETC2 RG11 UNORM" value="4"/>
+    <value name="NXR" value="6"/>
+    <value name="BC1 UNORM" value="7"/>
+    <value name="BC2 UNORM" value="8"/>
+    <value name="BC3 UNORM" value="9"/>
+    <value name="BC4 UNORM" value="10"/>
+    <value name="BC4 SNORM" value="11"/>
+    <value name="BC5 UNORM" value="12"/>
+    <value name="BC5 SNORM" value="13"/>
+    <value name="BC6H UF16" value="14"/>
+    <value name="BC6H SF16" value="15"/>
+    <value name="BC7 UNORM" value="16"/>
+    <value name="ETC2 R11 SNORM" value="17"/>
+    <value name="ETC2 RG11 SNORM" value="18"/>
+    <value name="ETC2 RGB8A1" value="19"/>
+    <value name="ASTC 3D LDR" value="20"/>
+    <value name="ASTC 3D HDR" value="21"/>
+    <value name="ASTC 2D LDR" value="22"/>
+    <value name="ASTC 2D HDR" value="23"/>
+    <value name="RGB565" value="64"/>
+    <value name="RGB5 X1 UNORM" value="65"/>
+    <value name="RGB5 A1 UNORM" value="66"/>
+    <value name="RGB10 A2 UNORM" value="67"/>
+    <value name="RGB10 A2 SNORM" value="69"/>
+    <value name="RGB10 A2UI" value="71"/>
+    <value name="RGB10 A2I" value="73"/>
+    <value name="RGB332 UNORM" value="75"/>
+    <value name="RGB233 UNORM" value="76"/>
+    <value name="Z24X8 UNORM" value="77"/>
+    <value name="R32 FIXED" value="81"/>
+    <value name="RG32 FIXED" value="82"/>
+    <value name="RGB32 FIXED" value="83"/>
+    <value name="RGBA32 FIXED" value="84"/>
+    <value name="R11F G11F B10F" value="89"/>
+    <value name="R9F G9F B9F E5F" value="91"/>
+    <value name="VARYING POS" value="94"/>
+    <value name="VARYING DISCARD" value="95"/>
+    <value name="R8 SNORM" value="99"/>
+    <value name="R16 SNORM" value="100"/>
+    <value name="R32 SNORM" value="101"/>
+    <value name="RG8 SNORM" value="107"/>
+    <value name="RG16 SNORM" value="108"/>
+    <value name="RG32 SNORM" value="109"/>
+    <value name="RGB8 SNORM" value="115"/>
+    <value name="RGB16 SNORM" value="116"/>
+    <value name="RGB32 SNORM" value="117"/>
+    <value name="RGBA8 SNORM" value="123"/>
+    <value name="RGBA16 SNORM" value="124"/>
+    <value name="RGBA32 SNORM" value="125"/>
+    <value name="R8UI" value="131"/>
+    <value name="R16UI" value="132"/>
+    <value name="R32UI" value="133"/>
+    <value name="RG8UI" value="139"/>
+    <value name="RG16UI" value="140"/>
+    <value name="RG32UI" value="141"/>
+    <value name="RGB8UI" value="147"/>
+    <value name="RGB16UI" value="148"/>
+    <value name="RGB32UI" value="149"/>
+    <value name="RGBA8UI" value="155"/>
+    <value name="RGBA16UI" value="156"/>
+    <value name="RGBA32UI" value="157"/>
+    <value name="R8 UNORM" value="163"/>
+    <value name="R16 UNORM" value="164"/>
+    <value name="R32 UNORM" value="165"/>
+    <value name="R32F" value="167"/>
+    <value name="RG8 UNORM" value="171"/>
+    <value name="RG16 UNORM" value="172"/>
+    <value name="RG32 UNORM" value="173"/>
+    <value name="RG32F" value="175"/>
+    <value name="RGB8 UNORM" value="179"/>
+    <value name="RGB16 UNORM" value="180"/>
+    <value name="RGB32 UNORM" value="181"/>
+    <value name="RGB32F" value="183"/>
+    <value name="RGBA4 UNORM" value="186"/>
+    <value name="RGBA8 UNORM" value="187"/>
+    <value name="RGBA16 UNORM" value="188"/>
+    <value name="RGBA32 UNORM" value="189"/>
+    <value name="RGBA32F" value="191"/>
+    <value name="R8I" value="195"/>
+    <value name="R16I" value="196"/>
+    <value name="R32I" value="197"/>
+    <value name="R16F" value="199"/>
+    <value name="RG8I" value="203"/>
+    <value name="RG16I" value="204"/>
+    <value name="RG32I" value="205"/>
+    <value name="RG16F" value="207"/>
+    <value name="RGB8I" value="211"/>
+    <value name="RGB16I" value="212"/>
+    <value name="RGB32I" value="213"/>
+    <value name="RGB16F" value="215"/>
+    <value name="RGBA8I" value="219"/>
+    <value name="RGBA16I" value="220"/>
+    <value name="RGBA32I" value="221"/>
+    <value name="RGBA16F" value="223"/>
+    <value name="RGBA4" value="232"/>
+    <value name="RGBA8 2" value="237"/>
+    <value name="RGB10 A2 2" value="238"/>
+  </enum>
+
   <enum name="Block Format">
     <!--- 16x16 block u-interleaved -->
     <value name="Tiled" value="0"/>