/* This file is autogenerated by vk_format_table.py from vk_format_layout.csv. Do not edit directly. */

/**************************************************************************
 *
 * Copyright 2010 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 "stdbool.h"
#include "vk_format.h"

static const struct vk_format_description
vk_format_undefined_description = {
   VK_FORMAT_UNDEFINED,
   "VK_FORMAT_UNDEFINED",
   "undefined",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, false, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r4g4_unorm_pack8_description = {
   VK_FORMAT_R4G4_UNORM_PACK8,
   "VK_FORMAT_R4G4_UNORM_PACK8",
   "r4g4_unorm_pack8",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 4},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 4},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r4g4b4a4_unorm_pack16_description = {
   VK_FORMAT_R4G4B4A4_UNORM_PACK16,
   "VK_FORMAT_R4G4B4A4_UNORM_PACK16",
   "r4g4b4a4_unorm_pack16",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 12},	/* x = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 8},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 4},	/* z = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 0}	/* w = r */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 0},	/* x = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 4},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 8},	/* z = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 12}	/* w = r */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_Z,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_X	/* a */
   },
#else
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_Z,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_X	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b4g4r4a4_unorm_pack16_description = {
   VK_FORMAT_B4G4R4A4_UNORM_PACK16,
   "VK_FORMAT_B4G4R4A4_UNORM_PACK16",
   "b4g4r4a4_unorm_pack16",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 12},	/* x = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 8},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 4},	/* z = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 0}	/* w = r */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 0},	/* x = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 4},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 8},	/* z = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 4, 12}	/* w = r */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_X,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_Z	/* a */
   },
#else
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_X,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_Z	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r5g6b5_unorm_pack16_description = {
   VK_FORMAT_R5G6B5_UNORM_PACK16,
   "VK_FORMAT_R5G6B5_UNORM_PACK16",
   "r5g6b5_unorm_pack16",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 11},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 6, 5},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 6, 5},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 11},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b5g6r5_unorm_pack16_description = {
   VK_FORMAT_B5G6R5_UNORM_PACK16,
   "VK_FORMAT_B5G6R5_UNORM_PACK16",
   "b5g6r5_unorm_pack16",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 11},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 6, 5},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 6, 5},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 11},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r5g5b5a1_unorm_pack16_description = {
   VK_FORMAT_R5G5B5A1_UNORM_PACK16,
   "VK_FORMAT_R5G5B5A1_UNORM_PACK16",
   "r5g5b5a1_unorm_pack16",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 1, 15},	/* x = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 10},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 5},	/* z = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 0}	/* w = r */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 1, 0},	/* x = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 1},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 6},	/* z = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 11}	/* w = r */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_Z,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_X	/* a */
   },
#else
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_Z,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_X	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b5g5r5a1_unorm_pack16_description = {
   VK_FORMAT_B5G5R5A1_UNORM_PACK16,
   "VK_FORMAT_B5G5R5A1_UNORM_PACK16",
   "b5g5r5a1_unorm_pack16",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 1, 15},	/* x = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 10},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 5},	/* z = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 0}	/* w = r */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 1, 0},	/* x = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 1},	/* y = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 6},	/* z = a */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 11}	/* w = r */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_X,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_Z	/* a */
   },
