Linux Audio

Check our new training course

Loading...
v4.6
   1/**************************************************************************
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   2 *
   3 * Copyright © 2008-2015 VMware, Inc., Palo Alto, CA., USA
   4 * All Rights Reserved.
   5 *
   6 * Permission is hereby granted, free of charge, to any person obtaining a
   7 * copy of this software and associated documentation files (the
   8 * "Software"), to deal in the Software without restriction, including
   9 * without limitation the rights to use, copy, modify, merge, publish,
  10 * distribute, sub license, and/or sell copies of the Software, and to
  11 * permit persons to whom the Software is furnished to do so, subject to
  12 * the following conditions:
  13 *
  14 * The above copyright notice and this permission notice (including the
  15 * next paragraph) shall be included in all copies or substantial portions
  16 * of the Software.
  17 *
  18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
  21 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
  22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  24 * USE OR OTHER DEALINGS IN THE SOFTWARE.
  25 *
  26 **************************************************************************/
  27
  28#include <linux/kernel.h>
  29
  30#ifdef __KERNEL__
  31
  32#include <drm/vmwgfx_drm.h>
  33#define surf_size_struct struct drm_vmw_size
 
 
 
  34
  35#else /* __KERNEL__ */
  36
  37#ifndef ARRAY_SIZE
  38#define ARRAY_SIZE(_A) (sizeof(_A) / sizeof((_A)[0]))
  39#endif /* ARRAY_SIZE */
  40
  41#define max_t(type, x, y)  ((x) > (y) ? (x) : (y))
  42#define surf_size_struct SVGA3dSize
  43#define u32 uint32
  44
  45#endif /* __KERNEL__ */
  46
  47#include "svga3d_reg.h"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  48
  49/*
  50 * enum svga3d_block_desc describes the active data channels in a block.
  51 *
  52 * There can be at-most four active channels in a block:
  53 *    1. Red, bump W, luminance and depth are stored in the first channel.
  54 *    2. Green, bump V and stencil are stored in the second channel.
  55 *    3. Blue and bump U are stored in the third channel.
  56 *    4. Alpha and bump Q are stored in the fourth channel.
  57 *
  58 * Block channels can be used to store compressed and buffer data:
  59 *    1. For compressed formats, only the data channel is used and its size
  60 *       is equal to that of a singular block in the compression scheme.
  61 *    2. For buffer formats, only the data channel is used and its size is
  62 *       exactly one byte in length.
  63 *    3. In each case the bit depth represent the size of a singular block.
  64 *
  65 * Note: Compressed and IEEE formats do not use the bitMask structure.
  66 */
  67
  68enum svga3d_block_desc {
  69	SVGA3DBLOCKDESC_NONE        = 0,         /* No channels are active */
  70	SVGA3DBLOCKDESC_BLUE        = 1 << 0,    /* Block with red channel
  71						    data */
  72	SVGA3DBLOCKDESC_U           = 1 << 0,    /* Block with bump U channel
  73						    data */
  74	SVGA3DBLOCKDESC_UV_VIDEO    = 1 << 7,    /* Block with alternating video
  75						    U and V */
  76	SVGA3DBLOCKDESC_GREEN       = 1 << 1,    /* Block with green channel
  77						    data */
  78	SVGA3DBLOCKDESC_V           = 1 << 1,    /* Block with bump V channel
  79						    data */
  80	SVGA3DBLOCKDESC_STENCIL     = 1 << 1,    /* Block with a stencil
  81						    channel */
  82	SVGA3DBLOCKDESC_RED         = 1 << 2,    /* Block with blue channel
  83						    data */
  84	SVGA3DBLOCKDESC_W           = 1 << 2,    /* Block with bump W channel
  85						    data */
  86	SVGA3DBLOCKDESC_LUMINANCE   = 1 << 2,    /* Block with luminance channel
  87						    data */
  88	SVGA3DBLOCKDESC_Y           = 1 << 2,    /* Block with video luminance
  89						    data */
  90	SVGA3DBLOCKDESC_DEPTH       = 1 << 2,    /* Block with depth channel */
  91	SVGA3DBLOCKDESC_ALPHA       = 1 << 3,    /* Block with an alpha
  92						    channel */
  93	SVGA3DBLOCKDESC_Q           = 1 << 3,    /* Block with bump Q channel
  94						    data */
  95	SVGA3DBLOCKDESC_BUFFER      = 1 << 4,    /* Block stores 1 byte of
  96						    data */
  97	SVGA3DBLOCKDESC_COMPRESSED  = 1 << 5,    /* Block stores n bytes of
  98						    data depending on the
  99						    compression method used */
 100	SVGA3DBLOCKDESC_IEEE_FP     = 1 << 6,    /* Block stores data in an IEEE
 101						    floating point
 102						    representation in
 103						    all channels */
 104	SVGA3DBLOCKDESC_PLANAR_YUV  = 1 << 8,    /* Three separate blocks store
 105						    data. */
 106	SVGA3DBLOCKDESC_U_VIDEO     = 1 << 9,    /* Block with U video data */
 107	SVGA3DBLOCKDESC_V_VIDEO     = 1 << 10,   /* Block with V video data */
 108	SVGA3DBLOCKDESC_EXP         = 1 << 11,   /* Shared exponent */
 109	SVGA3DBLOCKDESC_SRGB        = 1 << 12,   /* Data is in sRGB format */
 110	SVGA3DBLOCKDESC_2PLANAR_YUV = 1 << 13,   /* 2 planes of Y, UV,
 111						    e.g., NV12. */
 112	SVGA3DBLOCKDESC_3PLANAR_YUV = 1 << 14,   /* 3 planes of separate
 113						    Y, U, V, e.g., YV12. */
 114
 115	SVGA3DBLOCKDESC_RG         = SVGA3DBLOCKDESC_RED |
 116	SVGA3DBLOCKDESC_GREEN,
 117	SVGA3DBLOCKDESC_RGB        = SVGA3DBLOCKDESC_RG |
 118	SVGA3DBLOCKDESC_BLUE,
 119	SVGA3DBLOCKDESC_RGB_SRGB   = SVGA3DBLOCKDESC_RGB |
 120	SVGA3DBLOCKDESC_SRGB,
 121	SVGA3DBLOCKDESC_RGBA       = SVGA3DBLOCKDESC_RGB |
 122	SVGA3DBLOCKDESC_ALPHA,
 123	SVGA3DBLOCKDESC_RGBA_SRGB  = SVGA3DBLOCKDESC_RGBA |
 124	SVGA3DBLOCKDESC_SRGB,
 125	SVGA3DBLOCKDESC_UV         = SVGA3DBLOCKDESC_U |
 126	SVGA3DBLOCKDESC_V,
 127	SVGA3DBLOCKDESC_UVL        = SVGA3DBLOCKDESC_UV |
 128	SVGA3DBLOCKDESC_LUMINANCE,
 129	SVGA3DBLOCKDESC_UVW        = SVGA3DBLOCKDESC_UV |
 130	SVGA3DBLOCKDESC_W,
 131	SVGA3DBLOCKDESC_UVWA       = SVGA3DBLOCKDESC_UVW |
 132	SVGA3DBLOCKDESC_ALPHA,
 133	SVGA3DBLOCKDESC_UVWQ       = SVGA3DBLOCKDESC_U |
 134	SVGA3DBLOCKDESC_V |
 135	SVGA3DBLOCKDESC_W |
 136	SVGA3DBLOCKDESC_Q,
 137	SVGA3DBLOCKDESC_LA         = SVGA3DBLOCKDESC_LUMINANCE |
 138	SVGA3DBLOCKDESC_ALPHA,
 139	SVGA3DBLOCKDESC_R_FP       = SVGA3DBLOCKDESC_RED |
 140	SVGA3DBLOCKDESC_IEEE_FP,
 141	SVGA3DBLOCKDESC_RG_FP      = SVGA3DBLOCKDESC_R_FP |
 142	SVGA3DBLOCKDESC_GREEN,
 143	SVGA3DBLOCKDESC_RGB_FP     = SVGA3DBLOCKDESC_RG_FP |
 144	SVGA3DBLOCKDESC_BLUE,
 145	SVGA3DBLOCKDESC_RGBA_FP    = SVGA3DBLOCKDESC_RGB_FP |
 146	SVGA3DBLOCKDESC_ALPHA,
 147	SVGA3DBLOCKDESC_DS         = SVGA3DBLOCKDESC_DEPTH |
 148	SVGA3DBLOCKDESC_STENCIL,
 149	SVGA3DBLOCKDESC_YUV        = SVGA3DBLOCKDESC_UV_VIDEO |
 150	SVGA3DBLOCKDESC_Y,
 151	SVGA3DBLOCKDESC_AYUV       = SVGA3DBLOCKDESC_ALPHA |
 152	SVGA3DBLOCKDESC_Y |
 153	SVGA3DBLOCKDESC_U_VIDEO |
 154	SVGA3DBLOCKDESC_V_VIDEO,
 155	SVGA3DBLOCKDESC_RGBE       = SVGA3DBLOCKDESC_RGB |
 156	SVGA3DBLOCKDESC_EXP,
 157	SVGA3DBLOCKDESC_COMPRESSED_SRGB = SVGA3DBLOCKDESC_COMPRESSED |
 158	SVGA3DBLOCKDESC_SRGB,
 159	SVGA3DBLOCKDESC_NV12       = SVGA3DBLOCKDESC_PLANAR_YUV |
 160	SVGA3DBLOCKDESC_2PLANAR_YUV,
 161	SVGA3DBLOCKDESC_YV12       = SVGA3DBLOCKDESC_PLANAR_YUV |
 162	SVGA3DBLOCKDESC_3PLANAR_YUV,
 163};
 164
 165/*
 166 * SVGA3dSurfaceDesc describes the actual pixel data.
 167 *
 168 * This structure provides the following information:
 169 *    1. Block description.
 170 *    2. Dimensions of a block in the surface.
 171 *    3. Size of block in bytes.
 172 *    4. Bit depth of the pixel data.
 173 *    5. Channel bit depths and masks (if applicable).
 174 */
 175struct svga3d_channel_def {
 176	union {
 177		u8 blue;
 178		u8 u;
 179		u8 uv_video;
 180		u8 u_video;
 
 181	};
 182	union {
 183		u8 green;
 184		u8 v;
 185		u8 stencil;
 186		u8 v_video;
 187	};
 188	union {
 189		u8 red;
 190		u8 w;
 191		u8 luminance;
 192		u8 y;
 193		u8 depth;
 194		u8 data;
 195	};
 196	union {
 197		u8 alpha;
 198		u8 q;
 199		u8 exp;
 200	};
 201};
 202
 203struct svga3d_surface_desc {
 204	SVGA3dSurfaceFormat format;
 205	enum svga3d_block_desc block_desc;
 206	surf_size_struct block_size;
 207	u32 bytes_per_block;
 208	u32 pitch_bytes_per_block;
 209
 210	u32 total_bit_depth;
 211	struct svga3d_channel_def bit_depth;
 212	struct svga3d_channel_def bit_offset;
 213};
 214
 215static const struct svga3d_surface_desc svga3d_surface_descs[] = {
 216   {SVGA3D_FORMAT_INVALID, SVGA3DBLOCKDESC_NONE,
 217      {1, 1, 1},  0, 0,
 218      0, {{0}, {0}, {0}, {0}},
 219      {{0}, {0}, {0}, {0}}},
 220
 221   {SVGA3D_X8R8G8B8, SVGA3DBLOCKDESC_RGB,
 222      {1, 1, 1},  4, 4,
 223      24, {{8}, {8}, {8}, {0}},
 224      {{0}, {8}, {16}, {24}}},
 225
 226   {SVGA3D_A8R8G8B8, SVGA3DBLOCKDESC_RGBA,
 227      {1, 1, 1},  4, 4,
 228      32, {{8}, {8}, {8}, {8}},
 229      {{0}, {8}, {16}, {24}}},
 230
 231   {SVGA3D_R5G6B5, SVGA3DBLOCKDESC_RGB,
 232      {1, 1, 1},  2, 2,
 233      16, {{5}, {6}, {5}, {0}},
 234      {{0}, {5}, {11}, {0}}},
 235
 236   {SVGA3D_X1R5G5B5, SVGA3DBLOCKDESC_RGB,
 237      {1, 1, 1},  2, 2,
 238      15, {{5}, {5}, {5}, {0}},
 239      {{0}, {5}, {10}, {0}}},
 240
 241   {SVGA3D_A1R5G5B5, SVGA3DBLOCKDESC_RGBA,
 242      {1, 1, 1},  2, 2,
 243      16, {{5}, {5}, {5}, {1}},
 244      {{0}, {5}, {10}, {15}}},
 245
 246   {SVGA3D_A4R4G4B4, SVGA3DBLOCKDESC_RGBA,
 247      {1, 1, 1},  2, 2,
 248      16, {{4}, {4}, {4}, {4}},
 249      {{0}, {4}, {8}, {12}}},
 250
 251   {SVGA3D_Z_D32, SVGA3DBLOCKDESC_DEPTH,
 252      {1, 1, 1},  4, 4,
 253      32, {{0}, {0}, {32}, {0}},
 254      {{0}, {0}, {0}, {0}}},
 255
 256   {SVGA3D_Z_D16, SVGA3DBLOCKDESC_DEPTH,
 257      {1, 1, 1},  2, 2,
 258      16, {{0}, {0}, {16}, {0}},
 259      {{0}, {0}, {0}, {0}}},
 260
 261   {SVGA3D_Z_D24S8, SVGA3DBLOCKDESC_DS,
 262      {1, 1, 1},  4, 4,
 263      32, {{0}, {8}, {24}, {0}},
 264      {{0}, {24}, {0}, {0}}},
 265
 266   {SVGA3D_Z_D15S1, SVGA3DBLOCKDESC_DS,
 267      {1, 1, 1},  2, 2,
 268      16, {{0}, {1}, {15}, {0}},
 269      {{0}, {15}, {0}, {0}}},
 270
 271   {SVGA3D_LUMINANCE8, SVGA3DBLOCKDESC_LUMINANCE,
 272      {1, 1, 1},  1, 1,
 273      8, {{0}, {0}, {8}, {0}},
 274      {{0}, {0}, {0}, {0}}},
 275
 276   {SVGA3D_LUMINANCE4_ALPHA4, SVGA3DBLOCKDESC_LA,
 277    {1  , 1, 1},  1, 1,
 278      8, {{0}, {0}, {4}, {4}},
 279      {{0}, {0}, {0}, {4}}},
 280
 281   {SVGA3D_LUMINANCE16, SVGA3DBLOCKDESC_LUMINANCE,
 282      {1, 1, 1},  2, 2,
 283      16, {{0}, {0}, {16}, {0}},
 284      {{0}, {0}, {0}, {0}}},
 285
 286   {SVGA3D_LUMINANCE8_ALPHA8, SVGA3DBLOCKDESC_LA,
 287      {1, 1, 1},  2, 2,
 288      16, {{0}, {0}, {8}, {8}},
 289      {{0}, {0}, {0}, {8}}},
 290
 291   {SVGA3D_DXT1, SVGA3DBLOCKDESC_COMPRESSED,
 292      {4, 4, 1},  8, 8,
 293      64, {{0}, {0}, {64}, {0}},
 294      {{0}, {0}, {0}, {0}}},
 295
 296   {SVGA3D_DXT2, SVGA3DBLOCKDESC_COMPRESSED,
 297      {4, 4, 1},  16, 16,
 298      128, {{0}, {0}, {128}, {0}},
 299      {{0}, {0}, {0}, {0}}},
 300
 301   {SVGA3D_DXT3, SVGA3DBLOCKDESC_COMPRESSED,
 302      {4, 4, 1},  16, 16,
 303      128, {{0}, {0}, {128}, {0}},
 304      {{0}, {0}, {0}, {0}}},
 305
 306   {SVGA3D_DXT4, SVGA3DBLOCKDESC_COMPRESSED,
 307      {4, 4, 1},  16, 16,
 308      128, {{0}, {0}, {128}, {0}},
 309      {{0}, {0}, {0}, {0}}},
 310
 311   {SVGA3D_DXT5, SVGA3DBLOCKDESC_COMPRESSED,
 312      {4, 4, 1},  16, 16,
 313      128, {{0}, {0}, {128}, {0}},
 314      {{0}, {0}, {0}, {0}}},
 315
 316   {SVGA3D_BUMPU8V8, SVGA3DBLOCKDESC_UV,
 317      {1, 1, 1},  2, 2,
 318      16, {{0}, {0}, {8}, {8}},
 319      {{0}, {0}, {0}, {8}}},
 320
 321   {SVGA3D_BUMPL6V5U5, SVGA3DBLOCKDESC_UVL,
 322      {1, 1, 1},  2, 2,
 323      16, {{5}, {5}, {6}, {0}},
 324      {{11}, {6}, {0}, {0}}},
 325
 326   {SVGA3D_BUMPX8L8V8U8, SVGA3DBLOCKDESC_UVL,
 327      {1, 1, 1},  4, 4,
 328      32, {{8}, {8}, {8}, {0}},
 329      {{16}, {8}, {0}, {0}}},
 330
 331   {SVGA3D_BUMPL8V8U8, SVGA3DBLOCKDESC_UVL,
 332      {1, 1, 1},  3, 3,
 333      24, {{8}, {8}, {8}, {0}},
 334      {{16}, {8}, {0}, {0}}},
 335
 336   {SVGA3D_ARGB_S10E5, SVGA3DBLOCKDESC_RGBA_FP,
 337      {1, 1, 1},  8, 8,
 338      64, {{16}, {16}, {16}, {16}},
 339      {{32}, {16}, {0}, {48}}},
 340
 341   {SVGA3D_ARGB_S23E8, SVGA3DBLOCKDESC_RGBA_FP,
 342      {1, 1, 1},  16, 16,
 343      128, {{32}, {32}, {32}, {32}},
 344      {{64}, {32}, {0}, {96}}},
 345
 346   {SVGA3D_A2R10G10B10, SVGA3DBLOCKDESC_RGBA,
 347      {1, 1, 1},  4, 4,
 348      32, {{10}, {10}, {10}, {2}},
 349      {{0}, {10}, {20}, {30}}},
 350
 351   {SVGA3D_V8U8, SVGA3DBLOCKDESC_UV,
 352      {1, 1, 1},  2, 2,
 353      16, {{8}, {8}, {0}, {0}},
 354      {{8}, {0}, {0}, {0}}},
 355
 356   {SVGA3D_Q8W8V8U8, SVGA3DBLOCKDESC_UVWQ,
 357      {1, 1, 1},  4, 4,
 358      32, {{8}, {8}, {8}, {8}},
 359      {{24}, {16}, {8}, {0}}},
 360
 361   {SVGA3D_CxV8U8, SVGA3DBLOCKDESC_UV,
 362      {1, 1, 1},  2, 2,
 363      16, {{8}, {8}, {0}, {0}},
 364      {{8}, {0}, {0}, {0}}},
 365
 366   {SVGA3D_X8L8V8U8, SVGA3DBLOCKDESC_UVL,
 367      {1, 1, 1},  4, 4,
 368      24, {{8}, {8}, {8}, {0}},
 369      {{16}, {8}, {0}, {0}}},
 370
 371   {SVGA3D_A2W10V10U10, SVGA3DBLOCKDESC_UVWA,
 372      {1, 1, 1},  4, 4,
 373      32, {{10}, {10}, {10}, {2}},
 374      {{0}, {10}, {20}, {30}}},
 375
 376   {SVGA3D_ALPHA8, SVGA3DBLOCKDESC_ALPHA,
 377      {1, 1, 1},  1, 1,
 378      8, {{0}, {0}, {0}, {8}},
 379      {{0}, {0}, {0}, {0}}},
 380
 381   {SVGA3D_R_S10E5, SVGA3DBLOCKDESC_R_FP,
 382      {1, 1, 1},  2, 2,
 383      16, {{0}, {0}, {16}, {0}},
 384      {{0}, {0}, {0}, {0}}},
 385
 386   {SVGA3D_R_S23E8, SVGA3DBLOCKDESC_R_FP,
 387      {1, 1, 1},  4, 4,
 388      32, {{0}, {0}, {32}, {0}},
 389      {{0}, {0}, {0}, {0}}},
 390
 391   {SVGA3D_RG_S10E5, SVGA3DBLOCKDESC_RG_FP,
 392      {1, 1, 1},  4, 4,
 393      32, {{0}, {16}, {16}, {0}},
 394      {{0}, {16}, {0}, {0}}},
 395
 396   {SVGA3D_RG_S23E8, SVGA3DBLOCKDESC_RG_FP,
 397      {1, 1, 1},  8, 8,
 398      64, {{0}, {32}, {32}, {0}},
 399      {{0}, {32}, {0}, {0}}},
 400
 401   {SVGA3D_BUFFER, SVGA3DBLOCKDESC_BUFFER,
 402      {1, 1, 1},  1, 1,
 403      8, {{0}, {0}, {8}, {0}},
 404      {{0}, {0}, {0}, {0}}},
 405
 406   {SVGA3D_Z_D24X8, SVGA3DBLOCKDESC_DEPTH,
 407      {1, 1, 1},  4, 4,
 408      32, {{0}, {0}, {24}, {0}},
 409      {{0}, {24}, {0}, {0}}},
 410
 411   {SVGA3D_V16U16, SVGA3DBLOCKDESC_UV,
 412      {1, 1, 1},  4, 4,
 413      32, {{16}, {16}, {0}, {0}},
 414      {{16}, {0}, {0}, {0}}},
 415
 416   {SVGA3D_G16R16, SVGA3DBLOCKDESC_RG,
 417      {1, 1, 1},  4, 4,
 418      32, {{0}, {16}, {16}, {0}},
 419      {{0}, {0}, {16}, {0}}},
 420
 421   {SVGA3D_A16B16G16R16, SVGA3DBLOCKDESC_RGBA,
 422      {1, 1, 1},  8, 8,
 423      64, {{16}, {16}, {16}, {16}},
 424      {{32}, {16}, {0}, {48}}},
 425
 426   {SVGA3D_UYVY, SVGA3DBLOCKDESC_YUV,
 427      {1, 1, 1},  2, 2,
 428      16, {{8}, {0}, {8}, {0}},
 429      {{0}, {0}, {8}, {0}}},
 430
 431   {SVGA3D_YUY2, SVGA3DBLOCKDESC_YUV,
 432      {1, 1, 1},  2, 2,
 433      16, {{8}, {0}, {8}, {0}},
 434      {{8}, {0}, {0}, {0}}},
 435
 436   {SVGA3D_NV12, SVGA3DBLOCKDESC_NV12,
 437      {2, 2, 1},  6, 2,
 438      48, {{0}, {0}, {48}, {0}},
 439      {{0}, {0}, {0}, {0}}},
 440
 441   {SVGA3D_AYUV, SVGA3DBLOCKDESC_AYUV,
 442      {1, 1, 1},  4, 4,
 443      32, {{8}, {8}, {8}, {8}},
 444      {{0}, {8}, {16}, {24}}},
 445
 446   {SVGA3D_R32G32B32A32_TYPELESS, SVGA3DBLOCKDESC_RGBA,
 447      {1, 1, 1},  16, 16,
 448      128, {{32}, {32}, {32}, {32}},
 449      {{64}, {32}, {0}, {96}}},
 450
 451   {SVGA3D_R32G32B32A32_UINT, SVGA3DBLOCKDESC_RGBA,
 452      {1, 1, 1},  16, 16,
 453      128, {{32}, {32}, {32}, {32}},
 454      {{64}, {32}, {0}, {96}}},
 455
 456   {SVGA3D_R32G32B32A32_SINT, SVGA3DBLOCKDESC_UVWQ,
 457      {1, 1, 1},  16, 16,
 458      128, {{32}, {32}, {32}, {32}},
 459      {{64}, {32}, {0}, {96}}},
 460
 461   {SVGA3D_R32G32B32_TYPELESS, SVGA3DBLOCKDESC_RGB,
 462      {1, 1, 1},  12, 12,
 463      96, {{32}, {32}, {32}, {0}},
 464      {{64}, {32}, {0}, {0}}},
 465
 466   {SVGA3D_R32G32B32_FLOAT, SVGA3DBLOCKDESC_RGB_FP,
 467      {1, 1, 1},  12, 12,
 468      96, {{32}, {32}, {32}, {0}},
 469      {{64}, {32}, {0}, {0}}},
 470
 471   {SVGA3D_R32G32B32_UINT, SVGA3DBLOCKDESC_RGB,
 472      {1, 1, 1},  12, 12,
 473      96, {{32}, {32}, {32}, {0}},
 474      {{64}, {32}, {0}, {0}}},
 475
 476   {SVGA3D_R32G32B32_SINT, SVGA3DBLOCKDESC_UVW,
 477      {1, 1, 1},  12, 12,
 478      96, {{32}, {32}, {32}, {0}},
 479      {{64}, {32}, {0}, {0}}},
 480
 481   {SVGA3D_R16G16B16A16_TYPELESS, SVGA3DBLOCKDESC_RGBA,
 482      {1, 1, 1},  8, 8,
 483      64, {{16}, {16}, {16}, {16}},
 484      {{32}, {16}, {0}, {48}}},
 485
 486   {SVGA3D_R16G16B16A16_UINT, SVGA3DBLOCKDESC_RGBA,
 487      {1, 1, 1},  8, 8,
 488      64, {{16}, {16}, {16}, {16}},
 489      {{32}, {16}, {0}, {48}}},
 490
 491   {SVGA3D_R16G16B16A16_SNORM, SVGA3DBLOCKDESC_UVWQ,
 492      {1, 1, 1},  8, 8,
 493      64, {{16}, {16}, {16}, {16}},
 494      {{32}, {16}, {0}, {48}}},
 495
 496   {SVGA3D_R16G16B16A16_SINT, SVGA3DBLOCKDESC_UVWQ,
 497      {1, 1, 1},  8, 8,
 498      64, {{16}, {16}, {16}, {16}},
 499      {{32}, {16}, {0}, {48}}},
 500
 501   {SVGA3D_R32G32_TYPELESS, SVGA3DBLOCKDESC_RG,
 502      {1, 1, 1},  8, 8,
 503      64, {{0}, {32}, {32}, {0}},
 504      {{0}, {32}, {0}, {0}}},
 505
 506   {SVGA3D_R32G32_UINT, SVGA3DBLOCKDESC_RG,
 507      {1, 1, 1},  8, 8,
 508      64, {{0}, {32}, {32}, {0}},
 509      {{0}, {32}, {0}, {0}}},
 510
 511   {SVGA3D_R32G32_SINT, SVGA3DBLOCKDESC_UV,
 512      {1, 1, 1},  8, 8,
 513      64, {{0}, {32}, {32}, {0}},
 514      {{0}, {32}, {0}, {0}}},
 515
 516   {SVGA3D_R32G8X24_TYPELESS, SVGA3DBLOCKDESC_RG,
 517      {1, 1, 1},  8, 8,
 518      64, {{0}, {8}, {32}, {0}},
 519      {{0}, {32}, {0}, {0}}},
 520
 521   {SVGA3D_D32_FLOAT_S8X24_UINT, SVGA3DBLOCKDESC_DS,
 522      {1, 1, 1},  8, 8,
 523      64, {{0}, {8}, {32}, {0}},
 524      {{0}, {32}, {0}, {0}}},
 525
 526   {SVGA3D_R32_FLOAT_X8X24_TYPELESS, SVGA3DBLOCKDESC_R_FP,
 527      {1, 1, 1},  8, 8,
 528      64, {{0}, {0}, {32}, {0}},
 529      {{0}, {0}, {0}, {0}}},
 530
 531   {SVGA3D_X32_TYPELESS_G8X24_UINT, SVGA3DBLOCKDESC_GREEN,
 532      {1, 1, 1},  8, 8,
 533      64, {{0}, {8}, {0}, {0}},
 534      {{0}, {32}, {0}, {0}}},
 535
 536   {SVGA3D_R10G10B10A2_TYPELESS, SVGA3DBLOCKDESC_RGBA,
 537      {1, 1, 1},  4, 4,
 538      32, {{10}, {10}, {10}, {2}},
 539      {{0}, {10}, {20}, {30}}},
 540
 541   {SVGA3D_R10G10B10A2_UINT, SVGA3DBLOCKDESC_RGBA,
 542      {1, 1, 1},  4, 4,
 543      32, {{10}, {10}, {10}, {2}},
 544      {{0}, {10}, {20}, {30}}},
 545
 546   {SVGA3D_R11G11B10_FLOAT, SVGA3DBLOCKDESC_RGB_FP,
 547      {1, 1, 1},  4, 4,
 548      32, {{10}, {11}, {11}, {0}},
 549      {{0}, {10}, {21}, {0}}},
 550
 551   {SVGA3D_R8G8B8A8_TYPELESS, SVGA3DBLOCKDESC_RGBA,
 552      {1, 1, 1},  4, 4,
 553      32, {{8}, {8}, {8}, {8}},
 554      {{16}, {8}, {0}, {24}}},
 555
 556   {SVGA3D_R8G8B8A8_UNORM, SVGA3DBLOCKDESC_RGBA,
 557      {1, 1, 1},  4, 4,
 558      32, {{8}, {8}, {8}, {8}},
 559      {{16}, {8}, {0}, {24}}},
 560
 561   {SVGA3D_R8G8B8A8_UNORM_SRGB, SVGA3DBLOCKDESC_RGBA_SRGB,
 562      {1, 1, 1},  4, 4,
 563      32, {{8}, {8}, {8}, {8}},
 564      {{16}, {8}, {0}, {24}}},
 565
 566   {SVGA3D_R8G8B8A8_UINT, SVGA3DBLOCKDESC_RGBA,
 567      {1, 1, 1},  4, 4,
 568      32, {{8}, {8}, {8}, {8}},
 569      {{16}, {8}, {0}, {24}}},
 570
 571   {SVGA3D_R8G8B8A8_SINT, SVGA3DBLOCKDESC_RGBA,
 572      {1, 1, 1},  4, 4,
 573      32, {{8}, {8}, {8}, {8}},
 574      {{16}, {8}, {0}, {24}}},
 575
 576   {SVGA3D_R16G16_TYPELESS, SVGA3DBLOCKDESC_RG,
 577      {1, 1, 1},  4, 4,
 578      32, {{0}, {16}, {16}, {0}},
 579      {{0}, {16}, {0}, {0}}},
 580
 581   {SVGA3D_R16G16_UINT, SVGA3DBLOCKDESC_RG_FP,
 582      {1, 1, 1},  4, 4,
 583      32, {{0}, {16}, {16}, {0}},
 584      {{0}, {16}, {0}, {0}}},
 585
 586   {SVGA3D_R16G16_SINT, SVGA3DBLOCKDESC_UV,
 587      {1, 1, 1},  4, 4,
 588      32, {{0}, {16}, {16}, {0}},
 589      {{0}, {16}, {0}, {0}}},
 590
 591   {SVGA3D_R32_TYPELESS, SVGA3DBLOCKDESC_RED,
 592      {1, 1, 1},  4, 4,
 593      32, {{0}, {0}, {32}, {0}},
 594      {{0}, {0}, {0}, {0}}},
 595
 596   {SVGA3D_D32_FLOAT, SVGA3DBLOCKDESC_DEPTH,
 597      {1, 1, 1},  4, 4,
 598      32, {{0}, {0}, {32}, {0}},
 599      {{0}, {0}, {0}, {0}}},
 600
 601   {SVGA3D_R32_UINT, SVGA3DBLOCKDESC_RED,
 602      {1, 1, 1},  4, 4,
 603      32, {{0}, {0}, {32}, {0}},
 604      {{0}, {0}, {0}, {0}}},
 605
 606   {SVGA3D_R32_SINT, SVGA3DBLOCKDESC_RED,
 607      {1, 1, 1},  4, 4,
 608      32, {{0}, {0}, {32}, {0}},
 609      {{0}, {0}, {0}, {0}}},
 610
 611   {SVGA3D_R24G8_TYPELESS, SVGA3DBLOCKDESC_RG,
 612      {1, 1, 1},  4, 4,
 613      32, {{0}, {8}, {24}, {0}},
 614      {{0}, {24}, {0}, {0}}},
 615
 616   {SVGA3D_D24_UNORM_S8_UINT, SVGA3DBLOCKDESC_DS,
 617      {1, 1, 1},  4, 4,
 618      32, {{0}, {8}, {24}, {0}},
 619      {{0}, {24}, {0}, {0}}},
 620
 621   {SVGA3D_R24_UNORM_X8_TYPELESS, SVGA3DBLOCKDESC_RED,
 622      {1, 1, 1},  4, 4,
 623      32, {{0}, {0}, {24}, {0}},
 624      {{0}, {0}, {0}, {0}}},
 625
 626   {SVGA3D_X24_TYPELESS_G8_UINT, SVGA3DBLOCKDESC_GREEN,
 627      {1, 1, 1},  4, 4,
 628      32, {{0}, {8}, {0}, {0}},
 629      {{0}, {24}, {0}, {0}}},
 630
 631   {SVGA3D_R8G8_TYPELESS, SVGA3DBLOCKDESC_RG,
 632      {1, 1, 1},  2, 2,
 633      16, {{0}, {8}, {8}, {0}},
 634      {{0}, {8}, {0}, {0}}},
 635
 636   {SVGA3D_R8G8_UNORM, SVGA3DBLOCKDESC_RG,
 637      {1, 1, 1},  2, 2,
 638      16, {{0}, {8}, {8}, {0}},
 639      {{0}, {8}, {0}, {0}}},
 640
 641   {SVGA3D_R8G8_UINT, SVGA3DBLOCKDESC_RG,
 642      {1, 1, 1},  2, 2,
 643      16, {{0}, {8}, {8}, {0}},
 644      {{0}, {8}, {0}, {0}}},
 645
 646   {SVGA3D_R8G8_SINT, SVGA3DBLOCKDESC_UV,
 647      {1, 1, 1},  2, 2,
 648      16, {{0}, {8}, {8}, {0}},
 649      {{0}, {8}, {0}, {0}}},
 650
 651   {SVGA3D_R16_TYPELESS, SVGA3DBLOCKDESC_RED,
 652      {1, 1, 1},  2, 2,
 653      16, {{0}, {0}, {16}, {0}},
 654      {{0}, {0}, {0}, {0}}},
 655
 656   {SVGA3D_R16_UNORM, SVGA3DBLOCKDESC_RED,
 657      {1, 1, 1},  2, 2,
 658      16, {{0}, {0}, {16}, {0}},
 659      {{0}, {0}, {0}, {0}}},
 660
 661   {SVGA3D_R16_UINT, SVGA3DBLOCKDESC_RED,
 662      {1, 1, 1},  2, 2,
 663      16, {{0}, {0}, {16}, {0}},
 664      {{0}, {0}, {0}, {0}}},
 665
 666   {SVGA3D_R16_SNORM, SVGA3DBLOCKDESC_U,
 667      {1, 1, 1},  2, 2,
 668      16, {{0}, {0}, {16}, {0}},
 669      {{0}, {0}, {0}, {0}}},
 670
 671   {SVGA3D_R16_SINT, SVGA3DBLOCKDESC_U,
 672      {1, 1, 1},  2, 2,
 673      16, {{0}, {0}, {16}, {0}},
 674      {{0}, {0}, {0}, {0}}},
 675
 676   {SVGA3D_R8_TYPELESS, SVGA3DBLOCKDESC_RED,
 677      {1, 1, 1},  1, 1,
 678      8, {{0}, {0}, {8}, {0}},
 679      {{0}, {0}, {0}, {0}}},
 680
 681   {SVGA3D_R8_UNORM, SVGA3DBLOCKDESC_RED,
 682      {1, 1, 1},  1, 1,
 683      8, {{0}, {0}, {8}, {0}},
 684      {{0}, {0}, {0}, {0}}},
 685
 686   {SVGA3D_R8_UINT, SVGA3DBLOCKDESC_RED,
 687      {1, 1, 1},  1, 1,
 688      8, {{0}, {0}, {8}, {0}},
 689      {{0}, {0}, {0}, {0}}},
 690
 691   {SVGA3D_R8_SNORM, SVGA3DBLOCKDESC_U,
 692      {1, 1, 1},  1, 1,
 693      8, {{0}, {0}, {8}, {0}},
 694      {{0}, {0}, {0}, {0}}},
 695
 696   {SVGA3D_R8_SINT, SVGA3DBLOCKDESC_U,
 697      {1, 1, 1},  1, 1,
 698      8, {{0}, {0}, {8}, {0}},
 699      {{0}, {0}, {0}, {0}}},
 700
 701   {SVGA3D_P8, SVGA3DBLOCKDESC_RED,
 702      {1, 1, 1},  1, 1,
 703      8, {{0}, {0}, {8}, {0}},
 704      {{0}, {0}, {0}, {0}}},
 705
 706   {SVGA3D_R9G9B9E5_SHAREDEXP, SVGA3DBLOCKDESC_RGBE,
 707      {1, 1, 1},  4, 4,
 708      32, {{9}, {9}, {9}, {5}},
 709      {{18}, {9}, {0}, {27}}},
 710
 711   {SVGA3D_R8G8_B8G8_UNORM, SVGA3DBLOCKDESC_RG,
 712      {1, 1, 1},  2, 2,
 713      16, {{0}, {8}, {8}, {0}},
 714      {{0}, {8}, {0}, {0}}},
 715
 716   {SVGA3D_G8R8_G8B8_UNORM, SVGA3DBLOCKDESC_RG,
 717      {1, 1, 1},  2, 2,
 718      16, {{0}, {8}, {8}, {0}},
 719      {{0}, {8}, {0}, {0}}},
 720
 721   {SVGA3D_BC1_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED,
 722      {4, 4, 1},  8, 8,
 723      64, {{0}, {0}, {64}, {0}},
 724      {{0}, {0}, {0}, {0}}},
 725
 726   {SVGA3D_BC1_UNORM_SRGB, SVGA3DBLOCKDESC_COMPRESSED_SRGB,
 727      {4, 4, 1},  8, 8,
 728      64, {{0}, {0}, {64}, {0}},
 729      {{0}, {0}, {0}, {0}}},
 730
 731   {SVGA3D_BC2_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED,
 732      {4, 4, 1},  16, 16,
 733      128, {{0}, {0}, {128}, {0}},
 734      {{0}, {0}, {0}, {0}}},
 735
 736   {SVGA3D_BC2_UNORM_SRGB, SVGA3DBLOCKDESC_COMPRESSED_SRGB,
 737      {4, 4, 1},  16, 16,
 738      128, {{0}, {0}, {128}, {0}},
 739      {{0}, {0}, {0}, {0}}},
 740
 741   {SVGA3D_BC3_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED,
 742      {4, 4, 1},  16, 16,
 743      128, {{0}, {0}, {128}, {0}},
 744      {{0}, {0}, {0}, {0}}},
 745
 746   {SVGA3D_BC3_UNORM_SRGB, SVGA3DBLOCKDESC_COMPRESSED_SRGB,
 747      {4, 4, 1},  16, 16,
 748      128, {{0}, {0}, {128}, {0}},
 749      {{0}, {0}, {0}, {0}}},
 750
 751   {SVGA3D_BC4_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED,
 752      {4, 4, 1},  8, 8,
 753      64, {{0}, {0}, {64}, {0}},
 754      {{0}, {0}, {0}, {0}}},
 755
 756   {SVGA3D_ATI1, SVGA3DBLOCKDESC_COMPRESSED,
 757      {4, 4, 1},  8, 8,
 758      64, {{0}, {0}, {64}, {0}},
 759      {{0}, {0}, {0}, {0}}},
 760
 761   {SVGA3D_BC4_SNORM, SVGA3DBLOCKDESC_COMPRESSED,
 762      {4, 4, 1},  8, 8,
 763      64, {{0}, {0}, {64}, {0}},
 764      {{0}, {0}, {0}, {0}}},
 765
 766   {SVGA3D_BC5_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED,
 767      {4, 4, 1},  16, 16,
 768      128, {{0}, {0}, {128}, {0}},
 769      {{0}, {0}, {0}, {0}}},
 770
 771   {SVGA3D_ATI2, SVGA3DBLOCKDESC_COMPRESSED,
 772      {4, 4, 1},  16, 16,
 773      128, {{0}, {0}, {128}, {0}},
 774      {{0}, {0}, {0}, {0}}},
 775
 776   {SVGA3D_BC5_SNORM, SVGA3DBLOCKDESC_COMPRESSED,
 777      {4, 4, 1},  16, 16,
 778      128, {{0}, {0}, {128}, {0}},
 779      {{0}, {0}, {0}, {0}}},
 780
 781   {SVGA3D_R10G10B10_XR_BIAS_A2_UNORM, SVGA3DBLOCKDESC_RGBA,
 782      {1, 1, 1},  4, 4,
 783      32, {{10}, {10}, {10}, {2}},
 784      {{0}, {10}, {20}, {30}}},
 785
 786   {SVGA3D_B8G8R8A8_TYPELESS, SVGA3DBLOCKDESC_RGBA,
 787      {1, 1, 1},  4, 4,
 788      32, {{8}, {8}, {8}, {8}},
 789      {{0}, {8}, {16}, {24}}},
 790
 791   {SVGA3D_B8G8R8A8_UNORM_SRGB, SVGA3DBLOCKDESC_RGBA_SRGB,
 792      {1, 1, 1},  4, 4,
 793      32, {{8}, {8}, {8}, {8}},
 794      {{0}, {8}, {16}, {24}}},
 795
 796   {SVGA3D_B8G8R8X8_TYPELESS, SVGA3DBLOCKDESC_RGB,
 797      {1, 1, 1},  4, 4,
 798      24, {{8}, {8}, {8}, {0}},
 799      {{0}, {8}, {16}, {24}}},
 800
 801   {SVGA3D_B8G8R8X8_UNORM_SRGB, SVGA3DBLOCKDESC_RGB_SRGB,
 802      {1, 1, 1},  4, 4,
 803      24, {{8}, {8}, {8}, {0}},
 804      {{0}, {8}, {16}, {24}}},
 805
 806   {SVGA3D_Z_DF16, SVGA3DBLOCKDESC_DEPTH,
 807      {1, 1, 1},  2, 2,
 808      16, {{0}, {0}, {16}, {0}},
 809      {{0}, {0}, {0}, {0}}},
 810
 811   {SVGA3D_Z_DF24, SVGA3DBLOCKDESC_DEPTH,
 812      {1, 1, 1},  4, 4,
 813      32, {{0}, {8}, {24}, {0}},
 814      {{0}, {24}, {0}, {0}}},
 815
 816   {SVGA3D_Z_D24S8_INT, SVGA3DBLOCKDESC_DS,
 817      {1, 1, 1},  4, 4,
 818      32, {{0}, {8}, {24}, {0}},
 819      {{0}, {24}, {0}, {0}}},
 820
 821   {SVGA3D_YV12, SVGA3DBLOCKDESC_YV12,
 822      {2, 2, 1},  6, 2,
 823      48, {{0}, {0}, {48}, {0}},
 824      {{0}, {0}, {0}, {0}}},
 825
 826   {SVGA3D_R32G32B32A32_FLOAT, SVGA3DBLOCKDESC_RGBA_FP,
 827      {1, 1, 1},  16, 16,
 828      128, {{32}, {32}, {32}, {32}},
 829      {{64}, {32}, {0}, {96}}},
 830
 831   {SVGA3D_R16G16B16A16_FLOAT, SVGA3DBLOCKDESC_RGBA_FP,
 832      {1, 1, 1},  8, 8,
 833      64, {{16}, {16}, {16}, {16}},
 834      {{32}, {16}, {0}, {48}}},
 835
 836   {SVGA3D_R16G16B16A16_UNORM, SVGA3DBLOCKDESC_RGBA,
 837      {1, 1, 1},  8, 8,
 838      64, {{16}, {16}, {16}, {16}},
 839      {{32}, {16}, {0}, {48}}},
 840
 841   {SVGA3D_R32G32_FLOAT, SVGA3DBLOCKDESC_RG_FP,
 842      {1, 1, 1},  8, 8,
 843      64, {{0}, {32}, {32}, {0}},
 844      {{0}, {32}, {0}, {0}}},
 845
 846   {SVGA3D_R10G10B10A2_UNORM, SVGA3DBLOCKDESC_RGBA,
 847      {1, 1, 1},  4, 4,
 848      32, {{10}, {10}, {10}, {2}},
 849      {{0}, {10}, {20}, {30}}},
 850
 851   {SVGA3D_R8G8B8A8_SNORM, SVGA3DBLOCKDESC_RGBA,
 852      {1, 1, 1},  4, 4,
 853      32, {{8}, {8}, {8}, {8}},
 854      {{24}, {16}, {8}, {0}}},
 855
 856   {SVGA3D_R16G16_FLOAT, SVGA3DBLOCKDESC_RG_FP,
 857      {1, 1, 1},  4, 4,
 858      32, {{0}, {16}, {16}, {0}},
 859      {{0}, {16}, {0}, {0}}},
 860
 861   {SVGA3D_R16G16_UNORM, SVGA3DBLOCKDESC_RG,
 862      {1, 1, 1},  4, 4,
 863      32, {{0}, {16}, {16}, {0}},
 864      {{0}, {0}, {16}, {0}}},
 865
 866   {SVGA3D_R16G16_SNORM, SVGA3DBLOCKDESC_RG,
 867      {1, 1, 1},  4, 4,
 868      32, {{16}, {16}, {0}, {0}},
 869      {{16}, {0}, {0}, {0}}},
 870
 871   {SVGA3D_R32_FLOAT, SVGA3DBLOCKDESC_R_FP,
 872      {1, 1, 1},  4, 4,
 873      32, {{0}, {0}, {32}, {0}},
 874      {{0}, {0}, {0}, {0}}},
 875
 876   {SVGA3D_R8G8_SNORM, SVGA3DBLOCKDESC_RG,
 877      {1, 1, 1},  2, 2,
 878      16, {{8}, {8}, {0}, {0}},
 879      {{8}, {0}, {0}, {0}}},
 880
 881   {SVGA3D_R16_FLOAT, SVGA3DBLOCKDESC_R_FP,
 882      {1, 1, 1},  2, 2,
 883      16, {{0}, {0}, {16}, {0}},
 884      {{0}, {0}, {0}, {0}}},
 885
 886   {SVGA3D_D16_UNORM, SVGA3DBLOCKDESC_DEPTH,
 887      {1, 1, 1},  2, 2,
 888      16, {{0}, {0}, {16}, {0}},
 889      {{0}, {0}, {0}, {0}}},
 890
 891   {SVGA3D_A8_UNORM, SVGA3DBLOCKDESC_ALPHA,
 892      {1, 1, 1},  1, 1,
 893      8, {{0}, {0}, {0}, {8}},
 894      {{0}, {0}, {0}, {0}}},
 895
 896   {SVGA3D_BC1_UNORM, SVGA3DBLOCKDESC_COMPRESSED,
 897      {4, 4, 1},  8, 8,
 898      64, {{0}, {0}, {64}, {0}},
 899      {{0}, {0}, {0}, {0}}},
 900
 901   {SVGA3D_BC2_UNORM, SVGA3DBLOCKDESC_COMPRESSED,
 902      {4, 4, 1},  16, 16,
 903      128, {{0}, {0}, {128}, {0}},
 904      {{0}, {0}, {0}, {0}}},
 905
 906   {SVGA3D_BC3_UNORM, SVGA3DBLOCKDESC_COMPRESSED,
 907      {4, 4, 1},  16, 16,
 908      128, {{0}, {0}, {128}, {0}},
 909      {{0}, {0}, {0}, {0}}},
 910
 911   {SVGA3D_B5G6R5_UNORM, SVGA3DBLOCKDESC_RGB,
 912      {1, 1, 1},  2, 2,
 913      16, {{5}, {6}, {5}, {0}},
 914      {{0}, {5}, {11}, {0}}},
 915
 916   {SVGA3D_B5G5R5A1_UNORM, SVGA3DBLOCKDESC_RGBA,
 917      {1, 1, 1},  2, 2,
 918      16, {{5}, {5}, {5}, {1}},
 919      {{0}, {5}, {10}, {15}}},
 920
 921   {SVGA3D_B8G8R8A8_UNORM, SVGA3DBLOCKDESC_RGBA,
 922      {1, 1, 1},  4, 4,
 923      32, {{8}, {8}, {8}, {8}},
 924      {{0}, {8}, {16}, {24}}},
 925
 926   {SVGA3D_B8G8R8X8_UNORM, SVGA3DBLOCKDESC_RGB,
 927      {1, 1, 1},  4, 4,
 928      24, {{8}, {8}, {8}, {0}},
 929      {{0}, {8}, {16}, {24}}},
 930
 931   {SVGA3D_BC4_UNORM, SVGA3DBLOCKDESC_COMPRESSED,
 932      {4, 4, 1},  8, 8,
 933      64, {{0}, {0}, {64}, {0}},
 934      {{0}, {0}, {0}, {0}}},
 935
 936   {SVGA3D_BC5_UNORM, SVGA3DBLOCKDESC_COMPRESSED,
 937      {4, 4, 1},  16, 16,
 938      128, {{0}, {0}, {128}, {0}},
 939      {{0}, {0}, {0}, {0}}},
 940
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 941};
 942
 943static inline u32 clamped_umul32(u32 a, u32 b)
 944{
 945	uint64_t tmp = (uint64_t) a*b;
 946	return (tmp > (uint64_t) ((u32) -1)) ? (u32) -1 : tmp;
 947}
 948
 949static inline const struct svga3d_surface_desc *
 950svga3dsurface_get_desc(SVGA3dSurfaceFormat format)
 951{
 952	if (format < ARRAY_SIZE(svga3d_surface_descs))
 953		return &svga3d_surface_descs[format];
 954
 955	return &svga3d_surface_descs[SVGA3D_FORMAT_INVALID];
 956}
 957
 958/*
 959 *----------------------------------------------------------------------
 960 *
 961 * svga3dsurface_get_mip_size --
 962 *
 963 *      Given a base level size and the mip level, compute the size of
 964 *      the mip level.
 965 *
 966 * Results:
 967 *      See above.
 968 *
 969 * Side effects:
 970 *      None.
 971 *
 972 *----------------------------------------------------------------------
 973 */
 974
 975static inline surf_size_struct
 976svga3dsurface_get_mip_size(surf_size_struct base_level, u32 mip_level)
 977{
 978	surf_size_struct size;
 979
 980	size.width = max_t(u32, base_level.width >> mip_level, 1);
 981	size.height = max_t(u32, base_level.height >> mip_level, 1);
 982	size.depth = max_t(u32, base_level.depth >> mip_level, 1);
 983	return size;
 984}
 985
 986static inline void
 987svga3dsurface_get_size_in_blocks(const struct svga3d_surface_desc *desc,
 988				 const surf_size_struct *pixel_size,
 989				 surf_size_struct *block_size)
 990{
 991	block_size->width = __KERNEL_DIV_ROUND_UP(pixel_size->width,
 992						  desc->block_size.width);
 993	block_size->height = __KERNEL_DIV_ROUND_UP(pixel_size->height,
 994						   desc->block_size.height);
 995	block_size->depth = __KERNEL_DIV_ROUND_UP(pixel_size->depth,
 996						  desc->block_size.depth);
 997}
 998
 999static inline bool
