1c191b507cbbc4572c9a58cf019db08def651b265Brian Paul/************************************************************************** 22e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 3c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * Copyright � 1998-2015 VMware, Inc., Palo Alto, CA., USA 4c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * All Rights Reserved. 52e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 6c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 7c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * copy of this software and associated documentation files (the 8c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * "Software"), to deal in the Software without restriction, including 9c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * without limitation the rights to use, copy, modify, merge, publish, 10c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * distribute, sub license, and/or sell copies of the Software, and to 11c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * permit persons to whom the Software is furnished to do so, subject to 12c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * the following conditions: 132e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 14c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * The above copyright notice and this permission notice (including the 15c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * next paragraph) shall be included in all copies or substantial portions 16c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * of the Software. 172e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 18c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 21c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, 22c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 23c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 24c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * USE OR OTHER DEALINGS IN THE SOFTWARE. 25c191b507cbbc4572c9a58cf019db08def651b265Brian Paul * 26c191b507cbbc4572c9a58cf019db08def651b265Brian Paul **************************************************************************/ 272e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 282e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul/* 292e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * svga3d_surfacedefs.h -- 302e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 312e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Surface/format/image helper code. 322e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul */ 332e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 342e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul#include "svga3d_reg.h" 352e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 362e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul#define max_t(type, x, y) ((x) > (y) ? (x) : (y)) 372e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 382e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul/* 392e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * enum svga3d_block_desc describes the active data channels in a block. 402e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 412e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * There can be at-most four active channels in a block: 422e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 1. Red, bump W, luminance and depth are stored in the first channel. 432e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 2. Green, bump V and stencil are stored in the second channel. 442e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 3. Blue and bump U are stored in the third channel. 452e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 4. Alpha and bump Q are stored in the fourth channel. 462e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 472e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Block channels can be used to store compressed and buffer data: 482e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 1. For compressed formats, only the data channel is used and its size 492e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * is equal to that of a singular block in the compression scheme. 502e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 2. For buffer formats, only the data channel is used and its size is 512e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * exactly one byte in length. 522e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 3. In each case the bit depth represent the size of a singular block. 532e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 542e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Note: Compressed and IEEE formats do not use the bitMask structure. 552e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul */ 562e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 572e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulenum svga3d_block_desc { 582e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 59c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_NONE = 0, /* No channels are active */ 60c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_BLUE = 1 << 0, /* Block with red channel data */ 61c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_U = 1 << 0, /* Block with bump U channel data */ 62c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_GREEN = 1 << 1, /* Block with green channel data */ 63c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_V = 1 << 1, /* Block with bump V channel data */ 64c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RED = 1 << 2, /* Block with blue channel data */ 65c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_W = 1 << 2, /* Block with bump W channel data */ 66c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_LUMINANCE = 1 << 2, /* Block with luminance channel data */ 67c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_Y = 1 << 2, /* Block with video luminance data */ 68c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_ALPHA = 1 << 3, /* Block with an alpha channel */ 69c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_Q = 1 << 3, /* Block with bump Q channel data */ 70c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_BUFFER = 1 << 4, /* Block stores 1 byte of data */ 71c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_COMPRESSED = 1 << 5, /* Block stores n bytes of data depending 72c191b507cbbc4572c9a58cf019db08def651b265Brian Paul on the compression method used */ 73c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_IEEE_FP = 1 << 6, /* Block stores data in an IEEE floating point 74c191b507cbbc4572c9a58cf019db08def651b265Brian Paul representation in all channels */ 75c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_UV_VIDEO = 1 << 7, /* Block with alternating video U and V */ 76c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_PLANAR_YUV = 1 << 8, /* Three separate blocks store data. */ 77c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_U_VIDEO = 1 << 9, /* Block with U video data */ 78c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_V_VIDEO = 1 << 10, /* Block with V video data */ 79c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_EXP = 1 << 11, /* Shared exponent */ 80c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_SRGB = 1 << 12, /* Data is in sRGB format */ 81c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_2PLANAR_YUV = 1 << 13, /* 2 planes of Y, UV, e.g., NV12. */ 82c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_3PLANAR_YUV = 1 << 14, /* 3 planes of separate Y, U, V, e.g., YV12. */ 83c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_DEPTH = 1 << 15, /* Block with depth channel */ 84c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_STENCIL = 1 << 16, /* Block with a stencil channel */ 85c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 86c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RG = SVGA3DBLOCKDESC_RED | 87c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_GREEN, 88c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RGB = SVGA3DBLOCKDESC_RG | 89c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_BLUE, 90c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RGB_SRGB = SVGA3DBLOCKDESC_RGB | 91c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_SRGB, 92c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RGBA = SVGA3DBLOCKDESC_RGB | 93c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_ALPHA, 94c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RGBA_SRGB = SVGA3DBLOCKDESC_RGBA | 95c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_SRGB, 96c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_UV = SVGA3DBLOCKDESC_U | 97c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_V, 98c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_UVL = SVGA3DBLOCKDESC_UV | 99c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_LUMINANCE, 100c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_UVW = SVGA3DBLOCKDESC_UV | 101c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_W, 102c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_UVWA = SVGA3DBLOCKDESC_UVW | 103c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_ALPHA, 104c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_UVWQ = SVGA3DBLOCKDESC_U | 105c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_V | 106c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_W | 107c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_Q, 108c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_LA = SVGA3DBLOCKDESC_LUMINANCE | 109c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_ALPHA, 110c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_R_FP = SVGA3DBLOCKDESC_RED | 111c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_IEEE_FP, 112c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RG_FP = SVGA3DBLOCKDESC_R_FP | 113c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_GREEN, 114c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RGB_FP = SVGA3DBLOCKDESC_RG_FP | 115c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_BLUE, 116c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RGBA_FP = SVGA3DBLOCKDESC_RGB_FP | 117c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_ALPHA, 118c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_DS = SVGA3DBLOCKDESC_DEPTH | 119c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_STENCIL, 120c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_YUV = SVGA3DBLOCKDESC_UV_VIDEO | 121c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_Y, 122c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_AYUV = SVGA3DBLOCKDESC_ALPHA | 123c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_Y | 124c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_U_VIDEO | 125c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_V_VIDEO, 126c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_RGBE = SVGA3DBLOCKDESC_RGB | 127c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_EXP, 128c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_COMPRESSED_SRGB = SVGA3DBLOCKDESC_COMPRESSED | 129c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_SRGB, 130c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_NV12 = SVGA3DBLOCKDESC_PLANAR_YUV | 131c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_2PLANAR_YUV, 132c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_YV12 = SVGA3DBLOCKDESC_PLANAR_YUV | 133c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3DBLOCKDESC_3PLANAR_YUV, 1342e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul}; 1352e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 1362e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 137c191b507cbbc4572c9a58cf019db08def651b265Brian Paultypedef struct SVGA3dChannelDef { 138c191b507cbbc4572c9a58cf019db08def651b265Brian Paul union { 139c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 blue; 140c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 u; 141c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 uv_video; 142c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 u_video; 143c191b507cbbc4572c9a58cf019db08def651b265Brian Paul }; 144c191b507cbbc4572c9a58cf019db08def651b265Brian Paul union { 145c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 green; 146c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 v; 147c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 stencil; 148c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 v_video; 149c191b507cbbc4572c9a58cf019db08def651b265Brian Paul }; 150c191b507cbbc4572c9a58cf019db08def651b265Brian Paul union { 151c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 red; 152c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 w; 153c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 luminance; 154c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 y; 155c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 depth; 156c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 data; 157c191b507cbbc4572c9a58cf019db08def651b265Brian Paul }; 158c191b507cbbc4572c9a58cf019db08def651b265Brian Paul union { 159c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 alpha; 160c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 q; 161c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint8 exp; 162c191b507cbbc4572c9a58cf019db08def651b265Brian Paul }; 163c191b507cbbc4572c9a58cf019db08def651b265Brian Paul} SVGA3dChannelDef; 1642e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 165c191b507cbbc4572c9a58cf019db08def651b265Brian Paulstruct svga3d_surface_desc { 166c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3dSurfaceFormat format; 167c191b507cbbc4572c9a58cf019db08def651b265Brian Paul enum svga3d_block_desc block_desc; 1682e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 169c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3dSize block_size; 170c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint32 bytes_per_block; 171c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint32 pitch_bytes_per_block; 1722e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 173c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint32 totalBitDepth; 174c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3dChannelDef bitDepth; 175c191b507cbbc4572c9a58cf019db08def651b265Brian Paul SVGA3dChannelDef bitOffset; 176c191b507cbbc4572c9a58cf019db08def651b265Brian Paul}; 1772e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 178c191b507cbbc4572c9a58cf019db08def651b265Brian Paulstatic const struct svga3d_surface_desc svga3d_surface_descs[] = { 179c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_FORMAT_INVALID, SVGA3DBLOCKDESC_NONE, 180c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 0, 0, 181c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 0, {{0}, {0}, {0}, {0}}, 182c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 183c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 184c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_X8R8G8B8, SVGA3DBLOCKDESC_RGB, 185c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 186c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 24, {{8}, {8}, {8}, {0}}, 187c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 188c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 189c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_A8R8G8B8, SVGA3DBLOCKDESC_RGBA, 190c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 191c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 192c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 193c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 194c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R5G6B5, SVGA3DBLOCKDESC_RGB, 195c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 196c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{5}, {6}, {5}, {0}}, 197c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {5}, {11}, {0}}}, 198c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 199c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_X1R5G5B5, SVGA3DBLOCKDESC_RGB, 200c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 201c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 15, {{5}, {5}, {5}, {0}}, 202c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {5}, {10}, {0}}}, 203c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 204c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_A1R5G5B5, SVGA3DBLOCKDESC_RGBA, 205c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 206c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{5}, {5}, {5}, {1}}, 207c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {5}, {10}, {15}}}, 208c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 209c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_A4R4G4B4, SVGA3DBLOCKDESC_RGBA, 210c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 211c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{4}, {4}, {4}, {4}}, 212c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {4}, {8}, {12}}}, 213c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 214c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_D32, SVGA3DBLOCKDESC_DEPTH, 215c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 216c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {32}, {0}}, 217c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 218c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 219c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_D16, SVGA3DBLOCKDESC_DEPTH, 220c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 221c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 222c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 223c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 224c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_D24S8, SVGA3DBLOCKDESC_DS, 225c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 226c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {8}, {24}, {0}}, 227c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {24}, {0}, {0}}}, 228c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 229c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_D15S1, SVGA3DBLOCKDESC_DS, 230c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 231c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {1}, {15}, {0}}, 232c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {15}, {0}, {0}}}, 233c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 234c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_LUMINANCE8, SVGA3DBLOCKDESC_LUMINANCE, 235c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 236c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 237c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 238c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 239c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_LUMINANCE4_ALPHA4, SVGA3DBLOCKDESC_LA, 240c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1 , 1, 1}, 1, 1, 241c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {4}, {4}}, 242c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {4}}}, 243c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 244c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_LUMINANCE16, SVGA3DBLOCKDESC_LUMINANCE, 245c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 246c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 247c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 248c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 249c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_LUMINANCE8_ALPHA8, SVGA3DBLOCKDESC_LA, 250c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 251c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {8}, {8}}, 252c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {8}}}, 253c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 254c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_DXT1, SVGA3DBLOCKDESC_COMPRESSED, 255c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 256c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 257c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 258c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 259c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_DXT2, SVGA3DBLOCKDESC_COMPRESSED, 260c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 261c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 262c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 263c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 264c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_DXT3, SVGA3DBLOCKDESC_COMPRESSED, 265c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 266c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 267c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 268c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 269c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_DXT4, SVGA3DBLOCKDESC_COMPRESSED, 270c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 271c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 272c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 273c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 274c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_DXT5, SVGA3DBLOCKDESC_COMPRESSED, 275c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 276c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 277c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 278c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 279c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BUMPU8V8, SVGA3DBLOCKDESC_UV, 280c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 281c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {8}, {8}}, 282c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {8}}}, 283c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 284c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BUMPL6V5U5, SVGA3DBLOCKDESC_UVL, 285c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 286c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{5}, {5}, {6}, {0}}, 287c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{11}, {6}, {0}, {0}}}, 288c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 289c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BUMPX8L8V8U8, SVGA3DBLOCKDESC_UVL, 290c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 291c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {0}}, 292c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {8}, {0}, {0}}}, 293c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 294c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_FORMAT_DEAD1, SVGA3DBLOCKDESC_UVL, 295c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {0, 0, 0}, 0, 0, 296c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 0, {{0}, {0}, {0}, {0}}, 297c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 298c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 299c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_ARGB_S10E5, SVGA3DBLOCKDESC_RGBA_FP, 300c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 301c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 302c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 303c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 304c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_ARGB_S23E8, SVGA3DBLOCKDESC_RGBA_FP, 305c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 16, 16, 306c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{32}, {32}, {32}, {32}}, 307c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {96}}}, 308c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 309c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_A2R10G10B10, SVGA3DBLOCKDESC_RGBA, 310c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 311c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{10}, {10}, {10}, {2}}, 312c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {10}, {20}, {30}}}, 313c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 314c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_V8U8, SVGA3DBLOCKDESC_UV, 315c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 316c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{8}, {8}, {0}, {0}}, 317c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{8}, {0}, {0}, {0}}}, 318c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 319c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Q8W8V8U8, SVGA3DBLOCKDESC_UVWQ, 320c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 321c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 322c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{24}, {16}, {8}, {0}}}, 323c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 324c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_CxV8U8, SVGA3DBLOCKDESC_UV, 325c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 326c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{8}, {8}, {0}, {0}}, 327c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{8}, {0}, {0}, {0}}}, 328c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 329c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_X8L8V8U8, SVGA3DBLOCKDESC_UVL, 330c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 331c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 24, {{8}, {8}, {8}, {0}}, 332c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {8}, {0}, {0}}}, 333c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 334c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_A2W10V10U10, SVGA3DBLOCKDESC_UVWA, 335c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 336c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{10}, {10}, {10}, {2}}, 337c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {10}, {20}, {30}}}, 338c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 339c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_ALPHA8, SVGA3DBLOCKDESC_ALPHA, 340c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 341c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {0}, {8}}, 342c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 343c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 344c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R_S10E5, SVGA3DBLOCKDESC_R_FP, 345c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 346c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 347c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 348c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 349c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R_S23E8, SVGA3DBLOCKDESC_R_FP, 350c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 351c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {32}, {0}}, 352c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 353c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 354c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_RG_S10E5, SVGA3DBLOCKDESC_RG_FP, 355c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 356c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {16}, {16}, {0}}, 357c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {16}, {0}, {0}}}, 358c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 359c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_RG_S23E8, SVGA3DBLOCKDESC_RG_FP, 360c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 361c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {32}, {32}, {0}}, 362c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 363c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 364c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BUFFER, SVGA3DBLOCKDESC_BUFFER, 365c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 366c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 367c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 368c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 369c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_D24X8, SVGA3DBLOCKDESC_DEPTH, 370c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 371c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {24}, {0}}, 372c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {24}, {0}, {0}}}, 373c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 374c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_V16U16, SVGA3DBLOCKDESC_UV, 375c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 376c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{16}, {16}, {0}, {0}}, 377c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {0}, {0}, {0}}}, 378c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 379c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_G16R16, SVGA3DBLOCKDESC_RG, 380c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 381c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {16}, {16}, {0}}, 382c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {16}, {0}}}, 383c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 384c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_A16B16G16R16, SVGA3DBLOCKDESC_RGBA, 385c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 386c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 387c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 388c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 389c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_UYVY, SVGA3DBLOCKDESC_YUV, 390c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 391c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{8}, {0}, {8}, {0}}, 392c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {8}, {0}}}, 393c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 394c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_YUY2, SVGA3DBLOCKDESC_YUV, 395c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 396c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{8}, {0}, {8}, {0}}, 397c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{8}, {0}, {0}, {0}}}, 398c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 399c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_NV12, SVGA3DBLOCKDESC_NV12, 400c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {2, 2, 1}, 6, 2, 401c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 48, {{0}, {0}, {48}, {0}}, 402c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 403c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 404c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_AYUV, SVGA3DBLOCKDESC_AYUV, 405c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 406c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 407c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 408c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 409c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32A32_TYPELESS, SVGA3DBLOCKDESC_RGBA, 410c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 16, 16, 411c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{32}, {32}, {32}, {32}}, 412c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {96}}}, 413c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 414c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32A32_UINT, SVGA3DBLOCKDESC_RGBA, 415c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 16, 16, 416c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{32}, {32}, {32}, {32}}, 417c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {96}}}, 418c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 419c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32A32_SINT, SVGA3DBLOCKDESC_UVWQ, 420c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 16, 16, 421c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{32}, {32}, {32}, {32}}, 422c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {96}}}, 423c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 424c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32_TYPELESS, SVGA3DBLOCKDESC_RGB, 425c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 12, 12, 426c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 96, {{32}, {32}, {32}, {0}}, 427c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {0}}}, 428c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 429c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32_FLOAT, SVGA3DBLOCKDESC_RGB_FP, 430c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 12, 12, 431c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 96, {{32}, {32}, {32}, {0}}, 432c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {0}}}, 433c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 434c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32_UINT, SVGA3DBLOCKDESC_RGB, 435c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 12, 12, 436c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 96, {{32}, {32}, {32}, {0}}, 437c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {0}}}, 438c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 439c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32_SINT, SVGA3DBLOCKDESC_UVW, 440c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 12, 12, 441c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 96, {{32}, {32}, {32}, {0}}, 442c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {0}}}, 443c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 444c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16B16A16_TYPELESS, SVGA3DBLOCKDESC_RGBA, 445c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 446c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 447c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 448c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 449c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16B16A16_UINT, SVGA3DBLOCKDESC_RGBA, 450c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 451c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 452c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 453c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 454c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16B16A16_SNORM, SVGA3DBLOCKDESC_UVWQ, 455c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 456c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 457c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 458c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 459c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16B16A16_SINT, SVGA3DBLOCKDESC_UVWQ, 460c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 461c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 462c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 463c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 464c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32_TYPELESS, SVGA3DBLOCKDESC_RG, 465c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 466c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {32}, {32}, {0}}, 467c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 468c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 469c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32_UINT, SVGA3DBLOCKDESC_RG, 470c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 471c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {32}, {32}, {0}}, 472c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 473c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 474c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32_SINT, SVGA3DBLOCKDESC_UV, 475c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 476c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {32}, {32}, {0}}, 477c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 478c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 479c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G8X24_TYPELESS, SVGA3DBLOCKDESC_RG, 480c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 481c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {8}, {32}, {0}}, 482c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 483c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 484c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_D32_FLOAT_S8X24_UINT, SVGA3DBLOCKDESC_DS, 485c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 486c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {8}, {32}, {0}}, 487c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 488c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 489c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32_FLOAT_X8X24_TYPELESS, SVGA3DBLOCKDESC_R_FP, 490c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 491c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {32}, {0}}, 492c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 493c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 494c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_X32_TYPELESS_G8X24_UINT, SVGA3DBLOCKDESC_GREEN, 495c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 496c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {8}, {0}, {0}}, 497c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 498c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 499c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R10G10B10A2_TYPELESS, SVGA3DBLOCKDESC_RGBA, 500c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 501c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{10}, {10}, {10}, {2}}, 502c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {10}, {20}, {30}}}, 503c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 504c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R10G10B10A2_UINT, SVGA3DBLOCKDESC_RGBA, 505c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 506c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{10}, {10}, {10}, {2}}, 507c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {10}, {20}, {30}}}, 508c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 509c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R11G11B10_FLOAT, SVGA3DBLOCKDESC_RGB_FP, 510c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 511c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{10}, {11}, {11}, {0}}, 512c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {10}, {21}, {0}}}, 513c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 514c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8B8A8_TYPELESS, SVGA3DBLOCKDESC_RGBA, 515c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 516c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 517c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {8}, {0}, {24}}}, 518c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 519c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8B8A8_UNORM, SVGA3DBLOCKDESC_RGBA, 520c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 521c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 522c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {8}, {0}, {24}}}, 523c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 524c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8B8A8_UNORM_SRGB, SVGA3DBLOCKDESC_RGBA_SRGB, 525c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 526c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 527c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {8}, {0}, {24}}}, 528c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 529c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8B8A8_UINT, SVGA3DBLOCKDESC_RGBA, 530c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 531c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 532c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {8}, {0}, {24}}}, 533c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 534c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8B8A8_SINT, SVGA3DBLOCKDESC_RGBA, 535c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 536c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 537c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {8}, {0}, {24}}}, 538c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 539c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16_TYPELESS, SVGA3DBLOCKDESC_RG, 540c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 541c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {16}, {16}, {0}}, 542c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {16}, {0}, {0}}}, 543c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 544c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16_UINT, SVGA3DBLOCKDESC_RG_FP, 545c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 546c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {16}, {16}, {0}}, 547c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {16}, {0}, {0}}}, 548c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 549c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16_SINT, SVGA3DBLOCKDESC_UV, 550c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 551c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {16}, {16}, {0}}, 552c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {16}, {0}, {0}}}, 553c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 554c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32_TYPELESS, SVGA3DBLOCKDESC_RED, 555c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 556c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {32}, {0}}, 557c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 558c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 559c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_D32_FLOAT, SVGA3DBLOCKDESC_DEPTH, 560c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 561c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {32}, {0}}, 562c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 563c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 564c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32_UINT, SVGA3DBLOCKDESC_RED, 565c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 566c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {32}, {0}}, 567c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 568c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 569c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32_SINT, SVGA3DBLOCKDESC_RED, 570c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 571c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {32}, {0}}, 572c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 573c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 574c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R24G8_TYPELESS, SVGA3DBLOCKDESC_RG, 575c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 576c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {8}, {24}, {0}}, 577c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {24}, {0}, {0}}}, 578c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 579c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_D24_UNORM_S8_UINT, SVGA3DBLOCKDESC_DS, 580c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 581c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {8}, {24}, {0}}, 582c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {24}, {0}, {0}}}, 583c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 584c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R24_UNORM_X8_TYPELESS, SVGA3DBLOCKDESC_RED, 585c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 586c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {24}, {0}}, 587c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 588c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 589c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_X24_TYPELESS_G8_UINT, SVGA3DBLOCKDESC_GREEN, 590c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 591c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {8}, {0}, {0}}, 592c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {24}, {0}, {0}}}, 593c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 594c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8_TYPELESS, SVGA3DBLOCKDESC_RG, 595c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 596c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {8}, {8}, {0}}, 597c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {0}, {0}}}, 598c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 599c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8_UNORM, SVGA3DBLOCKDESC_RG, 600c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 601c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {8}, {8}, {0}}, 602c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {0}, {0}}}, 603c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 604c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8_UINT, SVGA3DBLOCKDESC_RG, 605c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 606c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {8}, {8}, {0}}, 607c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {0}, {0}}}, 608c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 609c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8_SINT, SVGA3DBLOCKDESC_UV, 610c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 611c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {8}, {8}, {0}}, 612c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {0}, {0}}}, 613c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 614c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16_TYPELESS, SVGA3DBLOCKDESC_RED, 615c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 616c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 617c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 618c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 619c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16_UNORM, SVGA3DBLOCKDESC_RED, 620c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 621c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 622c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 623c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 624c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16_UINT, SVGA3DBLOCKDESC_RED, 625c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 626c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 627c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 628c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 629c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16_SNORM, SVGA3DBLOCKDESC_U, 630c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 631c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 632c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 633c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 634c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16_SINT, SVGA3DBLOCKDESC_U, 635c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 636c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 637c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 638c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 639c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8_TYPELESS, SVGA3DBLOCKDESC_RED, 640c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 641c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 642c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 643c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 644c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8_UNORM, SVGA3DBLOCKDESC_RED, 645c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 646c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 647c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 648c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 649c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8_UINT, SVGA3DBLOCKDESC_RED, 650c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 651c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 652c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 653c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 654c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8_SNORM, SVGA3DBLOCKDESC_U, 655c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 656c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 657c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 658c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 659c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8_SINT, SVGA3DBLOCKDESC_U, 660c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 661c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 662c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 663c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 664c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_P8, SVGA3DBLOCKDESC_RED, 665c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 666c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {8}, {0}}, 667c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 668c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 669c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R9G9B9E5_SHAREDEXP, SVGA3DBLOCKDESC_RGBE, 670c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 671c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{9}, {9}, {9}, {5}}, 672c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{18}, {9}, {0}, {27}}}, 673c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 674c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8_B8G8_UNORM, SVGA3DBLOCKDESC_RG, 675c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 676c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {8}, {8}, {0}}, 677c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {0}, {0}}}, 678c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 679c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_G8R8_G8B8_UNORM, SVGA3DBLOCKDESC_RG, 680c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 681c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {8}, {8}, {0}}, 682c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {0}, {0}}}, 683c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 684c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC1_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED, 685c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 686c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 687c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 688c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 689c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC1_UNORM_SRGB, SVGA3DBLOCKDESC_COMPRESSED_SRGB, 690c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 691c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 692c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 693c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 694c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC2_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED, 695c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 696c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 697c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 698c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 699c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC2_UNORM_SRGB, SVGA3DBLOCKDESC_COMPRESSED_SRGB, 700c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 701c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 702c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 703c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 704c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC3_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED, 705c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 706c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 707c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 708c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 709c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC3_UNORM_SRGB, SVGA3DBLOCKDESC_COMPRESSED_SRGB, 710c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 711c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 712c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 713c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 714c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC4_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED, 715c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 716c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 717c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 718c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 719c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_ATI1, SVGA3DBLOCKDESC_COMPRESSED, 720c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 721c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 722c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 723c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 724c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC4_SNORM, SVGA3DBLOCKDESC_COMPRESSED, 725c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 726c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 727c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 728c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 729c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC5_TYPELESS, SVGA3DBLOCKDESC_COMPRESSED, 730c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 731c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 732c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 733c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 734c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_ATI2, SVGA3DBLOCKDESC_COMPRESSED, 735c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 736c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 737c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 738c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 739c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC5_SNORM, SVGA3DBLOCKDESC_COMPRESSED, 740c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 741c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 742c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 743c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 744c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R10G10B10_XR_BIAS_A2_UNORM, SVGA3DBLOCKDESC_RGBA, 745c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 746c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{10}, {10}, {10}, {2}}, 747c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {10}, {20}, {30}}}, 748c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 749c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B8G8R8A8_TYPELESS, SVGA3DBLOCKDESC_RGBA, 750c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 751c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 752c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 753c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 754c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B8G8R8A8_UNORM_SRGB, SVGA3DBLOCKDESC_RGBA_SRGB, 755c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 756c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 757c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 758c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 759c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B8G8R8X8_TYPELESS, SVGA3DBLOCKDESC_RGB, 760c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 761c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 24, {{8}, {8}, {8}, {0}}, 762c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 763c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 764c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B8G8R8X8_UNORM_SRGB, SVGA3DBLOCKDESC_RGB_SRGB, 765c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 766c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 24, {{8}, {8}, {8}, {0}}, 767c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 768c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 769c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_DF16, SVGA3DBLOCKDESC_DEPTH, 770c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 771c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 772c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 773c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 774c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_DF24, SVGA3DBLOCKDESC_DEPTH, 775c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 776c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {8}, {24}, {0}}, 777c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {24}, {0}, {0}}}, 778c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 779c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_Z_D24S8_INT, SVGA3DBLOCKDESC_DS, 780c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 781c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {8}, {24}, {0}}, 782c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {24}, {0}, {0}}}, 783c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 784c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_YV12, SVGA3DBLOCKDESC_YV12, 785c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {2, 2, 1}, 6, 2, 786c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 48, {{0}, {0}, {48}, {0}}, 787c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 788c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 789c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32B32A32_FLOAT, SVGA3DBLOCKDESC_RGBA_FP, 790c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 16, 16, 791c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{32}, {32}, {32}, {32}}, 792c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{64}, {32}, {0}, {96}}}, 793c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 794c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16B16A16_FLOAT, SVGA3DBLOCKDESC_RGBA_FP, 795c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 796c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 797c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 798c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 799c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16B16A16_UNORM, SVGA3DBLOCKDESC_RGBA, 800c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 801c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{16}, {16}, {16}, {16}}, 802c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{32}, {16}, {0}, {48}}}, 803c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 804c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32G32_FLOAT, SVGA3DBLOCKDESC_RG_FP, 805c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 8, 8, 806c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {32}, {32}, {0}}, 807c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {32}, {0}, {0}}}, 808c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 809c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R10G10B10A2_UNORM, SVGA3DBLOCKDESC_RGBA, 810c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 811c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{10}, {10}, {10}, {2}}, 812c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {10}, {20}, {30}}}, 813c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 814c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8B8A8_SNORM, SVGA3DBLOCKDESC_RGBA, 815c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 816c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 817c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{24}, {16}, {8}, {0}}}, 818c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 819c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16_FLOAT, SVGA3DBLOCKDESC_RG_FP, 820c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 821c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {16}, {16}, {0}}, 822c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {16}, {0}, {0}}}, 823c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 824c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16_UNORM, SVGA3DBLOCKDESC_RG, 825c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 826c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {16}, {16}, {0}}, 827c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {16}, {0}}}, 828c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 829c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16G16_SNORM, SVGA3DBLOCKDESC_RG, 830c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 831c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{16}, {16}, {0}, {0}}, 832c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{16}, {0}, {0}, {0}}}, 833c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 834c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R32_FLOAT, SVGA3DBLOCKDESC_R_FP, 835c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 836c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{0}, {0}, {32}, {0}}, 837c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 838c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 839c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R8G8_SNORM, SVGA3DBLOCKDESC_RG, 840c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 841c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{8}, {8}, {0}, {0}}, 842c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{8}, {0}, {0}, {0}}}, 843c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 844c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_R16_FLOAT, SVGA3DBLOCKDESC_R_FP, 845c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 846c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 847c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 848c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 849c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_D16_UNORM, SVGA3DBLOCKDESC_DEPTH, 850c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 851c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{0}, {0}, {16}, {0}}, 852c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 853c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 854c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_A8_UNORM, SVGA3DBLOCKDESC_ALPHA, 855c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 1, 1, 856c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 8, {{0}, {0}, {0}, {8}}, 857c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 858c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 859c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC1_UNORM, SVGA3DBLOCKDESC_COMPRESSED, 860c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 861c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 862c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 863c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 864c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC2_UNORM, SVGA3DBLOCKDESC_COMPRESSED, 865c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 866c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 867c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 868c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 869c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC3_UNORM, SVGA3DBLOCKDESC_COMPRESSED, 870c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 871c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 872c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 873c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 874c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B5G6R5_UNORM, SVGA3DBLOCKDESC_RGB, 875c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 876c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{5}, {6}, {5}, {0}}, 877c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {5}, {11}, {0}}}, 878c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 879c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B5G5R5A1_UNORM, SVGA3DBLOCKDESC_RGBA, 880c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 2, 2, 881c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 16, {{5}, {5}, {5}, {1}}, 882c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {5}, {10}, {15}}}, 883c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 884c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B8G8R8A8_UNORM, SVGA3DBLOCKDESC_RGBA, 885c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 886c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 32, {{8}, {8}, {8}, {8}}, 887c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 888c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 889c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_B8G8R8X8_UNORM, SVGA3DBLOCKDESC_RGB, 890c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {1, 1, 1}, 4, 4, 891c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 24, {{8}, {8}, {8}, {0}}, 892c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {8}, {16}, {24}}}, 893c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 894c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC4_UNORM, SVGA3DBLOCKDESC_COMPRESSED, 895c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 8, 8, 896c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 64, {{0}, {0}, {64}, {0}}, 897c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 898c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 899c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {SVGA3D_BC5_UNORM, SVGA3DBLOCKDESC_COMPRESSED, 900c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {4, 4, 1}, 16, 16, 901c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 128, {{0}, {0}, {128}, {0}}, 902c191b507cbbc4572c9a58cf019db08def651b265Brian Paul {{0}, {0}, {0}, {0}}}, 9032e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul}; 9042e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9052e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9062e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulextern const struct svga3d_surface_desc g_SVGA3dSurfaceDescs[]; 9072e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulextern int g_SVGA3dSurfaceDescs_size; 9082e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9092e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline uint32 clamped_umul32(uint32 a, uint32 b) 9102e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 9112e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint64_t tmp = (uint64_t) a*b; 9122e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return (tmp > (uint64_t) ((uint32) -1)) ? (uint32) -1 : tmp; 9132e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 9142e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 915c191b507cbbc4572c9a58cf019db08def651b265Brian Paulstatic inline uint32 clamped_uadd32(uint32 a, uint32 b) 916c191b507cbbc4572c9a58cf019db08def651b265Brian Paul{ 917c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint32 c = a + b; 918c191b507cbbc4572c9a58cf019db08def651b265Brian Paul if (c < a || c < b) { 919c191b507cbbc4572c9a58cf019db08def651b265Brian Paul return MAX_UINT32; 920c191b507cbbc4572c9a58cf019db08def651b265Brian Paul } 921c191b507cbbc4572c9a58cf019db08def651b265Brian Paul return c; 922c191b507cbbc4572c9a58cf019db08def651b265Brian Paul} 923c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 924c191b507cbbc4572c9a58cf019db08def651b265Brian Paul 9252e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline const struct svga3d_surface_desc * 9262e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_get_desc(SVGA3dSurfaceFormat format) 9272e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 9282e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul if (format < ARRAY_SIZE(svga3d_surface_descs)) 9292e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return &svga3d_surface_descs[format]; 9302e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9312e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return &svga3d_surface_descs[SVGA3D_FORMAT_INVALID]; 9322e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 9332e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9342e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul/* 9352e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul *---------------------------------------------------------------------- 9362e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 9372e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * svga3dsurface_get_mip_size -- 9382e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 9392e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Given a base level size and the mip level, compute the size of 9402e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * the mip level. 9412e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 9422e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Results: 9432e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * See above. 9442e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 9452e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Side effects: 9462e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * None. 9472e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 9482e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul *---------------------------------------------------------------------- 9492e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul */ 9502e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9512e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline SVGA3dSize 9522e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_get_mip_size(SVGA3dSize base_level, uint32 mip_level) 9532e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 9542e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize size; 9552e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9562e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul size.width = max_t(uint32, base_level.width >> mip_level, 1); 9572e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul size.height = max_t(uint32, base_level.height >> mip_level, 1); 9582e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul size.depth = max_t(uint32, base_level.depth >> mip_level, 1); 9592e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return size; 9602e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 9612e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9622e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline void 9632e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_get_size_in_blocks(const struct svga3d_surface_desc *desc, 9642e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const SVGA3dSize *pixel_size, 9652e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize *block_size) 9662e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 9672e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul block_size->width = DIV_ROUND_UP(pixel_size->width, 9682e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul desc->block_size.width); 9692e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul block_size->height = DIV_ROUND_UP(pixel_size->height, 9702e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul desc->block_size.height); 9712e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul block_size->depth = DIV_ROUND_UP(pixel_size->depth, 9722e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul desc->block_size.depth); 9732e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 9742e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9752e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline bool 9762e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_is_planar_surface(const struct svga3d_surface_desc *desc) 9772e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 9782e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return (desc->block_desc & SVGA3DBLOCKDESC_PLANAR_YUV) != 0; 9792e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 9802e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9812e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline uint32 9822e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_calculate_pitch(const struct svga3d_surface_desc *desc, 9832e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const SVGA3dSize *size) 9842e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 9852e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 pitch; 9862e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize blocks; 9872e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9882e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul svga3dsurface_get_size_in_blocks(desc, size, &blocks); 9892e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9902e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul pitch = blocks.width * desc->pitch_bytes_per_block; 9912e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9922e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return pitch; 9932e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 9942e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 9952e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul/* 9962e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul *----------------------------------------------------------------------------- 9972e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 9982e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * svga3dsurface_get_image_buffer_size -- 9992e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 10002e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Return the number of bytes of buffer space required to store 10012e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * one image of a surface, optionally using the specified pitch. 10022e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 10032e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * If pitch is zero, it is assumed that rows are tightly packed. 10042e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 10052e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * This function is overflow-safe. If the result would have 10062e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * overflowed, instead we return MAX_UINT32. 10072e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 10082e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Results: 10092e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Byte count. 10102e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 10112e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Side effects: 10122e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * None. 10132e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 10142e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul *----------------------------------------------------------------------------- 10152e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul */ 10162e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10172e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline uint32 10182e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_get_image_buffer_size(const struct svga3d_surface_desc *desc, 10192e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const SVGA3dSize *size, 10202e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 pitch) 10212e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 10222e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize image_blocks; 10232e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 slice_size, total_size; 10242e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10252e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul svga3dsurface_get_size_in_blocks(desc, size, &image_blocks); 10262e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10272e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul if (svga3dsurface_is_planar_surface(desc)) { 10282e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul total_size = clamped_umul32(image_blocks.width, 10292e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul image_blocks.height); 10302e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul total_size = clamped_umul32(total_size, image_blocks.depth); 10312e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul total_size = clamped_umul32(total_size, desc->bytes_per_block); 10322e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return total_size; 10332e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul } 10342e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10352e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul if (pitch == 0) 10362e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul pitch = svga3dsurface_calculate_pitch(desc, size); 10372e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10382e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul slice_size = clamped_umul32(image_blocks.height, pitch); 10392e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul total_size = clamped_umul32(slice_size, image_blocks.depth); 10402e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10412e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return total_size; 10422e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 10432e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10442e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10452e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline uint32 10462e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_get_image_offset(SVGA3dSurfaceFormat format, 10472e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize baseLevelSize, 10482e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 numMipLevels, 1049c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint32 layer, 10502e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 mip) 10512e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10522e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 10532e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 offset; 10542e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 mipChainBytes; 10552e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 mipChainBytesToLevel; 10562e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 i; 10572e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const struct svga3d_surface_desc *desc; 10582e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize mipSize; 10592e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 bytes; 10602e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10612e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul desc = svga3dsurface_get_desc(format); 10622e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10632e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul mipChainBytes = 0; 10642e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul mipChainBytesToLevel = 0; 10652e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul for (i = 0; i < numMipLevels; i++) { 10662e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul mipSize = svga3dsurface_get_mip_size(baseLevelSize, i); 10672e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul bytes = svga3dsurface_get_image_buffer_size(desc, &mipSize, 0); 10682e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul mipChainBytes += bytes; 10692e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul if (i < mip) { 10702e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul mipChainBytesToLevel += bytes; 10712e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul } 10722e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul } 10732e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 1074c191b507cbbc4572c9a58cf019db08def651b265Brian Paul offset = mipChainBytes * layer + mipChainBytesToLevel; 10752e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10762e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return offset; 10772e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 10782e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10792e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10802e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline uint32 10812e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_get_serialized_size(SVGA3dSurfaceFormat format, 10822e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize base_level_size, 10832e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 num_mip_levels, 1084c191b507cbbc4572c9a58cf019db08def651b265Brian Paul uint32 num_layers) 10852e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 10862e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const struct svga3d_surface_desc *desc = svga3dsurface_get_desc(format); 10870c065270c0ff063edba03516b22d734023cac912Charmaine Lee uint64_t total_size = 0; 10882e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 mip; 10892e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10902e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul for (mip = 0; mip < num_mip_levels; mip++) { 10912e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul SVGA3dSize size = 10922e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul svga3dsurface_get_mip_size(base_level_size, mip); 10932e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul total_size += svga3dsurface_get_image_buffer_size(desc, 10942e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul &size, 0); 10952e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul } 10962e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 1097c191b507cbbc4572c9a58cf019db08def651b265Brian Paul total_size *= num_layers; 10982e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 10990c065270c0ff063edba03516b22d734023cac912Charmaine Lee return (total_size > (uint64_t) MAX_UINT32) ? MAX_UINT32 : 11000c065270c0ff063edba03516b22d734023cac912Charmaine Lee (uint32) total_size; 11012e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 11022e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 11032e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul 11042e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul/** 11052e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * Compute the offset (in bytes) to a pixel in an image (or volume). 11062e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 'width' is the image width in pixels 11072e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul * 'height' is the image height in pixels 11082e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul */ 11092e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulstatic inline uint32 11102e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paulsvga3dsurface_get_pixel_offset(SVGA3dSurfaceFormat format, 11112e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 width, uint32 height, 11122e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul uint32 x, uint32 y, uint32 z) 11132e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul{ 11142e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const struct svga3d_surface_desc *desc = svga3dsurface_get_desc(format); 11152e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const uint32 bw = desc->block_size.width, bh = desc->block_size.height; 11162e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const uint32 bd = desc->block_size.depth; 11172e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const uint32 rowstride = DIV_ROUND_UP(width, bw) * desc->bytes_per_block; 11182e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const uint32 imgstride = DIV_ROUND_UP(height, bh) * rowstride; 11192e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul const uint32 offset = (z / bd * imgstride + 11202e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul y / bh * rowstride + 11212e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul x / bw * desc->bytes_per_block); 11222e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul return offset; 11232e0c90847f16a9cf2a40436beacb65c65535fa4aBrian Paul} 1124