#else
   {
      VK_SWIZZLE_W,	/* r */
      VK_SWIZZLE_X,	/* g */
      VK_SWIZZLE_Y,	/* b */
      VK_SWIZZLE_Z	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a1r5g5b5_unorm_pack16_description = {
   VK_FORMAT_A1R5G5B5_UNORM_PACK16,
   "VK_FORMAT_A1R5G5B5_UNORM_PACK16",
   "a1r5g5b5_unorm_pack16",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 11},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 6},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 1},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 1, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 5},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 5, 10},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 1, 15}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8_unorm_description = {
   VK_FORMAT_R8_UNORM,
   "VK_FORMAT_R8_UNORM",
   "r8_unorm",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8_snorm_description = {
   VK_FORMAT_R8_SNORM,
   "VK_FORMAT_R8_SNORM",
   "r8_snorm",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8_uscaled_description = {
   VK_FORMAT_R8_USCALED,
   "VK_FORMAT_R8_USCALED",
   "r8_uscaled",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8_sscaled_description = {
   VK_FORMAT_R8_SSCALED,
   "VK_FORMAT_R8_SSCALED",
   "r8_sscaled",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8_uint_description = {
   VK_FORMAT_R8_UINT,
   "VK_FORMAT_R8_UINT",
   "r8_uint",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8_sint_description = {
   VK_FORMAT_R8_SINT,
   "VK_FORMAT_R8_SINT",
   "r8_sint",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8_srgb_description = {
   VK_FORMAT_R8_SRGB,
   "VK_FORMAT_R8_SRGB",
   "r8_srgb",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_0,	/* sg */
      VK_SWIZZLE_0,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_r8g8_unorm_description = {
   VK_FORMAT_R8G8_UNORM,
   "VK_FORMAT_R8G8_UNORM",
   "r8g8_unorm",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8_snorm_description = {
   VK_FORMAT_R8G8_SNORM,
   "VK_FORMAT_R8G8_SNORM",
   "r8g8_snorm",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8_uscaled_description = {
   VK_FORMAT_R8G8_USCALED,
   "VK_FORMAT_R8G8_USCALED",
   "r8g8_uscaled",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8_sscaled_description = {
   VK_FORMAT_R8G8_SSCALED,
   "VK_FORMAT_R8G8_SSCALED",
   "r8g8_sscaled",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8_uint_description = {
   VK_FORMAT_R8G8_UINT,
   "VK_FORMAT_R8G8_UINT",
   "r8g8_uint",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8_sint_description = {
   VK_FORMAT_R8G8_SINT,
   "VK_FORMAT_R8G8_SINT",
   "r8g8_sint",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8_srgb_description = {
   VK_FORMAT_R8G8_SRGB,
   "VK_FORMAT_R8G8_SRGB",
   "r8g8_srgb",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_0,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_0,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_r8g8b8_unorm_description = {
   VK_FORMAT_R8G8B8_UNORM,
   "VK_FORMAT_R8G8B8_UNORM",
   "r8g8b8_unorm",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8_snorm_description = {
   VK_FORMAT_R8G8B8_SNORM,
   "VK_FORMAT_R8G8B8_SNORM",
   "r8g8b8_snorm",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8_uscaled_description = {
   VK_FORMAT_R8G8B8_USCALED,
   "VK_FORMAT_R8G8B8_USCALED",
   "r8g8b8_uscaled",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8_sscaled_description = {
   VK_FORMAT_R8G8B8_SSCALED,
   "VK_FORMAT_R8G8B8_SSCALED",
   "r8g8b8_sscaled",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8_uint_description = {
   VK_FORMAT_R8G8B8_UINT,
   "VK_FORMAT_R8G8B8_UINT",
   "r8g8b8_uint",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8_sint_description = {
   VK_FORMAT_R8G8B8_SINT,
   "VK_FORMAT_R8G8B8_SINT",
   "r8g8b8_sint",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8_srgb_description = {
   VK_FORMAT_R8G8B8_SRGB,
   "VK_FORMAT_R8G8B8_SRGB",
   "r8g8b8_srgb",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_b8g8r8_unorm_description = {
   VK_FORMAT_B8G8R8_UNORM,
   "VK_FORMAT_B8G8R8_UNORM",
   "b8g8r8_unorm",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8_snorm_description = {
   VK_FORMAT_B8G8R8_SNORM,
   "VK_FORMAT_B8G8R8_SNORM",
   "b8g8r8_snorm",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8_uscaled_description = {
   VK_FORMAT_B8G8R8_USCALED,
   "VK_FORMAT_B8G8R8_USCALED",
   "b8g8r8_uscaled",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8_sscaled_description = {
   VK_FORMAT_B8G8R8_SSCALED,
   "VK_FORMAT_B8G8R8_SSCALED",
   "b8g8r8_sscaled",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8_uint_description = {
   VK_FORMAT_B8G8R8_UINT,
   "VK_FORMAT_B8G8R8_UINT",
   "b8g8r8_uint",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8_sint_description = {
   VK_FORMAT_B8G8R8_SINT,
   "VK_FORMAT_B8G8R8_SINT",
   "b8g8r8_sint",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8_srgb_description = {
   VK_FORMAT_B8G8R8_SRGB,
   "VK_FORMAT_B8G8R8_SRGB",
   "b8g8r8_srgb",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = r */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_X,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_X,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_r8g8b8a8_unorm_description = {
   VK_FORMAT_R8G8B8A8_UNORM,
   "VK_FORMAT_R8G8B8A8_UNORM",
   "r8g8b8a8_unorm",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8a8_snorm_description = {
   VK_FORMAT_R8G8B8A8_SNORM,
   "VK_FORMAT_R8G8B8A8_SNORM",
   "r8g8b8a8_snorm",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8a8_uscaled_description = {
   VK_FORMAT_R8G8B8A8_USCALED,
   "VK_FORMAT_R8G8B8A8_USCALED",
   "r8g8b8a8_uscaled",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8a8_sscaled_description = {
   VK_FORMAT_R8G8B8A8_SSCALED,
   "VK_FORMAT_R8G8B8A8_SSCALED",
   "r8g8b8a8_sscaled",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8a8_uint_description = {
   VK_FORMAT_R8G8B8A8_UINT,
   "VK_FORMAT_R8G8B8A8_UINT",
   "r8g8b8a8_uint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8a8_sint_description = {
   VK_FORMAT_R8G8B8A8_SINT,
   "VK_FORMAT_R8G8B8A8_SINT",
   "r8g8b8a8_sint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r8g8b8a8_srgb_description = {
   VK_FORMAT_R8G8B8A8_SRGB,
   "VK_FORMAT_R8G8B8A8_SRGB",
   "r8g8b8a8_srgb",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_b8g8r8a8_unorm_description = {
   VK_FORMAT_B8G8R8A8_UNORM,
   "VK_FORMAT_B8G8R8A8_UNORM",
   "b8g8r8a8_unorm",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8a8_snorm_description = {
   VK_FORMAT_B8G8R8A8_SNORM,
   "VK_FORMAT_B8G8R8A8_SNORM",
   "b8g8r8a8_snorm",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 24},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8a8_uscaled_description = {
   VK_FORMAT_B8G8R8A8_USCALED,
   "VK_FORMAT_B8G8R8A8_USCALED",
   "b8g8r8a8_uscaled",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 24},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8a8_sscaled_description = {
   VK_FORMAT_B8G8R8A8_SSCALED,
   "VK_FORMAT_B8G8R8A8_SSCALED",
   "b8g8r8a8_sscaled",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 24},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8a8_uint_description = {
   VK_FORMAT_B8G8R8A8_UINT,
   "VK_FORMAT_B8G8R8A8_UINT",
   "b8g8r8a8_uint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 24},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8a8_sint_description = {
   VK_FORMAT_B8G8R8A8_SINT,
   "VK_FORMAT_B8G8R8A8_SINT",
   "b8g8r8a8_sint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 24},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b8g8r8a8_srgb_description = {
   VK_FORMAT_B8G8R8A8_SRGB,
   "VK_FORMAT_B8G8R8A8_SRGB",
   "b8g8r8a8_srgb",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_X,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_X,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_a8b8g8r8_unorm_pack32_description = {
   VK_FORMAT_A8B8G8R8_UNORM_PACK32,
   "VK_FORMAT_A8B8G8R8_UNORM_PACK32",
   "a8b8g8r8_unorm_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a8b8g8r8_snorm_pack32_description = {
   VK_FORMAT_A8B8G8R8_SNORM_PACK32,
   "VK_FORMAT_A8B8G8R8_SNORM_PACK32",
   "a8b8g8r8_snorm_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a8b8g8r8_uscaled_pack32_description = {
   VK_FORMAT_A8B8G8R8_USCALED_PACK32,
   "VK_FORMAT_A8B8G8R8_USCALED_PACK32",
   "a8b8g8r8_uscaled_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a8b8g8r8_sscaled_pack32_description = {
   VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
   "VK_FORMAT_A8B8G8R8_SSCALED_PACK32",
   "a8b8g8r8_sscaled_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a8b8g8r8_uint_pack32_description = {
   VK_FORMAT_A8B8G8R8_UINT_PACK32,
   "VK_FORMAT_A8B8G8R8_UINT_PACK32",
   "a8b8g8r8_uint_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a8b8g8r8_sint_pack32_description = {
   VK_FORMAT_A8B8G8R8_SINT_PACK32,
   "VK_FORMAT_A8B8G8R8_SINT_PACK32",
   "a8b8g8r8_sint_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a8b8g8r8_srgb_pack32_description = {
   VK_FORMAT_A8B8G8R8_SRGB_PACK32,
   "VK_FORMAT_A8B8G8R8_SRGB_PACK32",
   "a8b8g8r8_srgb_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 8},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 8, 24}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_a2r10g10b10_unorm_pack32_description = {
   VK_FORMAT_A2R10G10B10_UNORM_PACK32,
   "VK_FORMAT_A2R10G10B10_UNORM_PACK32",
   "a2r10g10b10_unorm_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 22},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 2},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 20},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2r10g10b10_snorm_pack32_description = {
   VK_FORMAT_A2R10G10B10_SNORM_PACK32,
   "VK_FORMAT_A2R10G10B10_SNORM_PACK32",
   "a2r10g10b10_snorm_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 22},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 2},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 20},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2r10g10b10_uscaled_pack32_description = {
   VK_FORMAT_A2R10G10B10_USCALED_PACK32,
   "VK_FORMAT_A2R10G10B10_USCALED_PACK32",
   "a2r10g10b10_uscaled_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 22},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 2},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 20},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2r10g10b10_sscaled_pack32_description = {
   VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
   "VK_FORMAT_A2R10G10B10_SSCALED_PACK32",
   "a2r10g10b10_sscaled_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 22},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 2},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 20},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2r10g10b10_uint_pack32_description = {
   VK_FORMAT_A2R10G10B10_UINT_PACK32,
   "VK_FORMAT_A2R10G10B10_UINT_PACK32",
   "a2r10g10b10_uint_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 22},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 2},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 0},	/* x = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 20},	/* z = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2r10g10b10_sint_pack32_description = {
   VK_FORMAT_A2R10G10B10_SINT_PACK32,
   "VK_FORMAT_A2R10G10B10_SINT_PACK32",
   "a2r10g10b10_sint_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 22},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 2},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 0},	/* x = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 20},	/* z = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_Z,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_X,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2b10g10r10_unorm_pack32_description = {
   VK_FORMAT_A2B10G10R10_UNORM_PACK32,
   "VK_FORMAT_A2B10G10R10_UNORM_PACK32",
   "a2b10g10r10_unorm_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 22},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 2},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 10, 20},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2b10g10r10_snorm_pack32_description = {
   VK_FORMAT_A2B10G10R10_SNORM_PACK32,
   "VK_FORMAT_A2B10G10R10_SNORM_PACK32",
   "a2b10g10r10_snorm_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 22},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 2},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 10, 20},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2b10g10r10_uscaled_pack32_description = {
   VK_FORMAT_A2B10G10R10_USCALED_PACK32,
   "VK_FORMAT_A2B10G10R10_USCALED_PACK32",
   "a2b10g10r10_uscaled_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 22},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 2},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 10, 20},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2b10g10r10_sscaled_pack32_description = {
   VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
   "VK_FORMAT_A2B10G10R10_SSCALED_PACK32",
   "a2b10g10r10_sscaled_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 22},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 2},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 10, 20},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2b10g10r10_uint_pack32_description = {
   VK_FORMAT_A2B10G10R10_UINT_PACK32,
   "VK_FORMAT_A2B10G10R10_UINT_PACK32",
   "a2b10g10r10_uint_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 22},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 2},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 10, 20},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_a2b10g10r10_sint_pack32_description = {
   VK_FORMAT_A2B10G10R10_SINT_PACK32,
   "VK_FORMAT_A2B10G10R10_SINT_PACK32",
   "a2b10g10r10_sint_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 22},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 12},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 2},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 2, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 10},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 10, 20},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 2, 30}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16_unorm_description = {
   VK_FORMAT_R16_UNORM,
   "VK_FORMAT_R16_UNORM",
   "r16_unorm",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16_snorm_description = {
   VK_FORMAT_R16_SNORM,
   "VK_FORMAT_R16_SNORM",
   "r16_snorm",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16_uscaled_description = {
   VK_FORMAT_R16_USCALED,
   "VK_FORMAT_R16_USCALED",
   "r16_uscaled",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16_sscaled_description = {
   VK_FORMAT_R16_SSCALED,
   "VK_FORMAT_R16_SSCALED",
   "r16_sscaled",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16_uint_description = {
   VK_FORMAT_R16_UINT,
   "VK_FORMAT_R16_UINT",
   "r16_uint",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16_sint_description = {
   VK_FORMAT_R16_SINT,
   "VK_FORMAT_R16_SINT",
   "r16_sint",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16_sfloat_description = {
   VK_FORMAT_R16_SFLOAT,
   "VK_FORMAT_R16_SFLOAT",
   "r16_sfloat",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16_unorm_description = {
   VK_FORMAT_R16G16_UNORM,
   "VK_FORMAT_R16G16_UNORM",
   "r16g16_unorm",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 16},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 16},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16_snorm_description = {
   VK_FORMAT_R16G16_SNORM,
   "VK_FORMAT_R16G16_SNORM",
   "r16g16_snorm",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 16},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 16},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16_uscaled_description = {
   VK_FORMAT_R16G16_USCALED,
   "VK_FORMAT_R16G16_USCALED",
   "r16g16_uscaled",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 16},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 16},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16_sscaled_description = {
   VK_FORMAT_R16G16_SSCALED,
   "VK_FORMAT_R16G16_SSCALED",
   "r16g16_sscaled",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 16},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 16},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16_uint_description = {
   VK_FORMAT_R16G16_UINT,
   "VK_FORMAT_R16G16_UINT",
   "r16g16_uint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 16},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 16},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16_sint_description = {
   VK_FORMAT_R16G16_SINT,
   "VK_FORMAT_R16G16_SINT",
   "r16g16_sint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 16},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 16},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16_sfloat_description = {
   VK_FORMAT_R16G16_SFLOAT,
   "VK_FORMAT_R16G16_SFLOAT",
   "r16g16_sfloat",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 16},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 16},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16_unorm_description = {
   VK_FORMAT_R16G16B16_UNORM,
   "VK_FORMAT_R16G16B16_UNORM",
   "r16g16b16_unorm",
   {1, 1, 48},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 32},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 32},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16_snorm_description = {
   VK_FORMAT_R16G16B16_SNORM,
   "VK_FORMAT_R16G16B16_SNORM",
   "r16g16b16_snorm",
   {1, 1, 48},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 32},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 32},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16_uscaled_description = {
   VK_FORMAT_R16G16B16_USCALED,
   "VK_FORMAT_R16G16B16_USCALED",
   "r16g16b16_uscaled",
   {1, 1, 48},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 32},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 32},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16_sscaled_description = {
   VK_FORMAT_R16G16B16_SSCALED,
   "VK_FORMAT_R16G16B16_SSCALED",
   "r16g16b16_sscaled",
   {1, 1, 48},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 32},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 32},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16_uint_description = {
   VK_FORMAT_R16G16B16_UINT,
   "VK_FORMAT_R16G16B16_UINT",
   "r16g16b16_uint",
   {1, 1, 48},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 32},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 32},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16_sint_description = {
   VK_FORMAT_R16G16B16_SINT,
   "VK_FORMAT_R16G16B16_SINT",
   "r16g16b16_sint",
   {1, 1, 48},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 32},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 32},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16_sfloat_description = {
   VK_FORMAT_R16G16B16_SFLOAT,
   "VK_FORMAT_R16G16B16_SFLOAT",
   "r16g16b16_sfloat",
   {1, 1, 48},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 32},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 32},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16a16_unorm_description = {
   VK_FORMAT_R16G16B16A16_UNORM,
   "VK_FORMAT_R16G16B16A16_UNORM",
   "r16g16b16a16_unorm",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 48},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 32},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 32},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 48}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16a16_snorm_description = {
   VK_FORMAT_R16G16B16A16_SNORM,
   "VK_FORMAT_R16G16B16A16_SNORM",
   "r16g16b16a16_snorm",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 48},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 32},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 32},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, true, false, false, 16, 48}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16a16_uscaled_description = {
   VK_FORMAT_R16G16B16A16_USCALED,
   "VK_FORMAT_R16G16B16A16_USCALED",
   "r16g16b16a16_uscaled",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 48},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 32},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 32},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, false, true, 16, 48}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16a16_sscaled_description = {
   VK_FORMAT_R16G16B16A16_SSCALED,
   "VK_FORMAT_R16G16B16A16_SSCALED",
   "r16g16b16a16_sscaled",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 48},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 32},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 32},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, false, true, 16, 48}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16a16_uint_description = {
   VK_FORMAT_R16G16B16A16_UINT,
   "VK_FORMAT_R16G16B16A16_UINT",
   "r16g16b16a16_uint",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 48},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 32},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 16},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 32},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 16, 48}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16a16_sint_description = {
   VK_FORMAT_R16G16B16A16_SINT,
   "VK_FORMAT_R16G16B16A16_SINT",
   "r16g16b16a16_sint",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 48},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 32},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 16},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 32},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 16, 48}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r16g16b16a16_sfloat_description = {
   VK_FORMAT_R16G16B16A16_SFLOAT,
   "VK_FORMAT_R16G16B16A16_SFLOAT",
   "r16g16b16a16_sfloat",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 48},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 32},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 16},	/* z = b */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 16},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 32},	/* z = b */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 16, 48}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32_uint_description = {
   VK_FORMAT_R32_UINT,
   "VK_FORMAT_R32_UINT",
   "r32_uint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32_sint_description = {
   VK_FORMAT_R32_SINT,
   "VK_FORMAT_R32_SINT",
   "r32_sint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32_sfloat_description = {
   VK_FORMAT_R32_SFLOAT,
   "VK_FORMAT_R32_SFLOAT",
   "r32_sfloat",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32_uint_description = {
   VK_FORMAT_R32G32_UINT,
   "VK_FORMAT_R32G32_UINT",
   "r32g32_uint",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 32},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 32},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32_sint_description = {
   VK_FORMAT_R32G32_SINT,
   "VK_FORMAT_R32G32_SINT",
   "r32g32_sint",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 32},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 32},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32_sfloat_description = {
   VK_FORMAT_R32G32_SFLOAT,
   "VK_FORMAT_R32G32_SFLOAT",
   "r32g32_sfloat",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 32},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 32},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32b32_uint_description = {
   VK_FORMAT_R32G32B32_UINT,
   "VK_FORMAT_R32G32B32_UINT",
   "r32g32b32_uint",
   {1, 1, 96},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 64},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 64},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32b32_sint_description = {
   VK_FORMAT_R32G32B32_SINT,
   "VK_FORMAT_R32G32B32_SINT",
   "r32g32b32_sint",
   {1, 1, 96},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 64},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 64},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32b32_sfloat_description = {
   VK_FORMAT_R32G32B32_SFLOAT,
   "VK_FORMAT_R32G32B32_SFLOAT",
   "r32g32b32_sfloat",
   {1, 1, 96},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 64},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 64},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32b32a32_uint_description = {
   VK_FORMAT_R32G32B32A32_UINT,
   "VK_FORMAT_R32G32B32A32_UINT",
   "r32g32b32a32_uint",
   {1, 1, 128},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 96},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 64},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 32},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 64},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 32, 96}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32b32a32_sint_description = {
   VK_FORMAT_R32G32B32A32_SINT,
   "VK_FORMAT_R32G32B32A32_SINT",
   "r32g32b32a32_sint",
   {1, 1, 128},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 96},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 64},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 32},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 64},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 32, 96}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r32g32b32a32_sfloat_description = {
   VK_FORMAT_R32G32B32A32_SFLOAT,
   "VK_FORMAT_R32G32B32A32_SFLOAT",
   "r32g32b32a32_sfloat",
   {1, 1, 128},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 96},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 64},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 32},	/* z = b */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 32},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 64},	/* z = b */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 96}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64_uint_description = {
   VK_FORMAT_R64_UINT,
   "VK_FORMAT_R64_UINT",
   "r64_uint",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64_sint_description = {
   VK_FORMAT_R64_SINT,
   "VK_FORMAT_R64_SINT",
   "r64_sint",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64_sfloat_description = {
   VK_FORMAT_R64_SFLOAT,
   "VK_FORMAT_R64_SFLOAT",
   "r64_sfloat",
   {1, 1, 64},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 0},	/* x = r */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64_uint_description = {
   VK_FORMAT_R64G64_UINT,
   "VK_FORMAT_R64G64_UINT",
   "r64g64_uint",
   {1, 1, 128},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 64},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 64},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64_sint_description = {
   VK_FORMAT_R64G64_SINT,
   "VK_FORMAT_R64G64_SINT",
   "r64g64_sint",
   {1, 1, 128},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 64},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 64},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64_sfloat_description = {
   VK_FORMAT_R64G64_SFLOAT,
   "VK_FORMAT_R64G64_SFLOAT",
   "r64g64_sfloat",
   {1, 1, 128},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 64},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 0},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 64},	/* y = g */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64b64_uint_description = {
   VK_FORMAT_R64G64B64_UINT,
   "VK_FORMAT_R64G64B64_UINT",
   "r64g64b64_uint",
   {1, 1, 192},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 128},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 128},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64b64_sint_description = {
   VK_FORMAT_R64G64B64_SINT,
   "VK_FORMAT_R64G64B64_SINT",
   "r64g64b64_sint",
   {1, 1, 192},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 128},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 128},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64b64_sfloat_description = {
   VK_FORMAT_R64G64B64_SFLOAT,
   "VK_FORMAT_R64G64B64_SFLOAT",
   "r64g64b64_sfloat",
   {1, 1, 192},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   3,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 128},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 0},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 128},	/* z = b */
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64b64a64_uint_description = {
   VK_FORMAT_R64G64B64A64_UINT,
   "VK_FORMAT_R64G64B64A64_UINT",
   "r64g64b64a64_uint",
   {1, 1, 256},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 192},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 128},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 64},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 128},	/* z = b */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 64, 192}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64b64a64_sint_description = {
   VK_FORMAT_R64G64B64A64_SINT,
   "VK_FORMAT_R64G64B64A64_SINT",
   "r64g64b64a64_sint",
   {1, 1, 256},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 192},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 128},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 64},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 128},	/* z = b */
      {VK_FORMAT_TYPE_SIGNED, false, true, false, 64, 192}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_r64g64b64a64_sfloat_description = {
   VK_FORMAT_R64G64B64A64_SFLOAT,
   "VK_FORMAT_R64G64B64A64_SFLOAT",
   "r64g64b64a64_sfloat",
   {1, 1, 256},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   4,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 192},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 128},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 64},	/* z = b */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 0}	/* w = a */
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 0},	/* x = r */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 64},	/* y = g */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 128},	/* z = b */
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 64, 192}	/* w = a */
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#else
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
#endif
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_b10g11r11_ufloat_pack32_description = {
   VK_FORMAT_B10G11R11_UFLOAT_PACK32,
   "VK_FORMAT_B10G11R11_UFLOAT_PACK32",
   "b10g11r11_ufloat_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_OTHER,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 32, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_e5b9g9r9_ufloat_pack32_description = {
   VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
   "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32",
   "e5b9g9r9_ufloat_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_OTHER,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 32, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_d16_unorm_description = {
   VK_FORMAT_D16_UNORM,
   "VK_FORMAT_D16_UNORM",
   "d16_unorm",
   {1, 1, 16},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* x = z */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_NONE,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
   VK_FORMAT_COLORSPACE_ZS,
};