1000svga3dsurface_is_planar_surface(const struct svga3d_surface_desc *desc)
1001{
1002	return (desc->block_desc & SVGA3DBLOCKDESC_PLANAR_YUV) != 0;
1003}
1004
1005static inline u32
1006svga3dsurface_calculate_pitch(const struct svga3d_surface_desc *desc,
1007			      const surf_size_struct *size)
1008{
1009	u32 pitch;
1010	surf_size_struct blocks;
1011
1012	svga3dsurface_get_size_in_blocks(desc, size, &blocks);
1013
1014	pitch = blocks.width * desc->pitch_bytes_per_block;
1015
1016	return pitch;
1017}
 
1018
1019/*
1020 *-----------------------------------------------------------------------------
1021 *
1022 * svga3dsurface_get_image_buffer_size --
1023 *
1024 *      Return the number of bytes of buffer space required to store
1025 *      one image of a surface, optionally using the specified pitch.
1026 *
1027 *      If pitch is zero, it is assumed that rows are tightly packed.
1028 *
1029 *      This function is overflow-safe. If the result would have
1030 *      overflowed, instead we return MAX_UINT32.
1031 *
1032 * Results:
1033 *      Byte count.
1034 *
1035 * Side effects:
1036 *      None.
1037 *
1038 *-----------------------------------------------------------------------------
1039 */
1040
1041static inline u32
1042svga3dsurface_get_image_buffer_size(const struct svga3d_surface_desc *desc,
1043				    const surf_size_struct *size,
1044				    u32 pitch)
1045{
1046	surf_size_struct image_blocks;
1047	u32 slice_size, total_size;
1048
1049	svga3dsurface_get_size_in_blocks(desc, size, &image_blocks);
1050
1051	if (svga3dsurface_is_planar_surface(desc)) {
1052		total_size = clamped_umul32(image_blocks.width,
1053					    image_blocks.height);
1054		total_size = clamped_umul32(total_size, image_blocks.depth);
1055		total_size = clamped_umul32(total_size, desc->bytes_per_block);
1056		return total_size;
1057	}
1058
1059	if (pitch == 0)
1060		pitch = svga3dsurface_calculate_pitch(desc, size);
1061
1062	slice_size = clamped_umul32(image_blocks.height, pitch);
1063	total_size = clamped_umul32(slice_size, image_blocks.depth);
1064
1065	return total_size;
1066}
1067
1068static inline u32
1069svga3dsurface_get_serialized_size(SVGA3dSurfaceFormat format,
1070				  surf_size_struct base_level_size,
1071				  u32 num_mip_levels,
1072				  u32 num_layers)
1073{
1074	const struct svga3d_surface_desc *desc = svga3dsurface_get_desc(format);
1075	u32 total_size = 0;
1076	u32 mip;
1077
1078	for (mip = 0; mip < num_mip_levels; mip++) {
1079		surf_size_struct size =
1080			svga3dsurface_get_mip_size(base_level_size, mip);
1081		total_size += svga3dsurface_get_image_buffer_size(desc,
1082								  &size, 0);
1083	}
1084
1085	return total_size * num_layers;
1086}
1087
1088
1089/**
1090 * svga3dsurface_get_pixel_offset - Compute the offset (in bytes) to a pixel
1091 * in an image (or volume).
1092 *
1093 * @width: The image width in pixels.
1094 * @height: The image height in pixels
1095 */
1096static inline u32
1097svga3dsurface_get_pixel_offset(SVGA3dSurfaceFormat format,
1098			       u32 width, u32 height,
1099			       u32 x, u32 y, u32 z)
1100{
1101	const struct svga3d_surface_desc *desc = svga3dsurface_get_desc(format);
1102	const u32 bw = desc->block_size.width, bh = desc->block_size.height;
1103	const u32 bd = desc->block_size.depth;
1104	const u32 rowstride = __KERNEL_DIV_ROUND_UP(width, bw) *
1105			      desc->bytes_per_block;
1106	const u32 imgstride = __KERNEL_DIV_ROUND_UP(height, bh) * rowstride;
1107	const u32 offset = (z / bd * imgstride +
1108			    y / bh * rowstride +
1109			    x / bw * desc->bytes_per_block);
1110	return offset;
1111}
1112
1113
1114static inline u32
1115svga3dsurface_get_image_offset(SVGA3dSurfaceFormat format,
1116			       surf_size_struct baseLevelSize,
1117			       u32 numMipLevels,
1118			       u32 face,
1119			       u32 mip)
1120
1121{
1122	u32 offset;
1123	u32 mipChainBytes;
1124	u32 mipChainBytesToLevel;
1125	u32 i;
1126	const struct svga3d_surface_desc *desc;
1127	surf_size_struct mipSize;
1128	u32 bytes;
1129
1130	desc = svga3dsurface_get_desc(format);
1131
1132	mipChainBytes = 0;
1133	mipChainBytesToLevel = 0;
1134	for (i = 0; i < numMipLevels; i++) {
1135		mipSize = svga3dsurface_get_mip_size(baseLevelSize, i);
1136		bytes = svga3dsurface_get_image_buffer_size(desc, &mipSize, 0);
1137		mipChainBytes += bytes;
1138		if (i < mip)
1139			mipChainBytesToLevel += bytes;
1140	}
1141
1142	offset = mipChainBytes * face + mipChainBytesToLevel;
1143
1144	return offset;
1145}
1146
1147
1148/**
1149 * svga3dsurface_is_gb_screen_target_format - Is the specified format usable as
1150 *                                            a ScreenTarget?
1151 *                                            (with just the GBObjects cap-bit
1152 *                                             set)
1153 * @format: format to queried
1154 *
1155 * RETURNS:
1156 * true if queried format is valid for screen targets
1157 */
1158static inline bool
1159svga3dsurface_is_gb_screen_target_format(SVGA3dSurfaceFormat format)
1160{
1161	return (format == SVGA3D_X8R8G8B8 ||
1162		format == SVGA3D_A8R8G8B8 ||
1163		format == SVGA3D_R5G6B5   ||
1164		format == SVGA3D_X1R5G5B5 ||
1165		format == SVGA3D_A1R5G5B5 ||
1166		format == SVGA3D_P8);
1167}
1168
1169
1170/**
1171 * svga3dsurface_is_dx_screen_target_format - Is the specified format usable as
1172 *                                            a ScreenTarget?
1173 *                                            (with DX10 enabled)
1174 *
1175 * @format: format to queried
1176 *
1177 * Results:
1178 * true if queried format is valid for screen targets
1179 */
1180static inline bool
1181svga3dsurface_is_dx_screen_target_format(SVGA3dSurfaceFormat format)
1182{
1183	return (format == SVGA3D_R8G8B8A8_UNORM ||
1184		format == SVGA3D_B8G8R8A8_UNORM ||
1185		format == SVGA3D_B8G8R8X8_UNORM);
1186}
1187
1188
1189/**
1190 * svga3dsurface_is_screen_target_format - Is the specified format usable as a
1191 *                                         ScreenTarget?
1192 *                                         (for some combination of caps)
1193 *
1194 * @format: format to queried
1195 *
1196 * Results:
1197 * true if queried format is valid for screen targets
1198 */
1199static inline bool
1200svga3dsurface_is_screen_target_format(SVGA3dSurfaceFormat format)
1201{
1202	if (svga3dsurface_is_gb_screen_target_format(format)) {
1203		return true;
1204	}
1205	return svga3dsurface_is_dx_screen_target_format(format);
1206}
v6.8
   1/**********************************************************
   2 * Copyright 2008-2021 VMware, Inc.
   3 * SPDX-License-Identifier: GPL-2.0 OR MIT
   4 *
   5 * Permission is hereby granted, free of charge, to any person
   6 * obtaining a copy of this software and associated documentation
   7 * files (the "Software"), to deal in the Software without
   8 * restriction, including without limitation the rights to use, copy,
   9 * modify, merge, publish, distribute, sublicense, and/or sell copies
  10 * of the Software, and to permit persons to whom the Software is
  11 * furnished to do so, subject to the following conditions:
  12 *
  13 * The above copyright notice and this permission notice shall be
  14 * included in all copies or substantial portions of the Software.
  15 *
  16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  20 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  21 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  23 * SOFTWARE.
  24 *
  25 **********************************************************/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  26
  27/*
  28 * svga3d_surfacedefs.h --
  29 *
  30 *    Surface definitions for SVGA3d.
  31 */
  32
 
  33
 
 
 
  34
  35#ifndef _SVGA3D_SURFACEDEFS_H_
  36#define _SVGA3D_SURFACEDEFS_H_
 
  37
  38#include "svga3d_types.h"
  39
  40#ifdef __cplusplus
  41extern "C" {
  42#endif
  43
  44struct SVGAUseCaps;
  45
  46#if defined(_WIN32) && !defined(__GNUC__)
  47
  48#define STATIC_CONST __declspec(selectany) extern const
  49#else
  50#define STATIC_CONST static const
  51#endif
  52
  53typedef enum SVGA3dBlockDesc {
  54
  55	SVGA3DBLOCKDESC_NONE = 0,
  56
  57	SVGA3DBLOCKDESC_BLUE = 1 << 0,
  58	SVGA3DBLOCKDESC_W = 1 << 0,
  59	SVGA3DBLOCKDESC_BUMP_L = 1 << 0,
  60
  61	SVGA3DBLOCKDESC_GREEN = 1 << 1,
  62	SVGA3DBLOCKDESC_V = 1 << 1,
  63
  64	SVGA3DBLOCKDESC_RED = 1 << 2,
  65	SVGA3DBLOCKDESC_U = 1 << 2,
  66	SVGA3DBLOCKDESC_LUMINANCE = 1 << 2,
  67
  68	SVGA3DBLOCKDESC_ALPHA = 1 << 3,
  69	SVGA3DBLOCKDESC_Q = 1 << 3,
  70
  71	SVGA3DBLOCKDESC_BUFFER = 1 << 4,
  72
  73	SVGA3DBLOCKDESC_COMPRESSED = 1 << 5,
  74
  75	SVGA3DBLOCKDESC_FP = 1 << 6,
  76
  77	SVGA3DBLOCKDESC_PLANAR_YUV = 1 << 7,
  78
  79	SVGA3DBLOCKDESC_2PLANAR_YUV = 1 << 8,
  80
  81	SVGA3DBLOCKDESC_3PLANAR_YUV = 1 << 9,
  82
  83	SVGA3DBLOCKDESC_STENCIL = 1 << 11,
  84
  85	SVGA3DBLOCKDESC_TYPELESS = 1 << 12,
  86
  87	SVGA3DBLOCKDESC_SINT = 1 << 13,
  88
  89	SVGA3DBLOCKDESC_UINT = 1 << 14,
  90
  91	SVGA3DBLOCKDESC_NORM = 1 << 15,
  92
  93	SVGA3DBLOCKDESC_SRGB = 1 << 16,
  94
  95	SVGA3DBLOCKDESC_EXP = 1 << 17,
  96
  97	SVGA3DBLOCKDESC_COLOR = 1 << 18,
  98
  99	SVGA3DBLOCKDESC_DEPTH = 1 << 19,
 100
 101	SVGA3DBLOCKDESC_BUMP = 1 << 20,
 102
 103	SVGA3DBLOCKDESC_YUV_VIDEO = 1 << 21,
 104
 105	SVGA3DBLOCKDESC_MIXED = 1 << 22,
 106
 107	SVGA3DBLOCKDESC_CX = 1 << 23,
 108
 109	SVGA3DBLOCKDESC_BC1 = 1 << 24,
 110	SVGA3DBLOCKDESC_BC2 = 1 << 25,
 111	SVGA3DBLOCKDESC_BC3 = 1 << 26,
 112	SVGA3DBLOCKDESC_BC4 = 1 << 27,
 113	SVGA3DBLOCKDESC_BC5 = 1 << 28,
 114	SVGA3DBLOCKDESC_BC6H = 1 << 29,
 115	SVGA3DBLOCKDESC_BC7 = 1 << 30,
 116	SVGA3DBLOCKDESC_COMPRESSED_MASK =
 117		SVGA3DBLOCKDESC_BC1 | SVGA3DBLOCKDESC_BC2 |
 118		SVGA3DBLOCKDESC_BC3 | SVGA3DBLOCKDESC_BC4 |
 119		SVGA3DBLOCKDESC_BC5 | SVGA3DBLOCKDESC_BC6H |
 120		SVGA3DBLOCKDESC_BC7,
 121
 122	SVGA3DBLOCKDESC_A_UINT = SVGA3DBLOCKDESC_ALPHA | SVGA3DBLOCKDESC_UINT |
 123				 SVGA3DBLOCKDESC_COLOR,
 124	SVGA3DBLOCKDESC_A_UNORM = SVGA3DBLOCKDESC_A_UINT | SVGA3DBLOCKDESC_NORM,
 125	SVGA3DBLOCKDESC_R_UINT = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_UINT |
 126				 SVGA3DBLOCKDESC_COLOR,
 127	SVGA3DBLOCKDESC_R_UNORM = SVGA3DBLOCKDESC_R_UINT | SVGA3DBLOCKDESC_NORM,
 128	SVGA3DBLOCKDESC_R_SINT = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_SINT |
 129				 SVGA3DBLOCKDESC_COLOR,
 130	SVGA3DBLOCKDESC_R_SNORM = SVGA3DBLOCKDESC_R_SINT | SVGA3DBLOCKDESC_NORM,
 131	SVGA3DBLOCKDESC_G_UINT = SVGA3DBLOCKDESC_GREEN | SVGA3DBLOCKDESC_UINT |
 132				 SVGA3DBLOCKDESC_COLOR,
 133	SVGA3DBLOCKDESC_RG_UINT = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 134				  SVGA3DBLOCKDESC_UINT | SVGA3DBLOCKDESC_COLOR,
 135	SVGA3DBLOCKDESC_RG_UNORM =
 136		SVGA3DBLOCKDESC_RG_UINT | SVGA3DBLOCKDESC_NORM,
 137	SVGA3DBLOCKDESC_RG_SINT = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 138				  SVGA3DBLOCKDESC_SINT | SVGA3DBLOCKDESC_COLOR,
 139	SVGA3DBLOCKDESC_RG_SNORM =
 140		SVGA3DBLOCKDESC_RG_SINT | SVGA3DBLOCKDESC_NORM,
 141	SVGA3DBLOCKDESC_RGB_UINT = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 142				   SVGA3DBLOCKDESC_BLUE | SVGA3DBLOCKDESC_UINT |
 143				   SVGA3DBLOCKDESC_COLOR,
 144	SVGA3DBLOCKDESC_RGB_SINT = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 145				   SVGA3DBLOCKDESC_BLUE | SVGA3DBLOCKDESC_SINT |
 146				   SVGA3DBLOCKDESC_COLOR,
 147	SVGA3DBLOCKDESC_RGB_UNORM =
 148		SVGA3DBLOCKDESC_RGB_UINT | SVGA3DBLOCKDESC_NORM,
 149	SVGA3DBLOCKDESC_RGB_UNORM_SRGB =
 150		SVGA3DBLOCKDESC_RGB_UNORM | SVGA3DBLOCKDESC_SRGB,
 151	SVGA3DBLOCKDESC_RGBA_UINT =
 152		SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 153		SVGA3DBLOCKDESC_BLUE | SVGA3DBLOCKDESC_ALPHA |
 154		SVGA3DBLOCKDESC_UINT | SVGA3DBLOCKDESC_COLOR,
 155	SVGA3DBLOCKDESC_RGBA_UNORM =
 156		SVGA3DBLOCKDESC_RGBA_UINT | SVGA3DBLOCKDESC_NORM,
 157	SVGA3DBLOCKDESC_RGBA_UNORM_SRGB =
 158		SVGA3DBLOCKDESC_RGBA_UNORM | SVGA3DBLOCKDESC_SRGB,
 159	SVGA3DBLOCKDESC_RGBA_SINT =
 160		SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 161		SVGA3DBLOCKDESC_BLUE | SVGA3DBLOCKDESC_ALPHA |
 162		SVGA3DBLOCKDESC_SINT | SVGA3DBLOCKDESC_COLOR,
 163	SVGA3DBLOCKDESC_RGBA_SNORM =
 164		SVGA3DBLOCKDESC_RGBA_SINT | SVGA3DBLOCKDESC_NORM,
 165	SVGA3DBLOCKDESC_RGBA_FP = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 166				  SVGA3DBLOCKDESC_BLUE | SVGA3DBLOCKDESC_ALPHA |
 167				  SVGA3DBLOCKDESC_FP | SVGA3DBLOCKDESC_COLOR,
 168	SVGA3DBLOCKDESC_UV =
 169		SVGA3DBLOCKDESC_U | SVGA3DBLOCKDESC_V | SVGA3DBLOCKDESC_BUMP,
 170	SVGA3DBLOCKDESC_UVL = SVGA3DBLOCKDESC_UV | SVGA3DBLOCKDESC_BUMP_L |
 171			      SVGA3DBLOCKDESC_MIXED | SVGA3DBLOCKDESC_BUMP,
 172	SVGA3DBLOCKDESC_UVW =
 173		SVGA3DBLOCKDESC_UV | SVGA3DBLOCKDESC_W | SVGA3DBLOCKDESC_BUMP,
 174	SVGA3DBLOCKDESC_UVWA = SVGA3DBLOCKDESC_UVW | SVGA3DBLOCKDESC_ALPHA |
 175			       SVGA3DBLOCKDESC_MIXED | SVGA3DBLOCKDESC_BUMP,
 176	SVGA3DBLOCKDESC_UVWQ = SVGA3DBLOCKDESC_U | SVGA3DBLOCKDESC_V |
 177			       SVGA3DBLOCKDESC_W | SVGA3DBLOCKDESC_Q |
 178			       SVGA3DBLOCKDESC_BUMP,
 179	SVGA3DBLOCKDESC_L_UNORM = SVGA3DBLOCKDESC_LUMINANCE |
 180				  SVGA3DBLOCKDESC_UINT | SVGA3DBLOCKDESC_NORM |
 181				  SVGA3DBLOCKDESC_COLOR,
 182	SVGA3DBLOCKDESC_LA_UNORM = SVGA3DBLOCKDESC_LUMINANCE |
 183				   SVGA3DBLOCKDESC_ALPHA |
 184				   SVGA3DBLOCKDESC_UINT | SVGA3DBLOCKDESC_NORM |
 185				   SVGA3DBLOCKDESC_COLOR,
 186	SVGA3DBLOCKDESC_R_FP = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_FP |
 187			       SVGA3DBLOCKDESC_COLOR,
 188	SVGA3DBLOCKDESC_RG_FP = SVGA3DBLOCKDESC_R_FP | SVGA3DBLOCKDESC_GREEN |
 189				SVGA3DBLOCKDESC_COLOR,
 190	SVGA3DBLOCKDESC_RGB_FP = SVGA3DBLOCKDESC_RG_FP | SVGA3DBLOCKDESC_BLUE |
 191				 SVGA3DBLOCKDESC_COLOR,
 192	SVGA3DBLOCKDESC_YUV = SVGA3DBLOCKDESC_YUV_VIDEO | SVGA3DBLOCKDESC_COLOR,
 193	SVGA3DBLOCKDESC_AYUV = SVGA3DBLOCKDESC_ALPHA |
 194			       SVGA3DBLOCKDESC_YUV_VIDEO |
 195			       SVGA3DBLOCKDESC_COLOR,
 196	SVGA3DBLOCKDESC_RGB_EXP = SVGA3DBLOCKDESC_RED | SVGA3DBLOCKDESC_GREEN |
 197				  SVGA3DBLOCKDESC_BLUE | SVGA3DBLOCKDESC_EXP |
 198				  SVGA3DBLOCKDESC_COLOR,
 199
 200	SVGA3DBLOCKDESC_COMP_TYPELESS =
 201		SVGA3DBLOCKDESC_COMPRESSED | SVGA3DBLOCKDESC_TYPELESS,
 202	SVGA3DBLOCKDESC_COMP_UNORM =
 203		SVGA3DBLOCKDESC_COMPRESSED | SVGA3DBLOCKDESC_UINT |
 204		SVGA3DBLOCKDESC_NORM | SVGA3DBLOCKDESC_COLOR,
 205	SVGA3DBLOCKDESC_COMP_SNORM =
 206		SVGA3DBLOCKDESC_COMPRESSED | SVGA3DBLOCKDESC_SINT |
 207		SVGA3DBLOCKDESC_NORM | SVGA3DBLOCKDESC_COLOR,
 208	SVGA3DBLOCKDESC_COMP_UNORM_SRGB =
 209		SVGA3DBLOCKDESC_COMP_UNORM | SVGA3DBLOCKDESC_SRGB,
 210	SVGA3DBLOCKDESC_BC1_COMP_TYPELESS =
 211		SVGA3DBLOCKDESC_BC1 | SVGA3DBLOCKDESC_COMP_TYPELESS,
 212	SVGA3DBLOCKDESC_BC1_COMP_UNORM =
 213		SVGA3DBLOCKDESC_BC1 | SVGA3DBLOCKDESC_COMP_UNORM,
 214	SVGA3DBLOCKDESC_BC1_COMP_UNORM_SRGB =
 215		SVGA3DBLOCKDESC_BC1_COMP_UNORM | SVGA3DBLOCKDESC_SRGB,
 216	SVGA3DBLOCKDESC_BC2_COMP_TYPELESS =
 217		SVGA3DBLOCKDESC_BC2 | SVGA3DBLOCKDESC_COMP_TYPELESS,
 218	SVGA3DBLOCKDESC_BC2_COMP_UNORM =
 219		SVGA3DBLOCKDESC_BC2 | SVGA3DBLOCKDESC_COMP_UNORM,
 220	SVGA3DBLOCKDESC_BC2_COMP_UNORM_SRGB =
 221		SVGA3DBLOCKDESC_BC2_COMP_UNORM | SVGA3DBLOCKDESC_SRGB,
 222	SVGA3DBLOCKDESC_BC3_COMP_TYPELESS =
 223		SVGA3DBLOCKDESC_BC3 | SVGA3DBLOCKDESC_COMP_TYPELESS,
 224	SVGA3DBLOCKDESC_BC3_COMP_UNORM =
 225		SVGA3DBLOCKDESC_BC3 | SVGA3DBLOCKDESC_COMP_UNORM,
 226	SVGA3DBLOCKDESC_BC3_COMP_UNORM_SRGB =
 227		SVGA3DBLOCKDESC_BC3_COMP_UNORM | SVGA3DBLOCKDESC_SRGB,
 228	SVGA3DBLOCKDESC_BC4_COMP_TYPELESS =
 229		SVGA3DBLOCKDESC_BC4 | SVGA3DBLOCKDESC_COMP_TYPELESS,
 230	SVGA3DBLOCKDESC_BC4_COMP_UNORM =
 231		SVGA3DBLOCKDESC_BC4 | SVGA3DBLOCKDESC_COMP_UNORM,
 232	SVGA3DBLOCKDESC_BC4_COMP_SNORM =
 233		SVGA3DBLOCKDESC_BC4 | SVGA3DBLOCKDESC_COMP_SNORM,
 234	SVGA3DBLOCKDESC_BC5_COMP_TYPELESS =
 235		SVGA3DBLOCKDESC_BC5 | SVGA3DBLOCKDESC_COMP_TYPELESS,
 236	SVGA3DBLOCKDESC_BC5_COMP_UNORM =
 237		SVGA3DBLOCKDESC_BC5 | SVGA3DBLOCKDESC_COMP_UNORM,
 238	SVGA3DBLOCKDESC_BC5_COMP_SNORM =
 239		SVGA3DBLOCKDESC_BC5 | SVGA3DBLOCKDESC_COMP_SNORM,
 240	SVGA3DBLOCKDESC_BC6H_COMP_TYPELESS =
 241		SVGA3DBLOCKDESC_BC6H | SVGA3DBLOCKDESC_COMP_TYPELESS,
 242	SVGA3DBLOCKDESC_BC6H_COMP_UF16 =
 243		SVGA3DBLOCKDESC_BC6H | SVGA3DBLOCKDESC_COMPRESSED,
 244	SVGA3DBLOCKDESC_BC6H_COMP_SF16 =
 245		SVGA3DBLOCKDESC_BC6H | SVGA3DBLOCKDESC_COMPRESSED,
 246	SVGA3DBLOCKDESC_BC7_COMP_TYPELESS =
 247		SVGA3DBLOCKDESC_BC7 | SVGA3DBLOCKDESC_COMP_TYPELESS,
 248	SVGA3DBLOCKDESC_BC7_COMP_UNORM =
 249		SVGA3DBLOCKDESC_BC7 | SVGA3DBLOCKDESC_COMP_UNORM,
 250	SVGA3DBLOCKDESC_BC7_COMP_UNORM_SRGB =
 251		SVGA3DBLOCKDESC_BC7_COMP_UNORM | SVGA3DBLOCKDESC_SRGB,
 252
 253	SVGA3DBLOCKDESC_NV12 =
 254		SVGA3DBLOCKDESC_YUV_VIDEO | SVGA3DBLOCKDESC_PLANAR_YUV |
 255		SVGA3DBLOCKDESC_2PLANAR_YUV | SVGA3DBLOCKDESC_COLOR,
 256	SVGA3DBLOCKDESC_YV12 =
 257		SVGA3DBLOCKDESC_YUV_VIDEO | SVGA3DBLOCKDESC_PLANAR_YUV |
 258		SVGA3DBLOCKDESC_3PLANAR_YUV | SVGA3DBLOCKDESC_COLOR,
 259
 260	SVGA3DBLOCKDESC_DEPTH_UINT =
 261		SVGA3DBLOCKDESC_DEPTH | SVGA3DBLOCKDESC_UINT,
 262	SVGA3DBLOCKDESC_DEPTH_UNORM =
 263		SVGA3DBLOCKDESC_DEPTH_UINT | SVGA3DBLOCKDESC_NORM,
 264	SVGA3DBLOCKDESC_DS = SVGA3DBLOCKDESC_DEPTH | SVGA3DBLOCKDESC_STENCIL,
 265	SVGA3DBLOCKDESC_DS_UINT = SVGA3DBLOCKDESC_DEPTH |
 266				  SVGA3DBLOCKDESC_STENCIL |
 267				  SVGA3DBLOCKDESC_UINT,
 268	SVGA3DBLOCKDESC_DS_UNORM =
 269		SVGA3DBLOCKDESC_DS_UINT | SVGA3DBLOCKDESC_NORM,
 270	SVGA3DBLOCKDESC_DEPTH_FP = SVGA3DBLOCKDESC_DEPTH | SVGA3DBLOCKDESC_FP,
 271
 272	SVGA3DBLOCKDESC_UV_UINT = SVGA3DBLOCKDESC_UV | SVGA3DBLOCKDESC_UINT,
 273	SVGA3DBLOCKDESC_UV_SNORM = SVGA3DBLOCKDESC_UV | SVGA3DBLOCKDESC_SINT |
 274				   SVGA3DBLOCKDESC_NORM,
 275	SVGA3DBLOCKDESC_UVCX_SNORM =
 276		SVGA3DBLOCKDESC_UV_SNORM | SVGA3DBLOCKDESC_CX,
 277	SVGA3DBLOCKDESC_UVWQ_SNORM = SVGA3DBLOCKDESC_UVWQ |
 278				     SVGA3DBLOCKDESC_SINT |
 279				     SVGA3DBLOCKDESC_NORM,
 280} SVGA3dBlockDesc;
 281
 282typedef struct SVGA3dChannelDef {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 283	union {
 284		uint8 blue;
 285		uint8 w_bump;
 286		uint8 l_bump;
 287		uint8 uv_video;
 288		uint8 u_video;
 289	};
 290	union {
 291		uint8 green;
 292		uint8 stencil;
 293		uint8 v_bump;
 294		uint8 v_video;
 295	};
 296	union {
 297		uint8 red;
 298		uint8 u_bump;
 299		uint8 luminance;
 300		uint8 y_video;
 301		uint8 depth;
 302		uint8 data;
 303	};
 304	union {
 305		uint8 alpha;
 306		uint8 q_bump;
 307		uint8 exp;
 308	};
 309} SVGA3dChannelDef;
 310
 311typedef struct SVGA3dSurfaceDesc {
 312	SVGA3dSurfaceFormat format;
 313	SVGA3dBlockDesc blockDesc;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 314
 315	SVGA3dSize blockSize;
 316	uint32 bytesPerBlock;
 317	uint32 pitchBytesPerBlock;
 318
 319	SVGA3dChannelDef bitDepth;
 320	SVGA3dChannelDef bitOffset;
 321} SVGA3dSurfaceDesc;
 322
 323STATIC_CONST SVGA3dSurfaceDesc g_SVGA3dSurfaceDescs[] = {
 324	{ SVGA3D_FORMAT_INVALID,
 325	  SVGA3DBLOCKDESC_NONE,
 326	  { 1, 1, 1 },
 327	  0,
 328	  0,
 329	  { { 0 }, { 0 }, { 0 }, { 0 } },
 330	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 331
 332	{ SVGA3D_X8R8G8B8,
 333	  SVGA3DBLOCKDESC_RGB_UNORM,
 334	  { 1, 1, 1 },
 335	  4,
 336	  4,
 337	  { { 8 }, { 8 }, { 8 }, { 0 } },
 338	  { { 0 }, { 8 }, { 16 }, { 24 } } },
 339
 340	{ SVGA3D_A8R8G8B8,
 341	  SVGA3DBLOCKDESC_RGBA_UNORM,
 342	  { 1, 1, 1 },
 343	  4,
 344	  4,
 345	  { { 8 }, { 8 }, { 8 }, { 8 } },
 346	  { { 0 }, { 8 }, { 16 }, { 24 } } },
 347
 348	{ SVGA3D_R5G6B5,
 349	  SVGA3DBLOCKDESC_RGB_UNORM,
 350	  { 1, 1, 1 },
 351	  2,
 352	  2,
 353	  { { 5 }, { 6 }, { 5 }, { 0 } },
 354	  { { 0 }, { 5 }, { 11 }, { 0 } } },
 355
 356	{ SVGA3D_X1R5G5B5,
 357	  SVGA3DBLOCKDESC_RGB_UNORM,
 358	  { 1, 1, 1 },
 359	  2,
 360	  2,
 361	  { { 5 }, { 5 }, { 5 }, { 0 } },
 362	  { { 0 }, { 5 }, { 10 }, { 0 } } },
 363
 364	{ SVGA3D_A1R5G5B5,
 365	  SVGA3DBLOCKDESC_RGBA_UNORM,
 366	  { 1, 1, 1 },
 367	  2,
 368	  2,
 369	  { { 5 }, { 5 }, { 5 }, { 1 } },
 370	  { { 0 }, { 5 }, { 10 }, { 15 } } },
 371
 372	{ SVGA3D_A4R4G4B4,
 373	  SVGA3DBLOCKDESC_RGBA_UNORM,
 374	  { 1, 1, 1 },
 375	  2,
 376	  2,
 377	  { { 4 }, { 4 }, { 4 }, { 4 } },
 378	  { { 0 }, { 4 }, { 8 }, { 12 } } },
 379
 380	{ SVGA3D_Z_D32,
 381	  SVGA3DBLOCKDESC_DEPTH_UNORM,
 382	  { 1, 1, 1 },
 383	  4,
 384	  4,
 385	  { { 0 }, { 0 }, { 32 }, { 0 } },
 386	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 387
 388	{ SVGA3D_Z_D16,
 389	  SVGA3DBLOCKDESC_DEPTH_UNORM,
 390	  { 1, 1, 1 },
 391	  2,
 392	  2,
 393	  { { 0 }, { 0 }, { 16 }, { 0 } },
 394	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 395
 396	{ SVGA3D_Z_D24S8,
 397	  SVGA3DBLOCKDESC_DS_UNORM,
 398	  { 1, 1, 1 },
 399	  4,
 400	  4,
 401	  { { 0 }, { 8 }, { 24 }, { 0 } },
 402	  { { 0 }, { 0 }, { 8 }, { 0 } } },
 403
 404	{ SVGA3D_Z_D15S1,
 405	  SVGA3DBLOCKDESC_DS_UNORM,
 406	  { 1, 1, 1 },
 407	  2,
 408	  2,
 409	  { { 0 }, { 1 }, { 15 }, { 0 } },
 410	  { { 0 }, { 0 }, { 1 }, { 0 } } },
 411
 412	{ SVGA3D_LUMINANCE8,
 413	  SVGA3DBLOCKDESC_L_UNORM,
 414	  { 1, 1, 1 },
 415	  1,
 416	  1,
 417	  { { 0 }, { 0 }, { 8 }, { 0 } },
 418	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 419
 420	{ SVGA3D_LUMINANCE4_ALPHA4,
 421	  SVGA3DBLOCKDESC_LA_UNORM,
 422	  { 1, 1, 1 },
 423	  1,
 424	  1,
 425	  { { 0 }, { 0 }, { 4 }, { 4 } },
 426	  { { 0 }, { 0 }, { 0 }, { 4 } } },
 427
 428	{ SVGA3D_LUMINANCE16,
 429	  SVGA3DBLOCKDESC_L_UNORM,
 430	  { 1, 1, 1 },
 431	  2,
 432	  2,
 433	  { { 0 }, { 0 }, { 16 }, { 0 } },
 434	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 435
 436	{ SVGA3D_LUMINANCE8_ALPHA8,
 437	  SVGA3DBLOCKDESC_LA_UNORM,
 438	  { 1, 1, 1 },
 439	  2,
 440	  2,
 441	  { { 0 }, { 0 }, { 8 }, { 8 } },
 442	  { { 0 }, { 0 }, { 0 }, { 8 } } },
 443
 444	{ SVGA3D_DXT1,
 445	  SVGA3DBLOCKDESC_BC1_COMP_UNORM,
 446	  { 4, 4, 1 },
 447	  8,
 448	  8,
 449	  { { 0 }, { 0 }, { 64 }, { 0 } },
 450	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 451
 452	{ SVGA3D_DXT2,
 453	  SVGA3DBLOCKDESC_BC2_COMP_UNORM,
 454	  { 4, 4, 1 },
 455	  16,
 456	  16,
 457	  { { 0 }, { 0 }, { 128 }, { 0 } },
 458	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 459
 460	{ SVGA3D_DXT3,
 461	  SVGA3DBLOCKDESC_BC2_COMP_UNORM,
 462	  { 4, 4, 1 },
 463	  16,
 464	  16,
 465	  { { 0 }, { 0 }, { 128 }, { 0 } },
 466	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 467
 468	{ SVGA3D_DXT4,
 469	  SVGA3DBLOCKDESC_BC3_COMP_UNORM,
 470	  { 4, 4, 1 },
 471	  16,
 472	  16,
 473	  { { 0 }, { 0 }, { 128 }, { 0 } },
 474	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 475
 476	{ SVGA3D_DXT5,
 477	  SVGA3DBLOCKDESC_BC3_COMP_UNORM,
 478	  { 4, 4, 1 },
 479	  16,
 480	  16,
 481	  { { 0 }, { 0 }, { 128 }, { 0 } },
 482	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 483
 484	{ SVGA3D_BUMPU8V8,
 485	  SVGA3DBLOCKDESC_UV_SNORM,
 486	  { 1, 1, 1 },
 487	  2,
 488	  2,
 489	  { { 0 }, { 8 }, { 8 }, { 0 } },
 490	  { { 0 }, { 8 }, { 0 }, { 0 } } },
 491
 492	{ SVGA3D_BUMPL6V5U5,
 493	  SVGA3DBLOCKDESC_UVL,
 494	  { 1, 1, 1 },
 495	  2,
 496	  2,
 497	  { { 6 }, { 5 }, { 5 }, { 0 } },
 498	  { { 10 }, { 5 }, { 0 }, { 0 } } },
 499
 500	{ SVGA3D_BUMPX8L8V8U8,
 501	  SVGA3DBLOCKDESC_UVL,
 502	  { 1, 1, 1 },
 503	  4,
 504	  4,
 505	  { { 8 }, { 8 }, { 8 }, { 0 } },
 506	  { { 16 }, { 8 }, { 0 }, { 0 } } },
 507
 508	{ SVGA3D_FORMAT_DEAD1,
 509	  SVGA3DBLOCKDESC_NONE,
 510	  { 1, 1, 1 },
 511	  3,
 512	  3,
 513	  { { 8 }, { 8 }, { 8 }, { 0 } },
 514	  { { 16 }, { 8 }, { 0 }, { 0 } } },
 515
 516	{ SVGA3D_ARGB_S10E5,
 517	  SVGA3DBLOCKDESC_RGBA_FP,
 518	  { 1, 1, 1 },
 519	  8,
 520	  8,
 521	  { { 16 }, { 16 }, { 16 }, { 16 } },
 522	  { { 32 }, { 16 }, { 0 }, { 48 } } },
 523
 524	{ SVGA3D_ARGB_S23E8,
 525	  SVGA3DBLOCKDESC_RGBA_FP,
 526	  { 1, 1, 1 },
 527	  16,
 528	  16,
 529	  { { 32 }, { 32 }, { 32 }, { 32 } },
 530	  { { 64 }, { 32 }, { 0 }, { 96 } } },
 531
 532	{ SVGA3D_A2R10G10B10,
 533	  SVGA3DBLOCKDESC_RGBA_UNORM,
 534	  { 1, 1, 1 },
 535	  4,
 536	  4,
 537	  { { 10 }, { 10 }, { 10 }, { 2 } },
 538	  { { 0 }, { 10 }, { 20 }, { 30 } } },
 539
 540	{ SVGA3D_V8U8,
 541	  SVGA3DBLOCKDESC_UV_SNORM,
 542	  { 1, 1, 1 },
 543	  2,
 544	  2,
 545	  { { 0 }, { 8 }, { 8 }, { 0 } },
 546	  { { 0 }, { 8 }, { 0 }, { 0 } } },
 547
 548	{ SVGA3D_Q8W8V8U8,
 549	  SVGA3DBLOCKDESC_UVWQ_SNORM,
 550	  { 1, 1, 1 },
 551	  4,
 552	  4,
 553	  { { 8 }, { 8 }, { 8 }, { 8 } },
 554	  { { 16 }, { 8 }, { 0 }, { 24 } } },
 555
 556	{ SVGA3D_CxV8U8,
 557	  SVGA3DBLOCKDESC_UVCX_SNORM,
 558	  { 1, 1, 1 },
 559	  2,
 560	  2,
 561	  { { 0 }, { 8 }, { 8 }, { 0 } },
 562	  { { 0 }, { 8 }, { 0 }, { 0 } } },
 563
 564	{ SVGA3D_X8L8V8U8,
 565	  SVGA3DBLOCKDESC_UVL,
 566	  { 1, 1, 1 },
 567	  4,
 568	  4,
 569	  { { 8 }, { 8 }, { 8 }, { 0 } },
 570	  { { 16 }, { 8 }, { 0 }, { 0 } } },
 571
 572	{ SVGA3D_A2W10V10U10,
 573	  SVGA3DBLOCKDESC_UVWA,
 574	  { 1, 1, 1 },
 575	  4,
 576	  4,
 577	  { { 10 }, { 10 }, { 10 }, { 2 } },
 578	  { { 20 }, { 10 }, { 0 }, { 30 } } },
 579
 580	{ SVGA3D_ALPHA8,
 581	  SVGA3DBLOCKDESC_A_UNORM,
 582	  { 1, 1, 1 },
 583	  1,
 584	  1,
 585	  { { 0 }, { 0 }, { 0 }, { 8 } },
 586	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 587
 588	{ SVGA3D_R_S10E5,
 589	  SVGA3DBLOCKDESC_R_FP,
 590	  { 1, 1, 1 },
 591	  2,
 592	  2,
 593	  { { 0 }, { 0 }, { 16 }, { 0 } },
 594	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 595
 596	{ SVGA3D_R_S23E8,
 597	  SVGA3DBLOCKDESC_R_FP,
 598	  { 1, 1, 1 },
 599	  4,
 600	  4,
 601	  { { 0 }, { 0 }, { 32 }, { 0 } },
 602	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 603
 604	{ SVGA3D_RG_S10E5,
 605	  SVGA3DBLOCKDESC_RG_FP,
 606	  { 1, 1, 1 },
 607	  4,
 608	  4,
 609	  { { 0 }, { 16 }, { 16 }, { 0 } },
 610	  { { 0 }, { 16 }, { 0 }, { 0 } } },
 611
 612	{ SVGA3D_RG_S23E8,
 613	  SVGA3DBLOCKDESC_RG_FP,
 614	  { 1, 1, 1 },
 615	  8,
 616	  8,
 617	  { { 0 }, { 32 }, { 32 }, { 0 } },
 618	  { { 0 }, { 32 }, { 0 }, { 0 } } },
 619
 620	{ SVGA3D_BUFFER,
 621	  SVGA3DBLOCKDESC_BUFFER,
 622	  { 1, 1, 1 },
 623	  1,
 624	  1,
 625	  { { 0 }, { 0 }, { 8 }, { 0 } },
 626	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 627
 628	{ SVGA3D_Z_D24X8,
 629	  SVGA3DBLOCKDESC_DEPTH_UNORM,
 630	  { 1, 1, 1 },
 631	  4,
 632	  4,
 633	  { { 0 }, { 0 }, { 24 }, { 0 } },
 634	  { { 0 }, { 0 }, { 8 }, { 0 } } },
 635
 636	{ SVGA3D_V16U16,
 637	  SVGA3DBLOCKDESC_UV_SNORM,
 638	  { 1, 1, 1 },
 639	  4,
 640	  4,
 641	  { { 0 }, { 16 }, { 16 }, { 0 } },
 642	  { { 0 }, { 16 }, { 0 }, { 0 } } },
 643
 644	{ SVGA3D_G16R16,
 645	  SVGA3DBLOCKDESC_RG_UNORM,
 646	  { 1, 1, 1 },
 647	  4,
 648	  4,
 649	  { { 0 }, { 16 }, { 16 }, { 0 } },
 650	  { { 0 }, { 16 }, { 0 }, { 0 } } },
 651
 652	{ SVGA3D_A16B16G16R16,
 653	  SVGA3DBLOCKDESC_RGBA_UNORM,
 654	  { 1, 1, 1 },
 655	  8,
 656	  8,
 657	  { { 16 }, { 16 }, { 16 }, { 16 } },
 658	  { { 32 }, { 16 }, { 0 }, { 48 } } },
 659
 660	{ SVGA3D_UYVY,
 661	  SVGA3DBLOCKDESC_YUV,
 662	  { 2, 1, 1 },
 663	  4,
 664	  4,
 665	  { { 8 }, { 0 }, { 8 }, { 0 } },
 666	  { { 0 }, { 0 }, { 8 }, { 0 } } },
 667
 668	{ SVGA3D_YUY2,
 669	  SVGA3DBLOCKDESC_YUV,
 670	  { 2, 1, 1 },
 671	  4,
 672	  4,
 673	  { { 8 }, { 0 }, { 8 }, { 0 } },
 674	  { { 8 }, { 0 }, { 0 }, { 0 } } },
 675
 676	{ SVGA3D_NV12,
 677	  SVGA3DBLOCKDESC_NV12,
 678	  { 2, 2, 1 },
 679	  6,
 680	  2,
 681	  { { 0 }, { 0 }, { 48 }, { 0 } },
 682	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 683
 684	{ SVGA3D_FORMAT_DEAD2,
 685	  SVGA3DBLOCKDESC_NONE,
 686	  { 1, 1, 1 },
 687	  4,
 688	  4,
 689	  { { 8 }, { 8 }, { 8 }, { 8 } },
 690	  { { 0 }, { 8 }, { 16 }, { 24 } } },
 691
 692	{ SVGA3D_R32G32B32A32_TYPELESS,
 693	  SVGA3DBLOCKDESC_TYPELESS,
 694	  { 1, 1, 1 },
 695	  16,
 696	  16,
 697	  { { 32 }, { 32 }, { 32 }, { 32 } },
 698	  { { 64 }, { 32 }, { 0 }, { 96 } } },
 699
 700	{ SVGA3D_R32G32B32A32_UINT,
 701	  SVGA3DBLOCKDESC_RGBA_UINT,
 702	  { 1, 1, 1 },
 703	  16,
 704	  16,
 705	  { { 32 }, { 32 }, { 32 }, { 32 } },
 706	  { { 64 }, { 32 }, { 0 }, { 96 } } },
 707
 708	{ SVGA3D_R32G32B32A32_SINT,
 709	  SVGA3DBLOCKDESC_RGBA_SINT,
 710	  { 1, 1, 1 },
 711	  16,
 712	  16,
 713	  { { 32 }, { 32 }, { 32 }, { 32 } },
 714	  { { 64 }, { 32 }, { 0 }, { 96 } } },
 715
 716	{ SVGA3D_R32G32B32_TYPELESS,
 717	  SVGA3DBLOCKDESC_TYPELESS,
 718	  { 1, 1, 1 },
 719	  12,
 720	  12,
 721	  { { 32 }, { 32 }, { 32 }, { 0 } },
 722	  { { 64 }, { 32 }, { 0 }, { 0 } } },
 723
 724	{ SVGA3D_R32G32B32_FLOAT,
 725	  SVGA3DBLOCKDESC_RGB_FP,
 726	  { 1, 1, 1 },
 727	  12,
 728	  12,
 729	  { { 32 }, { 32 }, { 32 }, { 0 } },
 730	  { { 64 }, { 32 }, { 0 }, { 0 } } },
 731
 732	{ SVGA3D_R32G32B32_UINT,
 733	  SVGA3DBLOCKDESC_RGB_UINT,
 734	  { 1, 1, 1 },
 735	  12,
 736	  12,
 737	  { { 32 }, { 32 }, { 32 }, { 0 } },
 738	  { { 64 }, { 32 }, { 0 }, { 0 } } },
 739
 740	{ SVGA3D_R32G32B32_SINT,
 741	  SVGA3DBLOCKDESC_RGB_SINT,
 742	  { 1, 1, 1 },
 743	  12,
 744	  12,
 745	  { { 32 }, { 32 }, { 32 }, { 0 } },
 746	  { { 64 }, { 32 }, { 0 }, { 0 } } },
 747
 748	{ SVGA3D_R16G16B16A16_TYPELESS,
 749	  SVGA3DBLOCKDESC_TYPELESS,
 750	  { 1, 1, 1 },
 751	  8,
 752	  8,
 753	  { { 16 }, { 16 }, { 16 }, { 16 } },
 754	  { { 32 }, { 16 }, { 0 }, { 48 } } },
 755
 756	{ SVGA3D_R16G16B16A16_UINT,
 757	  SVGA3DBLOCKDESC_RGBA_UINT,
 758	  { 1, 1, 1 },
 759	  8,
 760	  8,
 761	  { { 16 }, { 16 }, { 16 }, { 16 } },
 762	  { { 32 }, { 16 }, { 0 }, { 48 } } },
 763
 764	{ SVGA3D_R16G16B16A16_SNORM,
 765	  SVGA3DBLOCKDESC_RGBA_SNORM,
 766	  { 1, 1, 1 },
 767	  8,
 768	  8,
 769	  { { 16 }, { 16 }, { 16 }, { 16 } },
 770	  { { 32 }, { 16 }, { 0 }, { 48 } } },
 771
 772	{ SVGA3D_R16G16B16A16_SINT,
 773	  SVGA3DBLOCKDESC_RGBA_SINT,
 774	  { 1, 1, 1 },
 775	  8,
 776	  8,
 777	  { { 16 }, { 16 }, { 16 }, { 16 } },
 778	  { { 32 }, { 16 }, { 0 }, { 48 } } },
 779
 780	{ SVGA3D_R32G32_TYPELESS,
 781	  SVGA3DBLOCKDESC_TYPELESS,
 782	  { 1, 1, 1 },
 783	  8,
 784	  8,
 785	  { { 0 }, { 32 }, { 32 }, { 0 } },
 786	  { { 0 }, { 32 }, { 0 }, { 0 } } },
 787
 788	{ SVGA3D_R32G32_UINT,
 789	  SVGA3DBLOCKDESC_RG_UINT,
 790	  { 1, 1, 1 },
 791	  8,
 792	  8,
 793	  { { 0 }, { 32 }, { 32 }, { 0 } },
 794	  { { 0 }, { 32 }, { 0 }, { 0 } } },
 795
 796	{ SVGA3D_R32G32_SINT,
 797	  SVGA3DBLOCKDESC_RG_SINT,
 798	  { 1, 1, 1 },
 799	  8,
 800	  8,
 801	  { { 0 }, { 32 }, { 32 }, { 0 } },
 802	  { { 0 }, { 32 }, { 0 }, { 0 } } },
 803
 804	{ SVGA3D_R32G8X24_TYPELESS,
 805	  SVGA3DBLOCKDESC_TYPELESS,
 806	  { 1, 1, 1 },
 807	  8,
 808	  8,
 809	  { { 0 }, { 8 }, { 32 }, { 0 } },
 810	  { { 0 }, { 32 }, { 0 }, { 0 } } },
 811
 812	{ SVGA3D_D32_FLOAT_S8X24_UINT,
 813	  SVGA3DBLOCKDESC_DS,
 814	  { 1, 1, 1 },
 815	  8,
 816	  8,
 817	  { { 0 }, { 8 }, { 32 }, { 0 } },
 818	  { { 0 }, { 32 }, { 0 }, { 0 } } },
 819
 820	{ SVGA3D_R32_FLOAT_X8X24,
 821	  SVGA3DBLOCKDESC_R_FP,
 822	  { 1, 1, 1 },
 823	  8,
 824	  8,
 825	  { { 0 }, { 0 }, { 32 }, { 0 } },
 826	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 827
 828	{ SVGA3D_X32_G8X24_UINT,
 829	  SVGA3DBLOCKDESC_G_UINT,
 830	  { 1, 1, 1 },
 831	  8,
 832	  8,
 833	  { { 0 }, { 8 }, { 0 }, { 0 } },
 834	  { { 0 }, { 32 }, { 0 }, { 0 } } },
 835
 836	{ SVGA3D_R10G10B10A2_TYPELESS,
 837	  SVGA3DBLOCKDESC_TYPELESS,
 838	  { 1, 1, 1 },
 839	  4,
 840	  4,
 841	  { { 10 }, { 10 }, { 10 }, { 2 } },
 842	  { { 20 }, { 10 }, { 0 }, { 30 } } },
 843
 844	{ SVGA3D_R10G10B10A2_UINT,
 845	  SVGA3DBLOCKDESC_RGBA_UINT,
 846	  { 1, 1, 1 },
 847	  4,
 848	  4,
 849	  { { 10 }, { 10 }, { 10 }, { 2 } },
 850	  { { 20 }, { 10 }, { 0 }, { 30 } } },
 851
 852	{ SVGA3D_R11G11B10_FLOAT,
 853	  SVGA3DBLOCKDESC_RGB_FP,
 854	  { 1, 1, 1 },
 855	  4,
 856	  4,
 857	  { { 10 }, { 11 }, { 11 }, { 0 } },
 858	  { { 22 }, { 11 }, { 0 }, { 0 } } },
 859
 860	{ SVGA3D_R8G8B8A8_TYPELESS,
 861	  SVGA3DBLOCKDESC_TYPELESS,
 862	  { 1, 1, 1 },
 863	  4,
 864	  4,
 865	  { { 8 }, { 8 }, { 8 }, { 8 } },
 866	  { { 16 }, { 8 }, { 0 }, { 24 } } },
 867
 868	{ SVGA3D_R8G8B8A8_UNORM,
 869	  SVGA3DBLOCKDESC_RGBA_UNORM,
 870	  { 1, 1, 1 },
 871	  4,
 872	  4,
 873	  { { 8 }, { 8 }, { 8 }, { 8 } },
 874	  { { 16 }, { 8 }, { 0 }, { 24 } } },
 875
 876	{ SVGA3D_R8G8B8A8_UNORM_SRGB,
 877	  SVGA3DBLOCKDESC_RGBA_UNORM_SRGB,
 878	  { 1, 1, 1 },
 879	  4,
 880	  4,
 881	  { { 8 }, { 8 }, { 8 }, { 8 } },
 882	  { { 16 }, { 8 }, { 0 }, { 24 } } },
 883
 884	{ SVGA3D_R8G8B8A8_UINT,
 885	  SVGA3DBLOCKDESC_RGBA_UINT,
 886	  { 1, 1, 1 },
 887	  4,
 888	  4,
 889	  { { 8 }, { 8 }, { 8 }, { 8 } },
 890	  { { 16 }, { 8 }, { 0 }, { 24 } } },
 891
 892	{ SVGA3D_R8G8B8A8_SINT,
 893	  SVGA3DBLOCKDESC_RGBA_SINT,
 894	  { 1, 1, 1 },
 895	  4,
 896	  4,
 897	  { { 8 }, { 8 }, { 8 }, { 8 } },
 898	  { { 16 }, { 8 }, { 0 }, { 24 } } },
 899
 900	{ SVGA3D_R16G16_TYPELESS,
 901	  SVGA3DBLOCKDESC_TYPELESS,
 902	  { 1, 1, 1 },
 903	  4,
 904	  4,
 905	  { { 0 }, { 16 }, { 16 }, { 0 } },
 906	  { { 0 }, { 16 }, { 0 }, { 0 } } },
 907
 908	{ SVGA3D_R16G16_UINT,
 909	  SVGA3DBLOCKDESC_RG_UINT,
 910	  { 1, 1, 1 },
 911	  4,
 912	  4,
 913	  { { 0 }, { 16 }, { 16 }, { 0 } },
 914	  { { 0 }, { 16 }, { 0 }, { 0 } } },
 915
 916	{ SVGA3D_R16G16_SINT,
 917	  SVGA3DBLOCKDESC_RG_SINT,
 918	  { 1, 1, 1 },
 919	  4,
 920	  4,
 921	  { { 0 }, { 16 }, { 16 }, { 0 } },
 922	  { { 0 }, { 16 }, { 0 }, { 0 } } },
 923
 924	{ SVGA3D_R32_TYPELESS,
 925	  SVGA3DBLOCKDESC_TYPELESS,
 926	  { 1, 1, 1 },
 927	  4,
 928	  4,
 929	  { { 0 }, { 0 }, { 32 }, { 0 } },
 930	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 931
 932	{ SVGA3D_D32_FLOAT,
 933	  SVGA3DBLOCKDESC_DEPTH_FP,
 934	  { 1, 1, 1 },
 935	  4,
 936	  4,
 937	  { { 0 }, { 0 }, { 32 }, { 0 } },
 938	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 939
 940	{ SVGA3D_R32_UINT,
 941	  SVGA3DBLOCKDESC_R_UINT,
 942	  { 1, 1, 1 },
 943	  4,
 944	  4,
 945	  { { 0 }, { 0 }, { 32 }, { 0 } },
 946	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 947
 948	{ SVGA3D_R32_SINT,
 949	  SVGA3DBLOCKDESC_R_SINT,
 950	  { 1, 1, 1 },
 951	  4,
 952	  4,
 953	  { { 0 }, { 0 }, { 32 }, { 0 } },
 954	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 955
 956	{ SVGA3D_R24G8_TYPELESS,
 957	  SVGA3DBLOCKDESC_TYPELESS,
 958	  { 1, 1, 1 },
 959	  4,
 960	  4,
 961	  { { 0 }, { 8 }, { 24 }, { 0 } },
 962	  { { 0 }, { 24 }, { 0 }, { 0 } } },
 963
 964	{ SVGA3D_D24_UNORM_S8_UINT,
 965	  SVGA3DBLOCKDESC_DS_UNORM,
 966	  { 1, 1, 1 },
 967	  4,
 968	  4,
 969	  { { 0 }, { 8 }, { 24 }, { 0 } },
 970	  { { 0 }, { 24 }, { 0 }, { 0 } } },
 971
 972	{ SVGA3D_R24_UNORM_X8,
 973	  SVGA3DBLOCKDESC_R_UNORM,
 974	  { 1, 1, 1 },
 975	  4,
 976	  4,
 977	  { { 0 }, { 0 }, { 24 }, { 0 } },
 978	  { { 0 }, { 0 }, { 0 }, { 0 } } },
 979
 980	{ SVGA3D_X24_G8_UINT,
 981	  SVGA3DBLOCKDESC_G_UINT,
 982	  { 1, 1, 1 },
 983	  4,
 984	  4,
 985	  { { 0 }, { 8 }, { 0 }, { 0 } },
 986	  { { 0 }, { 24 }, { 0 }, { 0 } } },
 987
 988	{ SVGA3D_R8G8_TYPELESS,
 989	  SVGA3DBLOCKDESC_TYPELESS,
 990	  { 1, 1, 1 },
 991	  2,
 992	  2,
 993	  { { 0 }, { 8 }, { 8 }, { 0 } },
 994	  { { 0 }, { 8 }, { 0 }, { 0 } } },
 995
 996	{ SVGA3D_R8G8_UNORM,
 997	  SVGA3DBLOCKDESC_RG_UNORM,
 998	  { 1, 1, 1 },
 999	  2,
1000	  2,
1001	  { { 0 }, { 8 }, { 8 }, { 0 } },
1002	  { { 0 }, { 8 }, { 0 }, { 0 } } },
1003
1004	{ SVGA3D_R8G8_UINT,
1005	  SVGA3DBLOCKDESC_RG_UINT,
1006	  { 1, 1, 1 },
1007	  2,
1008	  2,
1009	  { { 0 }, { 8 }, { 8 }, { 0 } },
1010	  { { 0 }, { 8 }, { 0 }, { 0 } } },
1011
1012	{ SVGA3D_R8G8_SINT,
1013	  SVGA3DBLOCKDESC_RG_SINT,
1014	  { 1, 1, 1 },
1015	  2,
1016	  2,
1017	  { { 0 }, { 8 }, { 8 }, { 0 } },
1018	  { { 0 }, { 8 }, { 0 }, { 0 } } },
1019
1020	{ SVGA3D_R16_TYPELESS,
1021	  SVGA3DBLOCKDESC_TYPELESS,
1022	  { 1, 1, 1 },
1023	  2,
1024	  2,
1025	  { { 0 }, { 0 }, { 16 }, { 0 } },
1026	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1027
1028	{ SVGA3D_R16_UNORM,
1029	  SVGA3DBLOCKDESC_R_UNORM,
1030	  { 1, 1, 1 },
1031	  2,
1032	  2,
1033	  { { 0 }, { 0 }, { 16 }, { 0 } },
1034	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1035
1036	{ SVGA3D_R16_UINT,
1037	  SVGA3DBLOCKDESC_R_UINT,
1038	  { 1, 1, 1 },
1039	  2,
1040	  2,
1041	  { { 0 }, { 0 }, { 16 }, { 0 } },
1042	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1043
1044	{ SVGA3D_R16_SNORM,
1045	  SVGA3DBLOCKDESC_R_SNORM,
1046	  { 1, 1, 1 },
1047	  2,
1048	  2,
1049	  { { 0 }, { 0 }, { 16 }, { 0 } },
1050	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1051
1052	{ SVGA3D_R16_SINT,
1053	  SVGA3DBLOCKDESC_R_SINT,
1054	  { 1, 1, 1 },
1055	  2,
1056	  2,
1057	  { { 0 }, { 0 }, { 16 }, { 0 } },
1058	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1059
1060	{ SVGA3D_R8_TYPELESS,
1061	  SVGA3DBLOCKDESC_TYPELESS,
1062	  { 1, 1, 1 },
1063	  1,
1064	  1,
1065	  { { 0 }, { 0 }, { 8 }, { 0 } },
1066	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1067
1068	{ SVGA3D_R8_UNORM,
1069	  SVGA3DBLOCKDESC_R_UNORM,
1070	  { 1, 1, 1 },
1071	  1,
1072	  1,
1073	  { { 0 }, { 0 }, { 8 }, { 0 } },
1074	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1075
1076	{ SVGA3D_R8_UINT,
1077	  SVGA3DBLOCKDESC_R_UINT,
1078	  { 1, 1, 1 },
1079	  1,
1080	  1,
1081	  { { 0 }, { 0 }, { 8 }, { 0 } },
1082	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1083
1084	{ SVGA3D_R8_SNORM,
1085	  SVGA3DBLOCKDESC_R_SNORM,
1086	  { 1, 1, 1 },
1087	  1,
1088	  1,
1089	  { { 0 }, { 0 }, { 8 }, { 0 } },
1090	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1091
1092	{ SVGA3D_R8_SINT,
1093	  SVGA3DBLOCKDESC_R_SINT,
1094	  { 1, 1, 1 },
1095	  1,
1096	  1,
1097	  { { 0 }, { 0 }, { 8 }, { 0 } },
1098	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1099
1100	{ SVGA3D_P8,
1101	  SVGA3DBLOCKDESC_NONE,
1102	  { 1, 1, 1 },
1103	  1,
1104	  1,
1105	  { { 0 }, { 0 }, { 8 }, { 0 } },
1106	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1107
1108	{ SVGA3D_R9G9B9E5_SHAREDEXP,
1109	  SVGA3DBLOCKDESC_RGB_EXP,
1110	  { 1, 1, 1 },
1111	  4,
1112	  4,
1113	  { { 9 }, { 9 }, { 9 }, { 5 } },
1114	  { { 18 }, { 9 }, { 0 }, { 27 } } },
1115
1116	{ SVGA3D_R8G8_B8G8_UNORM,
1117	  SVGA3DBLOCKDESC_NONE,
1118	  { 2, 1, 1 },
1119	  4,
1120	  4,
1121	  { { 0 }, { 8 }, { 8 }, { 0 } },
1122	  { { 0 }, { 0 }, { 8 }, { 0 } } },
1123
1124	{ SVGA3D_G8R8_G8B8_UNORM,
1125	  SVGA3DBLOCKDESC_NONE,
1126	  { 2, 1, 1 },
1127	  4,
1128	  4,
1129	  { { 0 }, { 8 }, { 8 }, { 0 } },
1130	  { { 0 }, { 8 }, { 0 }, { 0 } } },
1131
1132	{ SVGA3D_BC1_TYPELESS,
1133	  SVGA3DBLOCKDESC_BC1_COMP_TYPELESS,
1134	  { 4, 4, 1 },
1135	  8,
1136	  8,
1137	  { { 0 }, { 0 }, { 64 }, { 0 } },
1138	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1139
1140	{ SVGA3D_BC1_UNORM_SRGB,
1141	  SVGA3DBLOCKDESC_BC1_COMP_UNORM_SRGB,
1142	  { 4, 4, 1 },
1143	  8,
1144	  8,
1145	  { { 0 }, { 0 }, { 64 }, { 0 } },
1146	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1147
1148	{ SVGA3D_BC2_TYPELESS,
1149	  SVGA3DBLOCKDESC_BC2_COMP_TYPELESS,
1150	  { 4, 4, 1 },
1151	  16,
1152	  16,
1153	  { { 0 }, { 0 }, { 128 }, { 0 } },
1154	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1155
1156	{ SVGA3D_BC2_UNORM_SRGB,
1157	  SVGA3DBLOCKDESC_BC2_COMP_UNORM_SRGB,
1158	  { 4, 4, 1 },
1159	  16,
1160	  16,
1161	  { { 0 }, { 0 }, { 128 }, { 0 } },
1162	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1163
1164	{ SVGA3D_BC3_TYPELESS,
1165	  SVGA3DBLOCKDESC_BC3_COMP_TYPELESS,
1166	  { 4, 4, 1 },
1167	  16,
1168	  16,
1169	  { { 0 }, { 0 }, { 128 }, { 0 } },
1170	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1171
1172	{ SVGA3D_BC3_UNORM_SRGB,
1173	  SVGA3DBLOCKDESC_BC3_COMP_UNORM_SRGB,
1174	  { 4, 4, 1 },
1175	  16,
1176	  16,
1177	  { { 0 }, { 0 }, { 128 }, { 0 } },
1178	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1179
1180	{ SVGA3D_BC4_TYPELESS,
1181	  SVGA3DBLOCKDESC_BC4_COMP_TYPELESS,
1182	  { 4, 4, 1 },
1183	  8,
1184	  8,
1185	  { { 0 }, { 0 }, { 64 }, { 0 } },
1186	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1187
1188	{ SVGA3D_ATI1,
1189	  SVGA3DBLOCKDESC_BC4_COMP_UNORM,
1190	  { 4, 4, 1 },
1191	  8,
1192	  8,
1193	  { { 0 }, { 0 }, { 64 }, { 0 } },
1194	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1195
1196	{ SVGA3D_BC4_SNORM,
1197	  SVGA3DBLOCKDESC_BC4_COMP_SNORM,
1198	  { 4, 4, 1 },
1199	  8,
1200	  8,
1201	  { { 0 }, { 0 }, { 64 }, { 0 } },
1202	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1203
1204	{ SVGA3D_BC5_TYPELESS,
1205	  SVGA3DBLOCKDESC_BC5_COMP_TYPELESS,
1206	  { 4, 4, 1 },
1207	  16,
1208	  16,
1209	  { { 0 }, { 0 }, { 128 }, { 0 } },
1210	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1211
1212	{ SVGA3D_ATI2,
1213	  SVGA3DBLOCKDESC_BC5_COMP_UNORM,
1214	  { 4, 4, 1 },
1215	  16,
1216	  16,
1217	  { { 0 }, { 0 }, { 128 }, { 0 } },
1218	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1219
1220	{ SVGA3D_BC5_SNORM,
1221	  SVGA3DBLOCKDESC_BC5_COMP_SNORM,
1222	  { 4, 4, 1 },
1223	  16,
1224	  16,
1225	  { { 0 }, { 0 }, { 128 }, { 0 } },
1226	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1227
1228	{ SVGA3D_R10G10B10_XR_BIAS_A2_UNORM,
1229	  SVGA3DBLOCKDESC_RGBA_UNORM,
1230	  { 1, 1, 1 },
1231	  4,
1232	  4,
1233	  { { 10 }, { 10 }, { 10 }, { 2 } },
1234	  { { 20 }, { 10 }, { 0 }, { 30 } } },
1235
1236	{ SVGA3D_B8G8R8A8_TYPELESS,
1237	  SVGA3DBLOCKDESC_TYPELESS,
1238	  { 1, 1, 1 },
1239	  4,
1240	  4,
1241	  { { 8 }, { 8 }, { 8 }, { 8 } },
1242	  { { 0 }, { 8 }, { 16 }, { 24 } } },
1243
1244	{ SVGA3D_B8G8R8A8_UNORM_SRGB,
1245	  SVGA3DBLOCKDESC_RGBA_UNORM_SRGB,
1246	  { 1, 1, 1 },
1247	  4,
1248	  4,
1249	  { { 8 }, { 8 }, { 8 }, { 8 } },
1250	  { { 0 }, { 8 }, { 16 }, { 24 } } },
1251
1252	{ SVGA3D_B8G8R8X8_TYPELESS,
1253	  SVGA3DBLOCKDESC_TYPELESS,
1254	  { 1, 1, 1 },
1255	  4,
1256	  4,
1257	  { { 8 }, { 8 }, { 8 }, { 0 } },
1258	  { { 0 }, { 8 }, { 16 }, { 24 } } },
1259
1260	{ SVGA3D_B8G8R8X8_UNORM_SRGB,
1261	  SVGA3DBLOCKDESC_RGB_UNORM_SRGB,
1262	  { 1, 1, 1 },
1263	  4,
1264	  4,
1265	  { { 8 }, { 8 }, { 8 }, { 0 } },
1266	  { { 0 }, { 8 }, { 16 }, { 24 } } },
1267
1268	{ SVGA3D_Z_DF16,
1269	  SVGA3DBLOCKDESC_DEPTH_UNORM,
1270	  { 1, 1, 1 },
1271	  2,
1272	  2,
1273	  { { 0 }, { 0 }, { 16 }, { 0 } },
1274	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1275
1276	{ SVGA3D_Z_DF24,
1277	  SVGA3DBLOCKDESC_DEPTH_UNORM,
1278	  { 1, 1, 1 },
1279	  4,
1280	  4,
1281	  { { 0 }, { 0 }, { 24 }, { 0 } },
1282	  { { 0 }, { 0 }, { 8 }, { 0 } } },
1283
1284	{ SVGA3D_Z_D24S8_INT,
1285	  SVGA3DBLOCKDESC_DS_UNORM,
1286	  { 1, 1, 1 },
1287	  4,
1288	  4,
1289	  { { 0 }, { 8 }, { 24 }, { 0 } },
1290	  { { 0 }, { 0 }, { 8 }, { 0 } } },
1291
1292	{ SVGA3D_YV12,
1293	  SVGA3DBLOCKDESC_YV12,
1294	  { 2, 2, 1 },
1295	  6,
1296	  2,
1297	  { { 0 }, { 0 }, { 48 }, { 0 } },
1298	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1299
1300	{ SVGA3D_R32G32B32A32_FLOAT,
1301	  SVGA3DBLOCKDESC_RGBA_FP,
1302	  { 1, 1, 1 },
1303	  16,
1304	  16,
1305	  { { 32 }, { 32 }, { 32 }, { 32 } },
1306	  { { 64 }, { 32 }, { 0 }, { 96 } } },
1307
1308	{ SVGA3D_R16G16B16A16_FLOAT,
1309	  SVGA3DBLOCKDESC_RGBA_FP,
1310	  { 1, 1, 1 },
1311	  8,
1312	  8,
1313	  { { 16 }, { 16 }, { 16 }, { 16 } },
1314	  { { 32 }, { 16 }, { 0 }, { 48 } } },
1315
1316	{ SVGA3D_R16G16B16A16_UNORM,
1317	  SVGA3DBLOCKDESC_RGBA_UNORM,
1318	  { 1, 1, 1 },
1319	  8,
1320	  8,
1321	  { { 16 }, { 16 }, { 16 }, { 16 } },
1322	  { { 32 }, { 16 }, { 0 }, { 48 } } },
1323
1324	{ SVGA3D_R32G32_FLOAT,
1325	  SVGA3DBLOCKDESC_RG_FP,
1326	  { 1, 1, 1 },
1327	  8,
1328	  8,
1329	  { { 0 }, { 32 }, { 32 }, { 0 } },
1330	  { { 0 }, { 32 }, { 0 }, { 0 } } },
1331
1332	{ SVGA3D_R10G10B10A2_UNORM,
1333	  SVGA3DBLOCKDESC_RGBA_UNORM,
1334	  { 1, 1, 1 },
1335	  4,
1336	  4,
1337	  { { 10 }, { 10 }, { 10 }, { 2 } },
1338	  { { 20 }, { 10 }, { 0 }, { 30 } } },
1339
1340	{ SVGA3D_R8G8B8A8_SNORM,
1341	  SVGA3DBLOCKDESC_RGBA_SNORM,
1342	  { 1, 1, 1 },
1343	  4,
1344	  4,
1345	  { { 8 }, { 8 }, { 8 }, { 8 } },
1346	  { { 16 }, { 8 }, { 0 }, { 24 } } },
1347
1348	{ SVGA3D_R16G16_FLOAT,
1349	  SVGA3DBLOCKDESC_RG_FP,
1350	  { 1, 1, 1 },
1351	  4,
1352	  4,
1353	  { { 0 }, { 16 }, { 16 }, { 0 } },
1354	  { { 0 }, { 16 }, { 0 }, { 0 } } },
1355
1356	{ SVGA3D_R16G16_UNORM,
1357	  SVGA3DBLOCKDESC_RG_UNORM,
1358	  { 1, 1, 1 },
1359	  4,
1360	  4,
1361	  { { 0 }, { 16 }, { 16 }, { 0 } },
1362	  { { 0 }, { 16 }, { 0 }, { 0 } } },
1363
1364	{ SVGA3D_R16G16_SNORM,
1365	  SVGA3DBLOCKDESC_RG_SNORM,
1366	  { 1, 1, 1 },
1367	  4,
1368	  4,
1369	  { { 0 }, { 16 }, { 16 }, { 0 } },
1370	  { { 0 }, { 16 }, { 0 }, { 0 } } },
1371
1372	{ SVGA3D_R32_FLOAT,
1373	  SVGA3DBLOCKDESC_R_FP,
1374	  { 1, 1, 1 },
1375	  4,
1376	  4,
1377	  { { 0 }, { 0 }, { 32 }, { 0 } },
1378	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1379
1380	{ SVGA3D_R8G8_SNORM,
1381	  SVGA3DBLOCKDESC_RG_SNORM,
1382	  { 1, 1, 1 },
1383	  2,
1384	  2,
1385	  { { 0 }, { 8 }, { 8 }, { 0 } },
1386	  { { 0 }, { 8 }, { 0 }, { 0 } } },
1387
1388	{ SVGA3D_R16_FLOAT,
1389	  SVGA3DBLOCKDESC_R_FP,
1390	  { 1, 1, 1 },
1391	  2,
1392	  2,
1393	  { { 0 }, { 0 }, { 16 }, { 0 } },
1394	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1395
1396	{ SVGA3D_D16_UNORM,
1397	  SVGA3DBLOCKDESC_DEPTH_UNORM,
1398	  { 1, 1, 1 },
1399	  2,
1400	  2,
1401	  { { 0 }, { 0 }, { 16 }, { 0 } },
1402	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1403
1404	{ SVGA3D_A8_UNORM,
1405	  SVGA3DBLOCKDESC_A_UNORM,
1406	  { 1, 1, 1 },
1407	  1,
1408	  1,
1409	  { { 0 }, { 0 }, { 0 }, { 8 } },
1410	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1411
1412	{ SVGA3D_BC1_UNORM,
1413	  SVGA3DBLOCKDESC_BC1_COMP_UNORM,
1414	  { 4, 4, 1 },
1415	  8,
1416	  8,
1417	  { { 0 }, { 0 }, { 64 }, { 0 } },
1418	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1419
1420	{ SVGA3D_BC2_UNORM,
1421	  SVGA3DBLOCKDESC_BC2_COMP_UNORM,
1422	  { 4, 4, 1 },
1423	  16,
1424	  16,
1425	  { { 0 }, { 0 }, { 128 }, { 0 } },
1426	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1427
1428	{ SVGA3D_BC3_UNORM,
1429	  SVGA3DBLOCKDESC_BC3_COMP_UNORM,
1430	  { 4, 4, 1 },
1431	  16,
1432	  16,
1433	  { { 0 }, { 0 }, { 128 }, { 0 } },
1434	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1435
1436	{ SVGA3D_B5G6R5_UNORM,
1437	  SVGA3DBLOCKDESC_RGB_UNORM,
1438	  { 1, 1, 1 },
1439	  2,
1440	  2,
1441	  { { 5 }, { 6 }, { 5 }, { 0 } },
1442	  { { 0 }, { 5 }, { 11 }, { 0 } } },
1443
1444	{ SVGA3D_B5G5R5A1_UNORM,
1445	  SVGA3DBLOCKDESC_RGBA_UNORM,
1446	  { 1, 1, 1 },
1447	  2,
1448	  2,
1449	  { { 5 }, { 5 }, { 5 }, { 1 } },
1450	  { { 0 }, { 5 }, { 10 }, { 15 } } },
1451
1452	{ SVGA3D_B8G8R8A8_UNORM,
1453	  SVGA3DBLOCKDESC_RGBA_UNORM,
1454	  { 1, 1, 1 },
1455	  4,
1456	  4,
1457	  { { 8 }, { 8 }, { 8 }, { 8 } },
1458	  { { 0 }, { 8 }, { 16 }, { 24 } } },
1459
1460	{ SVGA3D_B8G8R8X8_UNORM,
1461	  SVGA3DBLOCKDESC_RGB_UNORM,
1462	  { 1, 1, 1 },
1463	  4,
1464	  4,
1465	  { { 8 }, { 8 }, { 8 }, { 0 } },
1466	  { { 0 }, { 8 }, { 16 }, { 24 } } },
1467
1468	{ SVGA3D_BC4_UNORM,
1469	  SVGA3DBLOCKDESC_BC4_COMP_UNORM,
1470	  { 4, 4, 1 },
1471	  8,
1472	  8,
1473	  { { 0 }, { 0 }, { 64 }, { 0 } },
1474	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1475
1476	{ SVGA3D_BC5_UNORM,
1477	  SVGA3DBLOCKDESC_BC5_COMP_UNORM,
1478	  { 4, 4, 1 },
1479	  16,
1480	  16,
1481	  { { 0 }, { 0 }, { 128 }, { 0 } },
1482	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1483
1484	{ SVGA3D_B4G4R4A4_UNORM,
1485	  SVGA3DBLOCKDESC_RGBA_UNORM,
1486	  { 1, 1, 1 },
1487	  2,
1488	  2,
1489	  { { 4 }, { 4 }, { 4 }, { 4 } },
1490	  { { 0 }, { 4 }, { 8 }, { 12 } } },
1491
1492	{ SVGA3D_BC6H_TYPELESS,
1493	  SVGA3DBLOCKDESC_BC6H_COMP_TYPELESS,
1494	  { 4, 4, 1 },
1495	  16,
1496	  16,
1497	  { { 0 }, { 0 }, { 128 }, { 0 } },
1498	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1499
1500	{ SVGA3D_BC6H_UF16,
1501	  SVGA3DBLOCKDESC_BC6H_COMP_UF16,
1502	  { 4, 4, 1 },
1503	  16,
1504	  16,
1505	  { { 0 }, { 0 }, { 128 }, { 0 } },
1506	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1507
1508	{ SVGA3D_BC6H_SF16,
1509	  SVGA3DBLOCKDESC_BC6H_COMP_SF16,
1510	  { 4, 4, 1 },
1511	  16,
1512	  16,
1513	  { { 0 }, { 0 }, { 128 }, { 0 } },
1514	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1515
1516	{ SVGA3D_BC7_TYPELESS,
1517	  SVGA3DBLOCKDESC_BC7_COMP_TYPELESS,
1518	  { 4, 4, 1 },
1519	  16,
1520	  16,
1521	  { { 0 }, { 0 }, { 128 }, { 0 } },
1522	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1523
1524	{ SVGA3D_BC7_UNORM,
1525	  SVGA3DBLOCKDESC_BC7_COMP_UNORM,
1526	  { 4, 4, 1 },
1527	  16,
1528	  16,
1529	  { { 0 }, { 0 }, { 128 }, { 0 } },
1530	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1531
1532	{ SVGA3D_BC7_UNORM_SRGB,
1533	  SVGA3DBLOCKDESC_BC7_COMP_UNORM_SRGB,
1534	  { 4, 4, 1 },
1535	  16,
1536	  16,
1537	  { { 0 }, { 0 }, { 128 }, { 0 } },
1538	  { { 0 }, { 0 }, { 0 }, { 0 } } },
1539
1540	{ SVGA3D_AYUV,
1541	  SVGA3DBLOCKDESC_AYUV,
1542	  { 1, 1, 1 },
1543	  4,
1544	  4,
1545	  { { 8 }, { 8 }, { 8 }, { 8 } },
1546	  { { 0 }, { 8 }, { 16 }, { 24 } } },
1547
1548	{ SVGA3D_R11G11B10_TYPELESS,
1549	  SVGA3DBLOCKDESC_TYPELESS,
1550	  { 1, 1, 1 },
1551	  4,
1552	  4,
1553	  { { 10 }, { 11 }, { 11 }, { 0 } },
1554	  { { 22 }, { 11 }, { 0 }, { 0 } } },
1555};
1556
1557#ifdef __cplusplus
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1558}
1559#endif
1560
1561#endif