diff options
author | José Fonseca <jfonseca@vmware.com> | 2009-07-26 23:50:00 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2009-08-29 09:21:15 +0100 |
commit | 15422b2d99be074e1d6ac064b6f791245975da83 (patch) | |
tree | 44d51409d6c873d603a0b1c7eb3626c5567f8bf0 /src/gallium/auxiliary/util | |
parent | 946f432a08112148d743eb9faf6b27bb8cc7fa76 (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/gallium/auxiliary/util')
-rw-r--r-- | src/gallium/auxiliary/util/Makefile | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/SConscript | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format.c | 46 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format.csv | 99 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format.h | 111 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format_table.c | 1925 | ||||
-rwxr-xr-x | src/gallium/auxiliary/util/u_format_table.py | 212 |
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() |