static const struct vk_format_description
vk_format_x8_d24_unorm_pack32_description = {
   VK_FORMAT_X8_D24_UNORM_PACK32,
   "VK_FORMAT_X8_D24_UNORM_PACK32",
   "x8_d24_unorm_pack32",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 24, 8},	/* x = z */
      {VK_FORMAT_TYPE_VOID, false, false, false, 8, 0},	/* y = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 24, 0},	/* x = z */
      {VK_FORMAT_TYPE_VOID, false, false, false, 8, 24},	/* y = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_NONE,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#else
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_NONE,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#endif
   VK_FORMAT_COLORSPACE_ZS,
};

static const struct vk_format_description
vk_format_d32_sfloat_description = {
   VK_FORMAT_D32_SFLOAT,
   "VK_FORMAT_D32_SFLOAT",
   "d32_sfloat",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* x = z */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_NONE,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
   VK_FORMAT_COLORSPACE_ZS,
};

static const struct vk_format_description
vk_format_s8_uint_description = {
   VK_FORMAT_S8_UINT,
   "VK_FORMAT_S8_UINT",
   "s8_uint",
   {1, 1, 8},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   1,	/* nr_channels */
   true,	/* is_array */
   true,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* x = s */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_NONE,	/* z */
      VK_SWIZZLE_X,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
   VK_FORMAT_COLORSPACE_ZS,
};

