summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2009-07-26 23:50:00 +0100
committerJosé Fonseca <jfonseca@vmware.com>2009-08-29 09:21:15 +0100
commit15422b2d99be074e1d6ac064b6f791245975da83 (patch)
tree44d51409d6c873d603a0b1c7eb3626c5567f8bf0 /src
parent946f432a08112148d743eb9faf6b27bb8cc7fa76 (diff)
util: Pixel format database.
There are some inconsistencies in pipe_format, but above all, there simply aren't enough bits in an enum to conveniently store all information about a pixel format we need to be able to dynamically generate pixel packing/unpacking code.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/auxiliary/util/Makefile2
-rw-r--r--src/gallium/auxiliary/util/SConscript2
-rw-r--r--src/gallium/auxiliary/util/u_format.c46
-rw-r--r--src/gallium/auxiliary/util/u_format.csv99
-rw-r--r--src/gallium/auxiliary/util/u_format.h111
-rw-r--r--src/gallium/auxiliary/util/u_format_table.c1925
-rwxr-xr-xsrc/gallium/auxiliary/util/u_format_table.py212
7 files changed, 2397 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/Makefile b/src/gallium/auxiliary/util/Makefile
index 6a8eb73e84..003aa05cb9 100644
--- a/src/gallium/auxiliary/util/Makefile
+++ b/src/gallium/auxiliary/util/Makefile
@@ -10,6 +10,8 @@ C_SOURCES = \
u_blit.c \
u_cache.c \
u_draw_quad.c \
+ u_format.c \
+ u_format_table.c \
u_gen_mipmap.c \
u_handle_table.c \
u_hash_table.c \
diff --git a/src/gallium/auxiliary/util/SConscript b/src/gallium/auxiliary/util/SConscript
index fb142eebca..bd1af4e473 100644
--- a/src/gallium/auxiliary/util/SConscript
+++ b/src/gallium/auxiliary/util/SConscript
@@ -12,6 +12,8 @@ util = env.ConvenienceLibrary(
'u_debug_stack.c',
'u_debug_symbol.c',
'u_draw_quad.c',
+ 'u_format.c',
+ 'u_format_table.c',
'u_gen_mipmap.c',
'u_handle_table.c',
'u_hash.c',
diff --git a/src/gallium/auxiliary/util/u_format.c b/src/gallium/auxiliary/util/u_format.c
new file mode 100644
index 0000000000..98ea13b60b
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_format.c
@@ -0,0 +1,46 @@
+/**************************************************************************
+ *
+ * Copyright 2009 Vmware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+
+#include "u_format.h"
+
+
+const struct util_format_description *
+util_format_description(enum pipe_format format)
+{
+ const struct util_format_description *desc = util_format_description_table;
+
+ while(TRUE) {
+ if(desc->format == format)
+ return desc;
+
+ if(desc->format == PIPE_FORMAT_NONE)
+ return NULL;
+
+ ++desc;
+ };
+}
diff --git a/src/gallium/auxiliary/util/u_format.csv b/src/gallium/auxiliary/util/u_format.csv
new file mode 100644
index 0000000000..bf8f6ada17
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_format.csv
@@ -0,0 +1,99 @@
+PIPE_FORMAT_A8R8G8B8_UNORM , rgba, 1, 1, un8 , un8 , un8 , un8 , zyxw,
+PIPE_FORMAT_X8R8G8B8_UNORM , rgba, 1, 1, un8 , un8 , un8 , un8 , zyx1,
+PIPE_FORMAT_B8G8R8A8_UNORM , rgba, 1, 1, un8 , un8 , un8 , un8 , xyzw,
+PIPE_FORMAT_B8G8R8X8_UNORM , rgba, 1, 1, un8 , un8 , un8 , un8 , xyz1,
+PIPE_FORMAT_A1R5G5B5_UNORM , rgba, 1, 1, un5 , un5 , un5 , un1 , wxyz,
+PIPE_FORMAT_A4R4G4B4_UNORM , rgba, 1, 1, un4 , un4 , un4 , un4 , wxyz,
+PIPE_FORMAT_R5G6B5_UNORM , rgba, 1, 1, un5 , un6 , un5 , , zyx1,
+PIPE_FORMAT_A2B10G10R10_UNORM , rgba, 1, 1, un10, un10, un10, un2 , wzyx,
+PIPE_FORMAT_L8_UNORM , rgba, 1, 1, un8 , , , , xxx1,
+PIPE_FORMAT_A8_UNORM , rgba, 1, 1, un8 , , , , 000x,
+PIPE_FORMAT_I8_UNORM , rgba, 1, 1, un8 , , , , xxxx,
+PIPE_FORMAT_A8L8_UNORM , rgba, 1, 1, un8 , un8 , , , xxxy,
+PIPE_FORMAT_L16_UNORM , rgba, 1, 1, un16, , , , xxx1,
+PIPE_FORMAT_Z16_UNORM , zs , 1, 1, un16, , , , x0__,
+PIPE_FORMAT_Z32_UNORM , zs , 1, 1, un32, , , , x0__,
+PIPE_FORMAT_Z32_FLOAT , zs , 1, 1, f32 , , , , x0__,
+PIPE_FORMAT_S8Z24_UNORM , zs , 1, 1, un8 , un24, , , yx__,
+PIPE_FORMAT_Z24S8_UNORM , zs , 1, 1, un24, un8 , , , xy__,
+PIPE_FORMAT_X8Z24_UNORM , zs , 1, 1, un8 , un24, , , y0__,
+PIPE_FORMAT_Z24X8_UNORM , zs , 1, 1, un24, un8 , , , x0__,
+PIPE_FORMAT_S8_UNORM , zs , 1, 1, un8 , , , , 0x__,
+PIPE_FORMAT_R64_FLOAT , rgba, 1, 1, f64 , , , , x001,
+PIPE_FORMAT_R64G64_FLOAT , rgba, 1, 1, f64 , f64 , , , xy01,
+PIPE_FORMAT_R64G64B64_FLOAT , rgba, 1, 1, f64 , f64 , f64 , , xyz1,
+PIPE_FORMAT_R64G64B64A64_FLOAT , rgba, 1, 1, f64 , f64 , f64 , f64 , xyzw,
+PIPE_FORMAT_R32_FLOAT , rgba, 1, 1, f32 , , , , x001,
+PIPE_FORMAT_R32G32_FLOAT , rgba, 1, 1, f32 , f32 , , , xy01,
+PIPE_FORMAT_R32G32B32_FLOAT , rgba, 1, 1, f32 , f32 , f32 , , xyz1,
+PIPE_FORMAT_R32G32B32A32_FLOAT , rgba, 1, 1, f32 , f32 , f32 , f32 , xyzw,
+PIPE_FORMAT_R32_UNORM , rgba, 1, 1, un32, , , , x001,
+PIPE_FORMAT_R32G32_UNORM , rgba, 1, 1, un32, un32, , , xy01,
+PIPE_FORMAT_R32G32B32_UNORM , rgba, 1, 1, un32, un32, un32, , xyz1,
+PIPE_FORMAT_R32G32B32A32_UNORM , rgba, 1, 1, un32, un32, un32, un32, xyzw,
+PIPE_FORMAT_R32_USCALED , rgba, 1, 1, u32 , , , , x001,
+PIPE_FORMAT_R32G32_USCALED , rgba, 1, 1, u32 , u32 , , , xy01,
+PIPE_FORMAT_R32G32B32_USCALED , rgba, 1, 1, u32 , u32 , u32 , , xyz1,
+PIPE_FORMAT_R32G32B32A32_USCALED , rgba, 1, 1, u32 , u32 , u32 , u32 , xyzw,
+PIPE_FORMAT_R32_SNORM , rgba, 1, 1, sn32, , , , x001,
+PIPE_FORMAT_R32G32_SNORM , rgba, 1, 1, sn32, sn32, , , xy01,
+PIPE_FORMAT_R32G32B32_SNORM , rgba, 1, 1, sn32, sn32, sn32, , xyz1,
+PIPE_FORMAT_R32G32B32A32_SNORM , rgba, 1, 1, sn32, sn32, sn32, sn32, xyzw,
+PIPE_FORMAT_R32_SSCALED , rgba, 1, 1, s32 , , , , x001,
+PIPE_FORMAT_R32G32_SSCALED , rgba, 1, 1, s32 , s32 , , , xy01,
+PIPE_FORMAT_R32G32B32_SSCALED , rgba, 1, 1, s32 , s32 , s32 , , xyz1,
+PIPE_FORMAT_R32G32B32A32_SSCALED , rgba, 1, 1, s32 , s32 , s32 , s32 , xyzw,
+PIPE_FORMAT_R16_UNORM , rgba, 1, 1, un16, , , , x001,
+PIPE_FORMAT_R16G16_UNORM , rgba, 1, 1, un16, un16, , , xy01,
+PIPE_FORMAT_R16G16B16_UNORM , rgba, 1, 1, un16, un16, un16, , xyz1,
+PIPE_FORMAT_R16G16B16A16_UNORM , rgba, 1, 1, un16, un16, un16, un16, xyzw,
+PIPE_FORMAT_R16_USCALED , rgba, 1, 1, u16 , , , , x001,
+PIPE_FORMAT_R16G16_USCALED , rgba, 1, 1, u16 , u16 , , , xy01,
+PIPE_FORMAT_R16G16B16_USCALED , rgba, 1, 1, u16 , u16 , u16 , , xyz1,
+PIPE_FORMAT_R16G16B16A16_USCALED , rgba, 1, 1, u16 , u16 , u16 , u16 , xyzw,
+PIPE_FORMAT_R16_SNORM , rgba, 1, 1, sn16, , , , x001,
+PIPE_FORMAT_R16G16_SNORM , rgba, 1, 1, sn16, sn16, , , xy01,
+PIPE_FORMAT_R16G16B16_SNORM , rgba, 1, 1, sn16, sn16, sn16, , xyz1,
+PIPE_FORMAT_R16G16B16A16_SNORM , rgba, 1, 1, sn16, sn16, sn16, sn16, xyzw,
+PIPE_FORMAT_R16_SSCALED , rgba, 1, 1, s16 , , , , x001,
+PIPE_FORMAT_R16G16_SSCALED , rgba, 1, 1, s16 , s16 , , , xy01,
+PIPE_FORMAT_R16G16B16_SSCALED , rgba, 1, 1, s16 , s16 , s16 , , xyz1,
+PIPE_FORMAT_R16G16B16A16_SSCALED , rgba, 1, 1, s16 , s16 , s16 , s16 , xyzw,
+PIPE_FORMAT_R8_UNORM , rgba, 1, 1, un8 , , , , x001,
+PIPE_FORMAT_R8G8_UNORM , rgba, 1, 1, un8 , un8 , , , xy01,
+PIPE_FORMAT_R8G8B8_UNORM , rgba, 1, 1, un8 , un8 , un8 , , xyz1,
+PIPE_FORMAT_R8G8B8A8_UNORM , rgba, 1, 1, un8 , un8 , un8 , un8 , xyzw,
+PIPE_FORMAT_R8G8B8X8_UNORM , rgba, 1, 1, un8 , un8 , un8 , un8 , xyz1,
+PIPE_FORMAT_R8_USCALED , rgba, 1, 1, u8 , , , , x001,
+PIPE_FORMAT_R8G8_USCALED , rgba, 1, 1, u8 , u8 , , , xy01,
+PIPE_FORMAT_R8G8B8_USCALED , rgba, 1, 1, u8 , u8 , u8 , , xyz1,
+PIPE_FORMAT_R8G8B8A8_USCALED , rgba, 1, 1, u8 , u8 , u8 , u8 , xyzw,
+PIPE_FORMAT_R8G8B8X8_USCALED , rgba, 1, 1, u8 , u8 , u8 , u8 , xyz1,
+PIPE_FORMAT_R8_SNORM , rgba, 1, 1, sn8 , , , , x001,
+PIPE_FORMAT_R8G8_SNORM , rgba, 1, 1, sn8 , sn8 , , , xy01,
+PIPE_FORMAT_R8G8B8_SNORM , rgba, 1, 1, sn8 , sn8 , sn8 , , xyz1,
+PIPE_FORMAT_R8G8B8A8_SNORM , rgba, 1, 1, sn8 , sn8 , sn8 , sn8 , xyzw,
+PIPE_FORMAT_R8G8B8X8_SNORM , rgba, 1, 1, sn8 , sn8 , sn8 , sn8 , xyz1,
+PIPE_FORMAT_B6G5R5_SNORM , rgba, 1, 1, sn5 , sn5 , sn6 , , zyx1,
+PIPE_FORMAT_A8B8G8R8_SNORM , rgba, 1, 1, sn8 , sn8 , sn8 , sn8 , zyxw,
+PIPE_FORMAT_X8B8G8R8_SNORM , rgba, 1, 1, sn8 , sn8 , sn8 , sn8 , zyx1,
+PIPE_FORMAT_R8_SSCALED , rgba, 1, 1, s8 , , , , x001,
+PIPE_FORMAT_R8G8_SSCALED , rgba, 1, 1, s8 , s8 , , , xy01,
+PIPE_FORMAT_R8G8B8_SSCALED , rgba, 1, 1, s8 , s8 , s8 , , xyz1,
+PIPE_FORMAT_R8G8B8A8_SSCALED , rgba, 1, 1, s8 , s8 , s8 , s8 , xyzw,
+PIPE_FORMAT_R8G8B8X8_SSCALED , rgba, 1, 1, s8 , s8 , s8 , s8 , xyz1,
+PIPE_FORMAT_R32_FIXED , rgba, 1, 1, h32 , , , , x001,
+PIPE_FORMAT_R32G32_FIXED , rgba, 1, 1, h32 , h32 , , , xy01,
+PIPE_FORMAT_R32G32B32_FIXED , rgba, 1, 1, h32 , h32 , h32 , , xyz1,
+PIPE_FORMAT_R32G32B32A32_FIXED , rgba, 1, 1, h32 , h32 , h32 , h32 , xyzw,
+PIPE_FORMAT_L8_SRGB , rgba, 1, 1, u8 , , , , xxx1, srgb
+PIPE_FORMAT_A8L8_SRGB , rgba, 1, 1, u8 , u8 , , , xxxy, srgb
+PIPE_FORMAT_R8G8B8_SRGB , rgba, 1, 1, u8 , u8 , u8 , , xyz1, srgb
+PIPE_FORMAT_R8G8B8A8_SRGB , rgba, 1, 1, u8 , u8 , u8 , u8 , xyzw, srgb
+PIPE_FORMAT_R8G8B8X8_SRGB , rgba, 1, 1, u8 , u8 , u8 , u8 , xyz1, srgb
+PIPE_FORMAT_A8R8G8B8_SRGB , rgba, 1, 1, u8 , u8 , u8 , u8 , wxyz, srgb
+PIPE_FORMAT_X8R8G8B8_SRGB , rgba, 1, 1, u8 , u8 , u8 , u8 , 1xyz, srgb
+PIPE_FORMAT_B8G8R8A8_SRGB , rgba, 1, 1, u8 , u8 , u8 , u8 , zyxw, srgb
+PIPE_FORMAT_B8G8R8X8_SRGB , rgba, 1, 1, u8 , u8 , u8 , u8 , zyx1, srgb
+PIPE_FORMAT_X8UB8UG8SR8S_NORM , rgba, 1, 1, sn8 , sn8 , un8 , x8 , 1zyx,
+PIPE_FORMAT_B6UG5SR5S_NORM , rgba, 1, 1, sn5 , sn5 , un6 , , xyz1,
diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h
new file mode 100644
index 0000000000..2d7730fbc5
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_format.h
@@ -0,0 +1,111 @@
+/**************************************************************************
+ *
+ * Copyright 2009 Vmware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+
+#ifndef U_FORMAT_H
+#define U_FORMAT_H
+
+
+#include "pipe/p_format.h"
+
+
+enum util_format_layout {
+ UTIL_FORMAT_LAYOUT_RGBA = 0,
+ UTIL_FORMAT_LAYOUT_ZS = 1,
+ UTIL_FORMAT_LAYOUT_YUV = 2,
+ UTIL_FORMAT_LAYOUT_DXT = 3
+};
+
+
+struct util_format_block
+{
+ /** Block width in pixels */
+ unsigned width;
+
+ /** Block height in pixels */
+ unsigned height;
+
+ /** Block size in bytes */
+ unsigned bits;
+};
+
+
+enum util_format_type {
+ UTIL_FORMAT_TYPE_VOID = 0,
+ UTIL_FORMAT_TYPE_UNSIGNED = 1,
+ UTIL_FORMAT_TYPE_SIGNED = 2,
+ UTIL_FORMAT_TYPE_FIXED = 3,
+ UTIL_FORMAT_TYPE_FLOAT = 4
+};
+
+
+enum util_format_swizzle {
+ UTIL_FORMAT_SWIZZLE_X = 0,
+ UTIL_FORMAT_SWIZZLE_Y = 1,
+ UTIL_FORMAT_SWIZZLE_Z = 2,
+ UTIL_FORMAT_SWIZZLE_W = 3,
+ UTIL_FORMAT_SWIZZLE_0 = 4,
+ UTIL_FORMAT_SWIZZLE_1 = 5,
+ UTIL_FORMAT_SWIZZLE_NONE = 6
+};
+
+
+enum util_format_colorspace {
+ UTIL_FORMAT_COLORSPACE_RGB = 0,
+ UTIL_FORMAT_COLORSPACE_SRGB = 1
+};
+
+
+struct util_format_channel_description
+{
+ unsigned type:6;
+ unsigned normalized:1;
+ unsigned size:9;
+};
+
+
+struct util_format_description
+{
+ enum pipe_format format;
+ const char *name;
+ struct util_format_block block;
+ enum util_format_layout layout;
+ struct util_format_channel_description channel[4];
+ unsigned char swizzle[4];
+ enum util_format_colorspace colorspace;
+};
+
+
+extern const struct util_format_description
+util_format_description_table[];
+
+
+const struct util_format_description *
+util_format_description(enum pipe_format format);
+
+
+#endif /* ! U_FORMAT_H */
diff --git a/src/gallium/auxiliary/util/u_format_table.c b/src/gallium/auxiliary/util/u_format_table.c
new file mode 100644
index 0000000000..84e91b44ee
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_format_table.c
@@ -0,0 +1,1925 @@
+/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */
+
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#include "u_format.h"
+
+const struct util_format_description
+util_format_description_table[] =
+{
+ {
+ PIPE_FORMAT_A8R8G8B8_UNORM,
+ "PIPE_FORMAT_A8R8G8B8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_X8R8G8B8_UNORM,
+ "PIPE_FORMAT_X8R8G8B8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_B8G8R8A8_UNORM,
+ "PIPE_FORMAT_B8G8R8A8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_B8G8R8X8_UNORM,
+ "PIPE_FORMAT_B8G8R8X8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A1R5G5B5_UNORM,
+ "PIPE_FORMAT_A1R5G5B5_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 5}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 5}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 5}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 1} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_W, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_Y, /* b */
+ UTIL_FORMAT_SWIZZLE_Z /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A4R4G4B4_UNORM,
+ "PIPE_FORMAT_A4R4G4B4_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 4}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 4}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 4}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 4} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_W, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_Y, /* b */
+ UTIL_FORMAT_SWIZZLE_Z /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R5G6B5_UNORM,
+ "PIPE_FORMAT_R5G6B5_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 5}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 6}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 5}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A2B10G10R10_UNORM,
+ "PIPE_FORMAT_A2B10G10R10_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 10}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 10}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 10}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 2} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_W, /* r */
+ UTIL_FORMAT_SWIZZLE_Z, /* g */
+ UTIL_FORMAT_SWIZZLE_Y, /* b */
+ UTIL_FORMAT_SWIZZLE_X /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_L8_UNORM,
+ "PIPE_FORMAT_L8_UNORM",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A8_UNORM,
+ "PIPE_FORMAT_A8_UNORM",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_0, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_X /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_I8_UNORM,
+ "PIPE_FORMAT_I8_UNORM",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_X /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A8L8_UNORM,
+ "PIPE_FORMAT_A8L8_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_Y /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_L16_UNORM,
+ "PIPE_FORMAT_L16_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_Z16_UNORM,
+ "PIPE_FORMAT_Z16_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* z */
+ UTIL_FORMAT_SWIZZLE_0, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_Z32_UNORM,
+ "PIPE_FORMAT_Z32_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* z */
+ UTIL_FORMAT_SWIZZLE_0, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_Z32_FLOAT,
+ "PIPE_FORMAT_Z32_FLOAT",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* z */
+ UTIL_FORMAT_SWIZZLE_0, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_S8Z24_UNORM,
+ "PIPE_FORMAT_S8Z24_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 24}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Y, /* z */
+ UTIL_FORMAT_SWIZZLE_X, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_Z24S8_UNORM,
+ "PIPE_FORMAT_Z24S8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 24}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* z */
+ UTIL_FORMAT_SWIZZLE_Y, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_X8Z24_UNORM,
+ "PIPE_FORMAT_X8Z24_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 24}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Y, /* z */
+ UTIL_FORMAT_SWIZZLE_0, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_Z24X8_UNORM,
+ "PIPE_FORMAT_Z24X8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 24}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* z */
+ UTIL_FORMAT_SWIZZLE_0, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_S8_UNORM,
+ "PIPE_FORMAT_S8_UNORM",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_ZS,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_0, /* z */
+ UTIL_FORMAT_SWIZZLE_X, /* s */
+ UTIL_FORMAT_SWIZZLE_NONE, /* ignored */
+ UTIL_FORMAT_SWIZZLE_NONE /* ignored */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R64_FLOAT,
+ "PIPE_FORMAT_R64_FLOAT",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R64G64_FLOAT,
+ "PIPE_FORMAT_R64G64_FLOAT",
+ {1, 1, 128}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* x */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R64G64B64_FLOAT,
+ "PIPE_FORMAT_R64G64B64_FLOAT",
+ {1, 1, 192}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* x */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* y */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R64G64B64A64_FLOAT,
+ "PIPE_FORMAT_R64G64B64A64_FLOAT",
+ {1, 1, 256}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* x */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* y */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64}, /* z */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 64} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32_FLOAT,
+ "PIPE_FORMAT_R32_FLOAT",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32_FLOAT,
+ "PIPE_FORMAT_R32G32_FLOAT",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32_FLOAT,
+ "PIPE_FORMAT_R32G32B32_FLOAT",
+ {1, 1, 96}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ "PIPE_FORMAT_R32G32B32A32_FLOAT",
+ {1, 1, 128}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_FLOAT, FALSE, 32} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32_UNORM,
+ "PIPE_FORMAT_R32_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32_UNORM,
+ "PIPE_FORMAT_R32G32_UNORM",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32_UNORM,
+ "PIPE_FORMAT_R32G32B32_UNORM",
+ {1, 1, 96}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32A32_UNORM,
+ "PIPE_FORMAT_R32G32B32A32_UNORM",
+ {1, 1, 128}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 32} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32_USCALED,
+ "PIPE_FORMAT_R32_USCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32_USCALED,
+ "PIPE_FORMAT_R32G32_USCALED",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32_USCALED,
+ "PIPE_FORMAT_R32G32B32_USCALED",
+ {1, 1, 96}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32A32_USCALED,
+ "PIPE_FORMAT_R32G32B32A32_USCALED",
+ {1, 1, 128}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 32} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32_SNORM,
+ "PIPE_FORMAT_R32_SNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32_SNORM,
+ "PIPE_FORMAT_R32G32_SNORM",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32_SNORM,
+ "PIPE_FORMAT_R32G32B32_SNORM",
+ {1, 1, 96}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32A32_SNORM,
+ "PIPE_FORMAT_R32G32B32A32_SNORM",
+ {1, 1, 128}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 32} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32_SSCALED,
+ "PIPE_FORMAT_R32_SSCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32_SSCALED,
+ "PIPE_FORMAT_R32G32_SSCALED",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32_SSCALED,
+ "PIPE_FORMAT_R32G32B32_SSCALED",
+ {1, 1, 96}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32A32_SSCALED,
+ "PIPE_FORMAT_R32G32B32A32_SSCALED",
+ {1, 1, 128}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 32} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16_UNORM,
+ "PIPE_FORMAT_R16_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16_UNORM,
+ "PIPE_FORMAT_R16G16_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16_UNORM,
+ "PIPE_FORMAT_R16G16B16_UNORM",
+ {1, 1, 48}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16A16_UNORM,
+ "PIPE_FORMAT_R16G16B16A16_UNORM",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 16} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16_USCALED,
+ "PIPE_FORMAT_R16_USCALED",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16_USCALED,
+ "PIPE_FORMAT_R16G16_USCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16_USCALED,
+ "PIPE_FORMAT_R16G16B16_USCALED",
+ {1, 1, 48}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16A16_USCALED,
+ "PIPE_FORMAT_R16G16B16A16_USCALED",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 16} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16_SNORM,
+ "PIPE_FORMAT_R16_SNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16_SNORM,
+ "PIPE_FORMAT_R16G16_SNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16_SNORM,
+ "PIPE_FORMAT_R16G16B16_SNORM",
+ {1, 1, 48}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ "PIPE_FORMAT_R16G16B16A16_SNORM",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 16} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16_SSCALED,
+ "PIPE_FORMAT_R16_SSCALED",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16_SSCALED,
+ "PIPE_FORMAT_R16G16_SSCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16_SSCALED,
+ "PIPE_FORMAT_R16G16B16_SSCALED",
+ {1, 1, 48}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R16G16B16A16_SSCALED,
+ "PIPE_FORMAT_R16G16B16A16_SSCALED",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 16} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8_UNORM,
+ "PIPE_FORMAT_R8_UNORM",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8_UNORM,
+ "PIPE_FORMAT_R8G8_UNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8_UNORM,
+ "PIPE_FORMAT_R8G8B8_UNORM",
+ {1, 1, 24}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8A8_UNORM,
+ "PIPE_FORMAT_R8G8B8A8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8X8_UNORM,
+ "PIPE_FORMAT_R8G8B8X8_UNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8_USCALED,
+ "PIPE_FORMAT_R8_USCALED",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8_USCALED,
+ "PIPE_FORMAT_R8G8_USCALED",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8_USCALED,
+ "PIPE_FORMAT_R8G8B8_USCALED",
+ {1, 1, 24}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8A8_USCALED,
+ "PIPE_FORMAT_R8G8B8A8_USCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8X8_USCALED,
+ "PIPE_FORMAT_R8G8B8X8_USCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8_SNORM,
+ "PIPE_FORMAT_R8_SNORM",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8_SNORM,
+ "PIPE_FORMAT_R8G8_SNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8_SNORM,
+ "PIPE_FORMAT_R8G8B8_SNORM",
+ {1, 1, 24}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ "PIPE_FORMAT_R8G8B8A8_SNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8X8_SNORM,
+ "PIPE_FORMAT_R8G8B8X8_SNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_B6G5R5_SNORM,
+ "PIPE_FORMAT_B6G5R5_SNORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 5}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 5}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 6}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A8B8G8R8_SNORM,
+ "PIPE_FORMAT_A8B8G8R8_SNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_X8B8G8R8_SNORM,
+ "PIPE_FORMAT_X8B8G8R8_SNORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8_SSCALED,
+ "PIPE_FORMAT_R8_SSCALED",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8_SSCALED,
+ "PIPE_FORMAT_R8G8_SSCALED",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8_SSCALED,
+ "PIPE_FORMAT_R8G8B8_SSCALED",
+ {1, 1, 24}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8A8_SSCALED,
+ "PIPE_FORMAT_R8G8B8A8_SSCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8X8_SSCALED,
+ "PIPE_FORMAT_R8G8B8X8_SSCALED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_SIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32_FIXED,
+ "PIPE_FORMAT_R32_FIXED",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_0, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32_FIXED,
+ "PIPE_FORMAT_R32G32_FIXED",
+ {1, 1, 64}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_0, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32_FIXED,
+ "PIPE_FORMAT_R32G32B32_FIXED",
+ {1, 1, 96}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R32G32B32A32_FIXED,
+ "PIPE_FORMAT_R32G32B32A32_FIXED",
+ {1, 1, 128}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* x */
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* y */
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32}, /* z */
+ {UTIL_FORMAT_TYPE_FIXED, FALSE, 32} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_L8_SRGB,
+ "PIPE_FORMAT_L8_SRGB",
+ {1, 1, 8}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A8L8_SRGB,
+ "PIPE_FORMAT_A8L8_SRGB",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_Y /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8_SRGB,
+ "PIPE_FORMAT_R8G8B8_SRGB",
+ {1, 1, 24}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8A8_SRGB,
+ "PIPE_FORMAT_R8G8B8A8_SRGB",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_R8G8B8X8_SRGB,
+ "PIPE_FORMAT_R8G8B8X8_SRGB",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_A8R8G8B8_SRGB,
+ "PIPE_FORMAT_A8R8G8B8_SRGB",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_W, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_Y, /* b */
+ UTIL_FORMAT_SWIZZLE_Z /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_X8R8G8B8_SRGB,
+ "PIPE_FORMAT_X8R8G8B8_SRGB",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_1, /* r */
+ UTIL_FORMAT_SWIZZLE_X, /* g */
+ UTIL_FORMAT_SWIZZLE_Y, /* b */
+ UTIL_FORMAT_SWIZZLE_Z /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_B8G8R8A8_SRGB,
+ "PIPE_FORMAT_B8G8R8A8_SRGB",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_W /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_B8G8R8X8_SRGB,
+ "PIPE_FORMAT_B8G8R8X8_SRGB",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_UNSIGNED, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_Z, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_X, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_X8UB8UG8SR8S_NORM,
+ "PIPE_FORMAT_X8UB8UG8SR8S_NORM",
+ {1, 1, 32}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 8}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 8}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 8} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_1, /* r */
+ UTIL_FORMAT_SWIZZLE_Z, /* g */
+ UTIL_FORMAT_SWIZZLE_Y, /* b */
+ UTIL_FORMAT_SWIZZLE_X /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_B6UG5SR5S_NORM,
+ "PIPE_FORMAT_B6UG5SR5S_NORM",
+ {1, 1, 16}, /* block */
+ UTIL_FORMAT_LAYOUT_RGBA,
+ {
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 5}, /* x */
+ {UTIL_FORMAT_TYPE_SIGNED, TRUE, 5}, /* y */
+ {UTIL_FORMAT_TYPE_UNSIGNED, TRUE, 6}, /* z */
+ {UTIL_FORMAT_TYPE_VOID, FALSE, 0} /* w */
+ },
+ {
+ UTIL_FORMAT_SWIZZLE_X, /* r */
+ UTIL_FORMAT_SWIZZLE_Y, /* g */
+ UTIL_FORMAT_SWIZZLE_Z, /* b */
+ UTIL_FORMAT_SWIZZLE_1 /* a */
+ },
+ UTIL_FORMAT_COLORSPACE_RGB,
+ },
+ {
+ PIPE_FORMAT_NONE,
+ "PIPE_FORMAT_NONE",
+ {0, 0, 0},
+ 0,
+ {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
+ {0, 0, 0, 0},
+ 0
+ },
+};
diff --git a/src/gallium/auxiliary/util/u_format_table.py b/src/gallium/auxiliary/util/u_format_table.py
new file mode 100755
index 0000000000..e94fbbecb3
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_format_table.py
@@ -0,0 +1,212 @@
+#!/usr/bin/env python
+
+'''
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+'''
+
+
+import sys
+
+
+UNSIGNED, SIGNED, FIXED, FLOAT = 'u', 's', 'h', 'f'
+
+
+class Type:
+
+ def __init__(self, kind, norm, size):
+ self.kind = kind
+ self.norm = norm
+ self.size = size
+
+ def __str__(self):
+ s = str(self.kind)
+ if norm:
+ s += 'n'
+ s += str(self.size)
+ return s
+
+
+SCALED, NORM, SRGB = 'scaled', 'norm', 'srgb'
+
+
+class Format:
+
+ def __init__(self, name, layout, block_width, block_height, in_types, out_swizzle, colorspace):
+ self.name = name
+ self.layout = layout
+ self.block_width = block_width
+ self.block_height = block_height
+ self.in_types = in_types
+ self.out_swizzle = out_swizzle
+ self.name = name
+ self.colorspace = colorspace
+
+ def __str__(self):
+ return self.name
+
+ def block_size(self):
+ size = 0
+ for type in self.in_types:
+ size += type.size
+ return size
+
+
+def parse(filename):
+ stream = open(filename)
+ formats = []
+ for line in stream:
+ line = line.rstrip()
+ fields = [field.strip() for field in line.split(',')]
+ name = fields[0]
+ layout = fields[1]
+ block_width, block_height = map(int, fields[2:4])
+ in_types = []
+ for field in fields[4:8]:
+ if field:
+ kind = field[0]
+ if field[1] == 'n':
+ norm = True
+ size = int(field[2:])
+ else:
+ norm = False
+ size = int(field[1:])
+ else:
+ kind = ''
+ norm = False
+ size = 0
+ in_type = Type(kind, norm, size)
+ in_types.append(in_type)
+ out_swizzle = fields[8]
+ colorspace = fields[9]
+ formats.append(Format(name, layout, block_width, block_height, in_types, out_swizzle, colorspace))
+ return formats
+
+
+def layout_map(layout):
+ return 'UTIL_FORMAT_LAYOUT_' + str(layout).upper()
+
+
+layout_channels_map = {
+ 'rgba': 'rgba',
+ 'zs': 'zs',
+ 'yuv': ['y1', 'y2', 'u', 'v'],
+ 'dxt': []
+}
+
+
+kind_map = {
+ '': "UTIL_FORMAT_TYPE_VOID",
+ 'x': "UTIL_FORMAT_TYPE_VOID",
+ UNSIGNED: "UTIL_FORMAT_TYPE_UNSIGNED",
+ SIGNED: "UTIL_FORMAT_TYPE_SIGNED",
+ FIXED: "UTIL_FORMAT_TYPE_FIXED",
+ FLOAT: "UTIL_FORMAT_TYPE_FLOAT",
+}
+
+
+def bool_map(value):
+ if value:
+ return "TRUE"
+ else:
+ return "FALSE"
+
+
+swizzle_map = {
+ 'x': "UTIL_FORMAT_SWIZZLE_X",
+ 'y': "UTIL_FORMAT_SWIZZLE_Y",
+ 'z': "UTIL_FORMAT_SWIZZLE_Z",
+ 'w': "UTIL_FORMAT_SWIZZLE_W",
+ '0': "UTIL_FORMAT_SWIZZLE_0",
+ '1': "UTIL_FORMAT_SWIZZLE_1",
+ '_': "UTIL_FORMAT_SWIZZLE_NONE",
+}
+
+
+def write_format_table(formats):
+ print '/* This file is autogenerated by u_format_table.py from u_format.csv. Do not edit directly. */'
+ print
+ # This will print the copyright message on the top of this file
+ print __doc__.strip()
+ print
+ print '#include "u_format.h"'
+ print
+ print 'const struct util_format_description'
+ print 'util_format_description_table[] = '
+ print "{"
+ for format in formats:
+ print " {"
+ print " %s," % (format.name,)
+ print " \"%s\"," % (format.name,)
+ print " {%u, %u, %u}, /* block */" % (format.block_width, format.block_height, format.block_size())
+ print " %s," % (layout_map(format.layout),)
+ print " {"
+ for i in range(4):
+ type = format.in_types[i]
+ if i < 3:
+ sep = ","
+ else:
+ sep = ""
+ print " {%s, %s, %u}%s /* %s */" % (kind_map[type.kind], bool_map(type.norm), type.size, sep, "xyzw"[i])
+ print " },"
+ print " {"
+ for i in range(4):
+ swizzle = format.out_swizzle[i]
+ if i < 3:
+ sep = ","
+ else:
+ sep = ""
+ try:
+ comment = layout_channels_map[format.layout][i]
+ except:
+ comment = 'ignored'
+ print " %s%s /* %s */" % (swizzle_map[swizzle], sep, comment)
+ print " },"
+ print " UTIL_FORMAT_COLORSPACE_RGB,"
+ print " },"
+ print " {"
+ print " PIPE_FORMAT_NONE,"
+ print " \"PIPE_FORMAT_NONE\","
+ print " {0, 0, 0},"
+ print " 0,"
+ print " {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},"
+ print " {0, 0, 0, 0},"
+ print " 0"
+ print " },"
+ print "};"
+
+
+def main():
+
+ formats = []
+ for arg in sys.argv[1:]:
+ formats.extend(parse(arg))
+ write_format_table(formats)
+
+
+if __name__ == '__main__':
+ main()