static const struct vk_format_description
vk_format_d16_unorm_s8_uint_description = {
   VK_FORMAT_D16_UNORM_S8_UINT,
   "VK_FORMAT_D16_UNORM_S8_UINT",
   "d16_unorm_s8_uint",
   {1, 1, 24},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   true,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 8},	/* x = z */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* y = s */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 16, 0},	/* x = z */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 16},	/* y = s */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_Y,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#else
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_Y,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#endif
   VK_FORMAT_COLORSPACE_ZS,
};

static const struct vk_format_description
vk_format_d24_unorm_s8_uint_description = {
   VK_FORMAT_D24_UNORM_S8_UINT,
   "VK_FORMAT_D24_UNORM_S8_UINT",
   "d24_unorm_s8_uint",
   {1, 1, 32},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   false,	/* is_array */
   true,	/* is_bitmask */
   true,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 24, 8},	/* x = z */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* y = s */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_UNSIGNED, true, false, false, 24, 0},	/* x = z */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 24},	/* y = s */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_Y,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#else
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_Y,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#endif
   VK_FORMAT_COLORSPACE_ZS,
};

static const struct vk_format_description
vk_format_d32_sfloat_s8_uint_description = {
   VK_FORMAT_D32_SFLOAT_S8_UINT,
   "VK_FORMAT_D32_SFLOAT_S8_UINT",
   "d32_sfloat_s8_uint",
   {1, 1, 40},	/* block */
   VK_FORMAT_LAYOUT_PLAIN,
   2,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   true,	/* is_mixed */
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 8},	/* x = z */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 0},	/* y = s */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#else
   {
      {VK_FORMAT_TYPE_FLOAT, false, false, false, 32, 0},	/* x = z */
      {VK_FORMAT_TYPE_UNSIGNED, false, true, false, 8, 32},	/* y = s */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
#endif
#ifdef PIPE_ARCH_BIG_ENDIAN
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_Y,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#else
   {
      VK_SWIZZLE_X,	/* z */
      VK_SWIZZLE_Y,	/* s */
      VK_SWIZZLE_NONE,	/* ignored */
      VK_SWIZZLE_NONE	/* ignored */
   },
#endif
   VK_FORMAT_COLORSPACE_ZS,
};

static const struct vk_format_description
vk_format_bc1_rgb_unorm_block_description = {
   VK_FORMAT_BC1_RGB_UNORM_BLOCK,
   "VK_FORMAT_BC1_RGB_UNORM_BLOCK",
   "bc1_rgb_unorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc1_rgb_srgb_block_description = {
   VK_FORMAT_BC1_RGB_SRGB_BLOCK,
   "VK_FORMAT_BC1_RGB_SRGB_BLOCK",
   "bc1_rgb_srgb_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_bc1_rgba_unorm_block_description = {
   VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
   "VK_FORMAT_BC1_RGBA_UNORM_BLOCK",
   "bc1_rgba_unorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc1_rgba_srgb_block_description = {
   VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
   "VK_FORMAT_BC1_RGBA_SRGB_BLOCK",
   "bc1_rgba_srgb_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_bc2_unorm_block_description = {
   VK_FORMAT_BC2_UNORM_BLOCK,
   "VK_FORMAT_BC2_UNORM_BLOCK",
   "bc2_unorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc2_srgb_block_description = {
   VK_FORMAT_BC2_SRGB_BLOCK,
   "VK_FORMAT_BC2_SRGB_BLOCK",
   "bc2_srgb_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_bc3_unorm_block_description = {
   VK_FORMAT_BC3_UNORM_BLOCK,
   "VK_FORMAT_BC3_UNORM_BLOCK",
   "bc3_unorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc3_srgb_block_description = {
   VK_FORMAT_BC3_SRGB_BLOCK,
   "VK_FORMAT_BC3_SRGB_BLOCK",
   "bc3_srgb_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_S3TC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_bc4_unorm_block_description = {
   VK_FORMAT_BC4_UNORM_BLOCK,
   "VK_FORMAT_BC4_UNORM_BLOCK",
   "bc4_unorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_RGTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc4_snorm_block_description = {
   VK_FORMAT_BC4_SNORM_BLOCK,
   "VK_FORMAT_BC4_SNORM_BLOCK",
   "bc4_snorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_RGTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc5_unorm_block_description = {
   VK_FORMAT_BC5_UNORM_BLOCK,
   "VK_FORMAT_BC5_UNORM_BLOCK",
   "bc5_unorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_RGTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc5_snorm_block_description = {
   VK_FORMAT_BC5_SNORM_BLOCK,
   "VK_FORMAT_BC5_SNORM_BLOCK",
   "bc5_snorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_RGTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc6h_ufloat_block_description = {
   VK_FORMAT_BC6H_UFLOAT_BLOCK,
   "VK_FORMAT_BC6H_UFLOAT_BLOCK",
   "bc6h_ufloat_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_BPTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc6h_sfloat_block_description = {
   VK_FORMAT_BC6H_SFLOAT_BLOCK,
   "VK_FORMAT_BC6H_SFLOAT_BLOCK",
   "bc6h_sfloat_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_BPTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc7_unorm_block_description = {
   VK_FORMAT_BC7_UNORM_BLOCK,
   "VK_FORMAT_BC7_UNORM_BLOCK",
   "bc7_unorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_BPTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_bc7_srgb_block_description = {
   VK_FORMAT_BC7_SRGB_BLOCK,
   "VK_FORMAT_BC7_SRGB_BLOCK",
   "bc7_srgb_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_BPTC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_etc2_r8g8b8_unorm_block_description = {
   VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
   "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK",
   "etc2_r8g8b8_unorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_etc2_r8g8b8_srgb_block_description = {
   VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
   "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK",
   "etc2_r8g8b8_srgb_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_etc2_r8g8b8a1_unorm_block_description = {
   VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
   "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK",
   "etc2_r8g8b8a1_unorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_etc2_r8g8b8a1_srgb_block_description = {
   VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
   "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK",
   "etc2_r8g8b8a1_srgb_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_etc2_r8g8b8a8_unorm_block_description = {
   VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
   "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK",
   "etc2_r8g8b8a8_unorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_Z,	/* b */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_etc2_r8g8b8a8_srgb_block_description = {
   VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
   "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK",
   "etc2_r8g8b8a8_srgb_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* sr */
      VK_SWIZZLE_Y,	/* sg */
      VK_SWIZZLE_Z,	/* sb */
      VK_SWIZZLE_W	/* a */
   },
   VK_FORMAT_COLORSPACE_SRGB,
};

static const struct vk_format_description
vk_format_eac_r11_unorm_block_description = {
   VK_FORMAT_EAC_R11_UNORM_BLOCK,
   "VK_FORMAT_EAC_R11_UNORM_BLOCK",
   "eac_r11_unorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_eac_r11_snorm_block_description = {
   VK_FORMAT_EAC_R11_SNORM_BLOCK,
   "VK_FORMAT_EAC_R11_SNORM_BLOCK",
   "eac_r11_snorm_block",
   {4, 4, 64},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 64, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_0,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_eac_r11g11_unorm_block_description = {
   VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
   "VK_FORMAT_EAC_R11G11_UNORM_BLOCK",
   "eac_r11g11_unorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

static const struct vk_format_description
vk_format_eac_r11g11_snorm_block_description = {
   VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
   "VK_FORMAT_EAC_R11G11_SNORM_BLOCK",
   "eac_r11g11_snorm_block",
   {4, 4, 128},	/* block */
   VK_FORMAT_LAYOUT_ETC,
   1,	/* nr_channels */
   false,	/* is_array */
   false,	/* is_bitmask */
   false,	/* is_mixed */
   {
      {VK_FORMAT_TYPE_VOID, false, false, false, 128, 0},	/* x = x */
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0}
   },
   {
      VK_SWIZZLE_X,	/* r */
      VK_SWIZZLE_Y,	/* g */
      VK_SWIZZLE_0,	/* b */
      VK_SWIZZLE_1	/* a */
   },
   VK_FORMAT_COLORSPACE_RGB,
};

const struct vk_format_description *
vk_format_description(VkFormat format)
{
   if (format > VK_FORMAT_END_RANGE) {
      return NULL;
   }

   switch (format) {
   case VK_FORMAT_UNDEFINED:
      return &vk_format_undefined_description;
   case VK_FORMAT_R4G4_UNORM_PACK8:
      return &vk_format_r4g4_unorm_pack8_description;
   case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
      return &vk_format_r4g4b4a4_unorm_pack16_description;
   case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
      return &vk_format_b4g4r4a4_unorm_pack16_description;
   case VK_FORMAT_R5G6B5_UNORM_PACK16:
      return &vk_format_r5g6b5_unorm_pack16_description;
   case VK_FORMAT_B5G6R5_UNORM_PACK16:
      return &vk_format_b5g6r5_unorm_pack16_description;
   case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
      return &vk_format_r5g5b5a1_unorm_pack16_description;
   case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
      return &vk_format_b5g5r5a1_unorm_pack16_description;
   case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
      return &vk_format_a1r5g5b5_unorm_pack16_description;
   case VK_FORMAT_R8_UNORM:
      return &vk_format_r8_unorm_description;
   case VK_FORMAT_R8_SNORM:
      return &vk_format_r8_snorm_description;
   case VK_FORMAT_R8_USCALED:
      return &vk_format_r8_uscaled_description;
   case VK_FORMAT_R8_SSCALED:
      return &vk_format_r8_sscaled_description;
   case VK_FORMAT_R8_UINT:
      return &vk_format_r8_uint_description;
   case VK_FORMAT_R8_SINT:
      return &vk_format_r8_sint_description;
   case VK_FORMAT_R8_SRGB:
      return &vk_format_r8_srgb_description;
   case VK_FORMAT_R8G8_UNORM:
      return &vk_format_r8g8_unorm_description;
   case VK_FORMAT_R8G8_SNORM:
      return &vk_format_r8g8_snorm_description;
   case VK_FORMAT_R8G8_USCALED:
      return &vk_format_r8g8_uscaled_description;
   case VK_FORMAT_R8G8_SSCALED:
      return &vk_format_r8g8_sscaled_description;
   case VK_FORMAT_R8G8_UINT:
      return &vk_format_r8g8_uint_description;
   case VK_FORMAT_R8G8_SINT:
      return &vk_format_r8g8_sint_description;
   case VK_FORMAT_R8G8_SRGB:
      return &vk_format_r8g8_srgb_description;
   case VK_FORMAT_R8G8B8_UNORM:
      return &vk_format_r8g8b8_unorm_description;
   case VK_FORMAT_R8G8B8_SNORM:
      return &vk_format_r8g8b8_snorm_description;
   case VK_FORMAT_R8G8B8_USCALED:
      return &vk_format_r8g8b8_uscaled_description;
   case VK_FORMAT_R8G8B8_SSCALED:
      return &vk_format_r8g8b8_sscaled_description;
   case VK_FORMAT_R8G8B8_UINT:
      return &vk_format_r8g8b8_uint_description;
   case VK_FORMAT_R8G8B8_SINT:
      return &vk_format_r8g8b8_sint_description;
   case VK_FORMAT_R8G8B8_SRGB:
      return &vk_format_r8g8b8_srgb_description;
   case VK_FORMAT_B8G8R8_UNORM:
      return &vk_format_b8g8r8_unorm_description;
   case VK_FORMAT_B8G8R8_SNORM:
      return &vk_format_b8g8r8_snorm_description;
   case VK_FORMAT_B8G8R8_USCALED:
      return &vk_format_b8g8r8_uscaled_description;
   case VK_FORMAT_B8G8R8_SSCALED:
      return &vk_format_b8g8r8_sscaled_description;
   case VK_FORMAT_B8G8R8_UINT:
      return &vk_format_b8g8r8_uint_description;
   case VK_FORMAT_B8G8R8_SINT:
      return &vk_format_b8g8r8_sint_description;
   case VK_FORMAT_B8G8R8_SRGB:
      return &vk_format_b8g8r8_srgb_description;
   case VK_FORMAT_R8G8B8A8_UNORM:
      return &vk_format_r8g8b8a8_unorm_description;
   case VK_FORMAT_R8G8B8A8_SNORM:
      return &vk_format_r8g8b8a8_snorm_description;
   case VK_FORMAT_R8G8B8A8_USCALED:
      return &vk_format_r8g8b8a8_uscaled_description;
   case VK_FORMAT_R8G8B8A8_SSCALED:
      return &vk_format_r8g8b8a8_sscaled_description;
   case VK_FORMAT_R8G8B8A8_UINT:
      return &vk_format_r8g8b8a8_uint_description;
   case VK_FORMAT_R8G8B8A8_SINT:
      return &vk_format_r8g8b8a8_sint_description;
   case VK_FORMAT_R8G8B8A8_SRGB:
      return &vk_format_r8g8b8a8_srgb_description;
   case VK_FORMAT_B8G8R8A8_UNORM:
      return &vk_format_b8g8r8a8_unorm_description;
   case VK_FORMAT_B8G8R8A8_SNORM:
      return &vk_format_b8g8r8a8_snorm_description;
   case VK_FORMAT_B8G8R8A8_USCALED:
      return &vk_format_b8g8r8a8_uscaled_description;
   case VK_FORMAT_B8G8R8A8_SSCALED:
      return &vk_format_b8g8r8a8_sscaled_description;
   case VK_FORMAT_B8G8R8A8_UINT:
      return &vk_format_b8g8r8a8_uint_description;
   case VK_FORMAT_B8G8R8A8_SINT:
      return &vk_format_b8g8r8a8_sint_description;
   case VK_FORMAT_B8G8R8A8_SRGB:
      return &vk_format_b8g8r8a8_srgb_description;
   case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
      return &vk_format_a8b8g8r8_unorm_pack32_description;
   case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
      return &vk_format_a8b8g8r8_snorm_pack32_description;
   case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
      return &vk_format_a8b8g8r8_uscaled_pack32_description;
   case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
      return &vk_format_a8b8g8r8_sscaled_pack32_description;
   case VK_FORMAT_A8B8G8R8_UINT_PACK32:
      return &vk_format_a8b8g8r8_uint_pack32_description;
   case VK_FORMAT_A8B8G8R8_SINT_PACK32:
      return &vk_format_a8b8g8r8_sint_pack32_description;
   case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
      return &vk_format_a8b8g8r8_srgb_pack32_description;
   case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
      return &vk_format_a2r10g10b10_unorm_pack32_description;
   case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
      return &vk_format_a2r10g10b10_snorm_pack32_description;
   case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
      return &vk_format_a2r10g10b10_uscaled_pack32_description;
   case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
      return &vk_format_a2r10g10b10_sscaled_pack32_description;
   case VK_FORMAT_A2R10G10B10_UINT_PACK32:
      return &vk_format_a2r10g10b10_uint_pack32_description;
   case VK_FORMAT_A2R10G10B10_SINT_PACK32:
      return &vk_format_a2r10g10b10_sint_pack32_description;
   case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
      return &vk_format_a2b10g10r10_unorm_pack32_description;
   case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
      return &vk_format_a2b10g10r10_snorm_pack32_description;
   case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
      return &vk_format_a2b10g10r10_uscaled_pack32_description;
   case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
      return &vk_format_a2b10g10r10_sscaled_pack32_description;
   case VK_FORMAT_A2B10G10R10_UINT_PACK32:
      return &vk_format_a2b10g10r10_uint_pack32_description;
   case VK_FORMAT_A2B10G10R10_SINT_PACK32:
      return &vk_format_a2b10g10r10_sint_pack32_description;
   case VK_FORMAT_R16_UNORM:
      return &vk_format_r16_unorm_description;
   case VK_FORMAT_R16_SNORM:
      return &vk_format_r16_snorm_description;
   case VK_FORMAT_R16_USCALED:
      return &vk_format_r16_uscaled_description;
   case VK_FORMAT_R16_SSCALED:
      return &vk_format_r16_sscaled_description;
   case VK_FORMAT_R16_UINT:
      return &vk_format_r16_uint_description;
   case VK_FORMAT_R16_SINT:
      return &vk_format_r16_sint_description;
   case VK_FORMAT_R16_SFLOAT:
      return &vk_format_r16_sfloat_description;
   case VK_FORMAT_R16G16_UNORM:
      return &vk_format_r16g16_unorm_description;
   case VK_FORMAT_R16G16_SNORM:
      return &vk_format_r16g16_snorm_description;
   case VK_FORMAT_R16G16_USCALED:
      return &vk_format_r16g16_uscaled_description;
   case VK_FORMAT_R16G16_SSCALED:
      return &vk_format_r16g16_sscaled_description;
   case VK_FORMAT_R16G16_UINT:
      return &vk_format_r16g16_uint_description;
   case VK_FORMAT_R16G16_SINT:
      return &vk_format_r16g16_sint_description;
   case VK_FORMAT_R16G16_SFLOAT:
      return &vk_format_r16g16_sfloat_description;
   case VK_FORMAT_R16G16B16_UNORM:
      return &vk_format_r16g16b16_unorm_description;
   case VK_FORMAT_R16G16B16_SNORM:
      return &vk_format_r16g16b16_snorm_description;
   case VK_FORMAT_R16G16B16_USCALED:
      return &vk_format_r16g16b16_uscaled_description;
   case VK_FORMAT_R16G16B16_SSCALED:
      return &vk_format_r16g16b16_sscaled_description;
   case VK_FORMAT_R16G16B16_UINT:
      return &vk_format_r16g16b16_uint_description;
   case VK_FORMAT_R16G16B16_SINT:
      return &vk_format_r16g16b16_sint_description;
   case VK_FORMAT_R16G16B16_SFLOAT:
      return &vk_format_r16g16b16_sfloat_description;
   case VK_FORMAT_R16G16B16A16_UNORM:
      return &vk_format_r16g16b16a16_unorm_description;
   case VK_FORMAT_R16G16B16A16_SNORM:
      return &vk_format_r16g16b16a16_snorm_description;
   case VK_FORMAT_R16G16B16A16_USCALED:
      return &vk_format_r16g16b16a16_uscaled_description;
   case VK_FORMAT_R16G16B16A16_SSCALED:
      return &vk_format_r16g16b16a16_sscaled_description;
   case VK_FORMAT_R16G16B16A16_UINT:
      return &vk_format_r16g16b16a16_uint_description;
   case VK_FORMAT_R16G16B16A16_SINT:
      return &vk_format_r16g16b16a16_sint_description;
   case VK_FORMAT_R16G16B16A16_SFLOAT:
      return &vk_format_r16g16b16a16_sfloat_description;
   case VK_FORMAT_R32_UINT:
      return &vk_format_r32_uint_description;
   case VK_FORMAT_R32_SINT:
      return &vk_format_r32_sint_description;
   case VK_FORMAT_R32_SFLOAT:
      return &vk_format_r32_sfloat_description;
   case VK_FORMAT_R32G32_UINT:
      return &vk_format_r32g32_uint_description;
   case VK_FORMAT_R32G32_SINT:
      return &vk_format_r32g32_sint_description;
   case VK_FORMAT_R32G32_SFLOAT:
      return &vk_format_r32g32_sfloat_description;
   case VK_FORMAT_R32G32B32_UINT:
      return &vk_format_r32g32b32_uint_description;
   case VK_FORMAT_R32G32B32_SINT:
      return &vk_format_r32g32b32_sint_description;
   case VK_FORMAT_R32G32B32_SFLOAT:
      return &vk_format_r32g32b32_sfloat_description;
   case VK_FORMAT_R32G32B32A32_UINT:
      return &vk_format_r32g32b32a32_uint_description;
   case VK_FORMAT_R32G32B32A32_SINT:
      return &vk_format_r32g32b32a32_sint_description;
   case VK_FORMAT_R32G32B32A32_SFLOAT:
      return &vk_format_r32g32b32a32_sfloat_description;
   case VK_FORMAT_R64_UINT:
      return &vk_format_r64_uint_description;
   case VK_FORMAT_R64_SINT:
      return &vk_format_r64_sint_description;
   case VK_FORMAT_R64_SFLOAT:
      return &vk_format_r64_sfloat_description;
   case VK_FORMAT_R64G64_UINT:
      return &vk_format_r64g64_uint_description;
   case VK_FORMAT_R64G64_SINT:
      return &vk_format_r64g64_sint_description;
   case VK_FORMAT_R64G64_SFLOAT:
      return &vk_format_r64g64_sfloat_description;
   case VK_FORMAT_R64G64B64_UINT:
      return &vk_format_r64g64b64_uint_description;
   case VK_FORMAT_R64G64B64_SINT:
      return &vk_format_r64g64b64_sint_description;
   case VK_FORMAT_R64G64B64_SFLOAT:
      return &vk_format_r64g64b64_sfloat_description;
   case VK_FORMAT_R64G64B64A64_UINT:
      return &vk_format_r64g64b64a64_uint_description;
   case VK_FORMAT_R64G64B64A64_SINT:
      return &vk_format_r64g64b64a64_sint_description;
   case VK_FORMAT_R64G64B64A64_SFLOAT:
      return &vk_format_r64g64b64a64_sfloat_description;
   case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
      return &vk_format_b10g11r11_ufloat_pack32_description;
   case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
      return &vk_format_e5b9g9r9_ufloat_pack32_description;
   case VK_FORMAT_D16_UNORM:
      return &vk_format_d16_unorm_description;
   case VK_FORMAT_X8_D24_UNORM_PACK32:
      return &vk_format_x8_d24_unorm_pack32_description;
   case VK_FORMAT_D32_SFLOAT:
      return &vk_format_d32_sfloat_description;
   case VK_FORMAT_S8_UINT:
      return &vk_format_s8_uint_description;
   case VK_FORMAT_D16_UNORM_S8_UINT:
      return &vk_format_d16_unorm_s8_uint_description;
   case VK_FORMAT_D24_UNORM_S8_UINT:
      return &vk_format_d24_unorm_s8_uint_description;
   case VK_FORMAT_D32_SFLOAT_S8_UINT:
      return &vk_format_d32_sfloat_s8_uint_description;
   case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
      return &vk_format_bc1_rgb_unorm_block_description;
   case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
      return &vk_format_bc1_rgb_srgb_block_description;
   case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
      return &vk_format_bc1_rgba_unorm_block_description;
   case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
      return &vk_format_bc1_rgba_srgb_block_description;
   case VK_FORMAT_BC2_UNORM_BLOCK:
      return &vk_format_bc2_unorm_block_description;
   case VK_FORMAT_BC2_SRGB_BLOCK:
      return &vk_format_bc2_srgb_block_description;
   case VK_FORMAT_BC3_UNORM_BLOCK:
      return &vk_format_bc3_unorm_block_description;
   case VK_FORMAT_BC3_SRGB_BLOCK:
      return &vk_format_bc3_srgb_block_description;
   case VK_FORMAT_BC4_UNORM_BLOCK:
      return &vk_format_bc4_unorm_block_description;
   case VK_FORMAT_BC4_SNORM_BLOCK:
      return &vk_format_bc4_snorm_block_description;
   case VK_FORMAT_BC5_UNORM_BLOCK:
      return &vk_format_bc5_unorm_block_description;
   case VK_FORMAT_BC5_SNORM_BLOCK:
      return &vk_format_bc5_snorm_block_description;
   case VK_FORMAT_BC6H_UFLOAT_BLOCK:
      return &vk_format_bc6h_ufloat_block_description;
   case VK_FORMAT_BC6H_SFLOAT_BLOCK:
      return &vk_format_bc6h_sfloat_block_description;
   case VK_FORMAT_BC7_UNORM_BLOCK:
      return &vk_format_bc7_unorm_block_description;
   case VK_FORMAT_BC7_SRGB_BLOCK:
      return &vk_format_bc7_srgb_block_description;
   case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
      return &vk_format_etc2_r8g8b8_unorm_block_description;
   case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
      return &vk_format_etc2_r8g8b8_srgb_block_description;
   case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
      return &vk_format_etc2_r8g8b8a1_unorm_block_description;
   case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
      return &vk_format_etc2_r8g8b8a1_srgb_block_description;
   case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
      return &vk_format_etc2_r8g8b8a8_unorm_block_description;
   case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
      return &vk_format_etc2_r8g8b8a8_srgb_block_description;
   case VK_FORMAT_EAC_R11_UNORM_BLOCK:
      return &vk_format_eac_r11_unorm_block_description;
   case VK_FORMAT_EAC_R11_SNORM_BLOCK:
      return &vk_format_eac_r11_snorm_block_description;
   case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
      return &vk_format_eac_r11g11_unorm_block_description;
   case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
      return &vk_format_eac_r11g11_snorm_block_description;
   default:
      return NULL;
   }
}

