1bf215546Sopenharmony_ci/************************************************************************** 2bf215546Sopenharmony_ci * 3bf215546Sopenharmony_ci * Copyright 2012-2021 VMware, Inc. 4bf215546Sopenharmony_ci * All Rights Reserved. 5bf215546Sopenharmony_ci * 6bf215546Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 7bf215546Sopenharmony_ci * copy of this software and associated documentation files (the 8bf215546Sopenharmony_ci * "Software"), to deal in the Software without restriction, including 9bf215546Sopenharmony_ci * without limitation the rights to use, copy, modify, merge, publish, 10bf215546Sopenharmony_ci * distribute, sub license, and/or sell copies of the Software, and to 11bf215546Sopenharmony_ci * permit persons to whom the Software is furnished to do so, subject to 12bf215546Sopenharmony_ci * the following conditions: 13bf215546Sopenharmony_ci * 14bf215546Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15bf215546Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16bf215546Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 17bf215546Sopenharmony_ci * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, 18bf215546Sopenharmony_ci * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19bf215546Sopenharmony_ci * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20bf215546Sopenharmony_ci * USE OR OTHER DEALINGS IN THE SOFTWARE. 21bf215546Sopenharmony_ci * 22bf215546Sopenharmony_ci * The above copyright notice and this permission notice (including the 23bf215546Sopenharmony_ci * next paragraph) shall be included in all copies or substantial portions 24bf215546Sopenharmony_ci * of the Software. 25bf215546Sopenharmony_ci * 26bf215546Sopenharmony_ci **************************************************************************/ 27bf215546Sopenharmony_ci 28bf215546Sopenharmony_ci/* 29bf215546Sopenharmony_ci * Format.h -- 30bf215546Sopenharmony_ci * Functions for format manipulation. 31bf215546Sopenharmony_ci */ 32bf215546Sopenharmony_ci 33bf215546Sopenharmony_ci 34bf215546Sopenharmony_ci#include <stdint.h> 35bf215546Sopenharmony_ci 36bf215546Sopenharmony_ci#include "Format.h" 37bf215546Sopenharmony_ci#include "State.h" 38bf215546Sopenharmony_ci 39bf215546Sopenharmony_ci#include "Debug.h" 40bf215546Sopenharmony_ci 41bf215546Sopenharmony_ci 42bf215546Sopenharmony_ci/* XXX: for a time llvmpipe didn't support SRGB */ 43bf215546Sopenharmony_ci#define HAVE_SRGB 1 44bf215546Sopenharmony_ci 45bf215546Sopenharmony_ci 46bf215546Sopenharmony_cienum pipe_format 47bf215546Sopenharmony_ciFormatTranslate(DXGI_FORMAT Format, BOOL depth) 48bf215546Sopenharmony_ci{ 49bf215546Sopenharmony_ci switch (Format) { 50bf215546Sopenharmony_ci 51bf215546Sopenharmony_ci case DXGI_FORMAT_UNKNOWN: 52bf215546Sopenharmony_ci return PIPE_FORMAT_NONE; 53bf215546Sopenharmony_ci 54bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32A32_FLOAT: 55bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32A32_FLOAT; 56bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32A32_UINT: 57bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32A32_UINT; 58bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32A32_SINT: 59bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32A32_SINT; 60bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32_FLOAT: 61bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32_FLOAT; 62bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32_UINT: 63bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32_UINT; 64bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32_SINT: 65bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32_SINT; 66bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16B16A16_UNORM: 67bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16B16A16_UNORM; 68bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16B16A16_UINT: 69bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16B16A16_UINT; 70bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16B16A16_SNORM: 71bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16B16A16_SNORM; 72bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16B16A16_SINT: 73bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16B16A16_SINT; 74bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32_FLOAT: 75bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32_FLOAT; 76bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32_UINT: 77bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32_UINT; 78bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32_SINT: 79bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32_SINT; 80bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8B8A8_UNORM: 81bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8B8A8_UNORM; 82bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8B8A8_UINT: 83bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8B8A8_UINT; 84bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8B8A8_SNORM: 85bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8B8A8_SNORM; 86bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8B8A8_SINT: 87bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8B8A8_SINT; 88bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16_UNORM: 89bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16_UNORM; 90bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16_UINT: 91bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16_UINT; 92bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16_SNORM: 93bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16_SNORM; 94bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16_SINT: 95bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16_SINT; 96bf215546Sopenharmony_ci case DXGI_FORMAT_D32_FLOAT: 97bf215546Sopenharmony_ci return PIPE_FORMAT_Z32_FLOAT; 98bf215546Sopenharmony_ci case DXGI_FORMAT_R32_FLOAT: 99bf215546Sopenharmony_ci return PIPE_FORMAT_R32_FLOAT; 100bf215546Sopenharmony_ci case DXGI_FORMAT_R32_UINT: 101bf215546Sopenharmony_ci return PIPE_FORMAT_R32_UINT; 102bf215546Sopenharmony_ci case DXGI_FORMAT_R32_SINT: 103bf215546Sopenharmony_ci return PIPE_FORMAT_R32_SINT; 104bf215546Sopenharmony_ci case DXGI_FORMAT_D24_UNORM_S8_UINT: 105bf215546Sopenharmony_ci return PIPE_FORMAT_Z24_UNORM_S8_UINT; 106bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8_UNORM: 107bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8_UNORM; 108bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8_UINT: 109bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8_UINT; 110bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8_SNORM: 111bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8_SNORM; 112bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8_SINT: 113bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8_SINT; 114bf215546Sopenharmony_ci case DXGI_FORMAT_D16_UNORM: 115bf215546Sopenharmony_ci return PIPE_FORMAT_Z16_UNORM; 116bf215546Sopenharmony_ci case DXGI_FORMAT_R16_UNORM: 117bf215546Sopenharmony_ci return PIPE_FORMAT_R16_UNORM; 118bf215546Sopenharmony_ci case DXGI_FORMAT_R16_UINT: 119bf215546Sopenharmony_ci return PIPE_FORMAT_R16_UINT; 120bf215546Sopenharmony_ci case DXGI_FORMAT_R16_SNORM: 121bf215546Sopenharmony_ci return PIPE_FORMAT_R16_SNORM; 122bf215546Sopenharmony_ci case DXGI_FORMAT_R16_SINT: 123bf215546Sopenharmony_ci return PIPE_FORMAT_R16_SINT; 124bf215546Sopenharmony_ci case DXGI_FORMAT_R8_UNORM: 125bf215546Sopenharmony_ci return PIPE_FORMAT_R8_UNORM; 126bf215546Sopenharmony_ci case DXGI_FORMAT_R8_UINT: 127bf215546Sopenharmony_ci return PIPE_FORMAT_R8_UINT; 128bf215546Sopenharmony_ci case DXGI_FORMAT_R8_SNORM: 129bf215546Sopenharmony_ci return PIPE_FORMAT_R8_SNORM; 130bf215546Sopenharmony_ci case DXGI_FORMAT_R8_SINT: 131bf215546Sopenharmony_ci return PIPE_FORMAT_R8_SINT; 132bf215546Sopenharmony_ci case DXGI_FORMAT_A8_UNORM: 133bf215546Sopenharmony_ci return PIPE_FORMAT_A8_UNORM; 134bf215546Sopenharmony_ci case DXGI_FORMAT_BC1_UNORM: 135bf215546Sopenharmony_ci return PIPE_FORMAT_DXT1_RGBA; 136bf215546Sopenharmony_ci case DXGI_FORMAT_BC1_UNORM_SRGB: 137bf215546Sopenharmony_ci#if HAVE_SRGB 138bf215546Sopenharmony_ci return PIPE_FORMAT_DXT1_SRGBA; 139bf215546Sopenharmony_ci#else 140bf215546Sopenharmony_ci return PIPE_FORMAT_DXT1_RGBA; 141bf215546Sopenharmony_ci#endif 142bf215546Sopenharmony_ci case DXGI_FORMAT_BC2_UNORM: 143bf215546Sopenharmony_ci return PIPE_FORMAT_DXT3_RGBA; 144bf215546Sopenharmony_ci case DXGI_FORMAT_BC2_UNORM_SRGB: 145bf215546Sopenharmony_ci#if HAVE_SRGB 146bf215546Sopenharmony_ci return PIPE_FORMAT_DXT3_SRGBA; 147bf215546Sopenharmony_ci#else 148bf215546Sopenharmony_ci return PIPE_FORMAT_DXT3_RGBA; 149bf215546Sopenharmony_ci#endif 150bf215546Sopenharmony_ci case DXGI_FORMAT_BC3_UNORM: 151bf215546Sopenharmony_ci return PIPE_FORMAT_DXT5_RGBA; 152bf215546Sopenharmony_ci case DXGI_FORMAT_BC3_UNORM_SRGB: 153bf215546Sopenharmony_ci#if HAVE_SRGB 154bf215546Sopenharmony_ci return PIPE_FORMAT_DXT5_SRGBA; 155bf215546Sopenharmony_ci#else 156bf215546Sopenharmony_ci return PIPE_FORMAT_DXT5_RGBA; 157bf215546Sopenharmony_ci#endif 158bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: 159bf215546Sopenharmony_ci#if HAVE_SRGB 160bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8B8A8_SRGB; 161bf215546Sopenharmony_ci#else 162bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8B8A8_UNORM; 163bf215546Sopenharmony_ci#endif 164bf215546Sopenharmony_ci 165bf215546Sopenharmony_ci /* Gallium has no typeless formats. We simply use an equivalent 166bf215546Sopenharmony_ci * typed format. 167bf215546Sopenharmony_ci */ 168bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8B8A8_TYPELESS: 169bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8B8A8_UNORM; 170bf215546Sopenharmony_ci case DXGI_FORMAT_BC1_TYPELESS: 171bf215546Sopenharmony_ci return PIPE_FORMAT_DXT1_RGBA; 172bf215546Sopenharmony_ci case DXGI_FORMAT_BC2_TYPELESS: 173bf215546Sopenharmony_ci return PIPE_FORMAT_DXT3_RGBA; 174bf215546Sopenharmony_ci case DXGI_FORMAT_BC3_TYPELESS: 175bf215546Sopenharmony_ci return PIPE_FORMAT_DXT5_RGBA; 176bf215546Sopenharmony_ci case DXGI_FORMAT_R8_TYPELESS: 177bf215546Sopenharmony_ci return PIPE_FORMAT_R8_UNORM; 178bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32A32_TYPELESS: 179bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32A32_UNORM; 180bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32B32_TYPELESS: 181bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32B32_UNORM; 182bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16B16A16_TYPELESS: 183bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16B16A16_UNORM; 184bf215546Sopenharmony_ci case DXGI_FORMAT_R32G32_TYPELESS: 185bf215546Sopenharmony_ci return PIPE_FORMAT_R32G32_UNORM; 186bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8_TYPELESS: 187bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8_UNORM; 188bf215546Sopenharmony_ci case DXGI_FORMAT_R16_TYPELESS: 189bf215546Sopenharmony_ci return depth ? PIPE_FORMAT_Z16_UNORM : PIPE_FORMAT_R16_UNORM; 190bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16_TYPELESS: 191bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16_UNORM; 192bf215546Sopenharmony_ci case DXGI_FORMAT_R32_TYPELESS: 193bf215546Sopenharmony_ci return depth ? PIPE_FORMAT_Z32_FLOAT : PIPE_FORMAT_R32_FLOAT; 194bf215546Sopenharmony_ci case DXGI_FORMAT_R24G8_TYPELESS: 195bf215546Sopenharmony_ci return PIPE_FORMAT_Z24_UNORM_S8_UINT; 196bf215546Sopenharmony_ci case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: 197bf215546Sopenharmony_ci return PIPE_FORMAT_Z24X8_UNORM; 198bf215546Sopenharmony_ci case DXGI_FORMAT_X24_TYPELESS_G8_UINT: 199bf215546Sopenharmony_ci return PIPE_FORMAT_Z24_UNORM_S8_UINT; 200bf215546Sopenharmony_ci 201bf215546Sopenharmony_ci case DXGI_FORMAT_R8G8_B8G8_UNORM: 202bf215546Sopenharmony_ci return PIPE_FORMAT_R8G8_B8G8_UNORM; 203bf215546Sopenharmony_ci case DXGI_FORMAT_G8R8_G8B8_UNORM: 204bf215546Sopenharmony_ci return PIPE_FORMAT_G8R8_G8B8_UNORM; 205bf215546Sopenharmony_ci 206bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16B16A16_FLOAT: 207bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16B16A16_FLOAT; 208bf215546Sopenharmony_ci case DXGI_FORMAT_R16G16_FLOAT: 209bf215546Sopenharmony_ci return PIPE_FORMAT_R16G16_FLOAT; 210bf215546Sopenharmony_ci case DXGI_FORMAT_R16_FLOAT: 211bf215546Sopenharmony_ci return PIPE_FORMAT_R16_FLOAT; 212bf215546Sopenharmony_ci case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: 213bf215546Sopenharmony_ci return PIPE_FORMAT_R9G9B9E5_FLOAT; 214bf215546Sopenharmony_ci case DXGI_FORMAT_R1_UNORM: 215bf215546Sopenharmony_ci return PIPE_FORMAT_R1_UNORM; 216bf215546Sopenharmony_ci 217bf215546Sopenharmony_ci case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: 218bf215546Sopenharmony_ci case DXGI_FORMAT_R32G8X24_TYPELESS: 219bf215546Sopenharmony_ci case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: 220bf215546Sopenharmony_ci case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: 221bf215546Sopenharmony_ci return PIPE_FORMAT_Z32_FLOAT_S8X24_UINT; 222bf215546Sopenharmony_ci 223bf215546Sopenharmony_ci case DXGI_FORMAT_R10G10B10A2_TYPELESS: 224bf215546Sopenharmony_ci case DXGI_FORMAT_R10G10B10A2_UNORM: 225bf215546Sopenharmony_ci return PIPE_FORMAT_R10G10B10A2_UNORM; 226bf215546Sopenharmony_ci case DXGI_FORMAT_R10G10B10A2_UINT: 227bf215546Sopenharmony_ci return PIPE_FORMAT_R10G10B10A2_UINT; 228bf215546Sopenharmony_ci case DXGI_FORMAT_R11G11B10_FLOAT: 229bf215546Sopenharmony_ci return PIPE_FORMAT_R11G11B10_FLOAT; 230bf215546Sopenharmony_ci 231bf215546Sopenharmony_ci case DXGI_FORMAT_BC4_TYPELESS: 232bf215546Sopenharmony_ci case DXGI_FORMAT_BC4_UNORM: 233bf215546Sopenharmony_ci return PIPE_FORMAT_RGTC1_UNORM; 234bf215546Sopenharmony_ci case DXGI_FORMAT_BC4_SNORM: 235bf215546Sopenharmony_ci return PIPE_FORMAT_RGTC1_SNORM; 236bf215546Sopenharmony_ci 237bf215546Sopenharmony_ci case DXGI_FORMAT_BC5_TYPELESS: 238bf215546Sopenharmony_ci case DXGI_FORMAT_BC5_UNORM: 239bf215546Sopenharmony_ci return PIPE_FORMAT_RGTC2_UNORM; 240bf215546Sopenharmony_ci case DXGI_FORMAT_BC5_SNORM: 241bf215546Sopenharmony_ci return PIPE_FORMAT_RGTC2_SNORM; 242bf215546Sopenharmony_ci 243bf215546Sopenharmony_ci case DXGI_FORMAT_B5G6R5_UNORM: 244bf215546Sopenharmony_ci return PIPE_FORMAT_B5G6R5_UNORM; 245bf215546Sopenharmony_ci case DXGI_FORMAT_B5G5R5A1_UNORM: 246bf215546Sopenharmony_ci return PIPE_FORMAT_B5G5R5A1_UNORM; 247bf215546Sopenharmony_ci case DXGI_FORMAT_B8G8R8A8_UNORM: 248bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8A8_UNORM; 249bf215546Sopenharmony_ci case DXGI_FORMAT_B8G8R8X8_UNORM: 250bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8X8_UNORM; 251bf215546Sopenharmony_ci case DXGI_FORMAT_B8G8R8A8_TYPELESS: 252bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8A8_UNORM; 253bf215546Sopenharmony_ci case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: 254bf215546Sopenharmony_ci#if HAVE_SRGB 255bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8A8_SRGB; 256bf215546Sopenharmony_ci#else 257bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8A8_UNORM; 258bf215546Sopenharmony_ci#endif 259bf215546Sopenharmony_ci case DXGI_FORMAT_B8G8R8X8_TYPELESS: 260bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8X8_UNORM; 261bf215546Sopenharmony_ci case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: 262bf215546Sopenharmony_ci#if HAVE_SRGB 263bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8X8_SRGB; 264bf215546Sopenharmony_ci#else 265bf215546Sopenharmony_ci return PIPE_FORMAT_B8G8R8X8_UNORM; 266bf215546Sopenharmony_ci#endif 267bf215546Sopenharmony_ci 268bf215546Sopenharmony_ci case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: 269bf215546Sopenharmony_ci return PIPE_FORMAT_R10G10B10A2_UNORM; 270bf215546Sopenharmony_ci 271bf215546Sopenharmony_ci default: 272bf215546Sopenharmony_ci DebugPrintf("%s: unsupported format %s\n", 273bf215546Sopenharmony_ci __FUNCTION__, FormatToName(Format)); 274bf215546Sopenharmony_ci return PIPE_FORMAT_NONE; 275bf215546Sopenharmony_ci } 276bf215546Sopenharmony_ci} 277bf215546Sopenharmony_ci 278bf215546Sopenharmony_ci 279bf215546Sopenharmony_ci 280bf215546Sopenharmony_ci#define CASE(fmt) case fmt: return #fmt 281bf215546Sopenharmony_ci 282bf215546Sopenharmony_ciconst char * 283bf215546Sopenharmony_ciFormatToName(DXGI_FORMAT Format) 284bf215546Sopenharmony_ci{ 285bf215546Sopenharmony_ci switch (Format) { 286bf215546Sopenharmony_ci CASE(DXGI_FORMAT_UNKNOWN); 287bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32A32_TYPELESS); 288bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32A32_FLOAT); 289bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32A32_UINT); 290bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32A32_SINT); 291bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32_TYPELESS); 292bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32_FLOAT); 293bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32_UINT); 294bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32B32_SINT); 295bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16B16A16_TYPELESS); 296bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16B16A16_FLOAT); 297bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16B16A16_UNORM); 298bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16B16A16_UINT); 299bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16B16A16_SNORM); 300bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16B16A16_SINT); 301bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32_TYPELESS); 302bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32_FLOAT); 303bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32_UINT); 304bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G32_SINT); 305bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32G8X24_TYPELESS); 306bf215546Sopenharmony_ci CASE(DXGI_FORMAT_D32_FLOAT_S8X24_UINT); 307bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS); 308bf215546Sopenharmony_ci CASE(DXGI_FORMAT_X32_TYPELESS_G8X24_UINT); 309bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R10G10B10A2_TYPELESS); 310bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R10G10B10A2_UNORM); 311bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R10G10B10A2_UINT); 312bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R11G11B10_FLOAT); 313bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8B8A8_TYPELESS); 314bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8B8A8_UNORM); 315bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB); 316bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8B8A8_UINT); 317bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8B8A8_SNORM); 318bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8B8A8_SINT); 319bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16_TYPELESS); 320bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16_FLOAT); 321bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16_UNORM); 322bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16_UINT); 323bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16_SNORM); 324bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16G16_SINT); 325bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32_TYPELESS); 326bf215546Sopenharmony_ci CASE(DXGI_FORMAT_D32_FLOAT); 327bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32_FLOAT); 328bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32_UINT); 329bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R32_SINT); 330bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R24G8_TYPELESS); 331bf215546Sopenharmony_ci CASE(DXGI_FORMAT_D24_UNORM_S8_UINT); 332bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R24_UNORM_X8_TYPELESS); 333bf215546Sopenharmony_ci CASE(DXGI_FORMAT_X24_TYPELESS_G8_UINT); 334bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8_TYPELESS); 335bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8_UNORM); 336bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8_UINT); 337bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8_SNORM); 338bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8_SINT); 339bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16_TYPELESS); 340bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16_FLOAT); 341bf215546Sopenharmony_ci CASE(DXGI_FORMAT_D16_UNORM); 342bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16_UNORM); 343bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16_UINT); 344bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16_SNORM); 345bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R16_SINT); 346bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8_TYPELESS); 347bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8_UNORM); 348bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8_UINT); 349bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8_SNORM); 350bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8_SINT); 351bf215546Sopenharmony_ci CASE(DXGI_FORMAT_A8_UNORM); 352bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R1_UNORM); 353bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R9G9B9E5_SHAREDEXP); 354bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R8G8_B8G8_UNORM); 355bf215546Sopenharmony_ci CASE(DXGI_FORMAT_G8R8_G8B8_UNORM); 356bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC1_TYPELESS); 357bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC1_UNORM); 358bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC1_UNORM_SRGB); 359bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC2_TYPELESS); 360bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC2_UNORM); 361bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC2_UNORM_SRGB); 362bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC3_TYPELESS); 363bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC3_UNORM); 364bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC3_UNORM_SRGB); 365bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC4_TYPELESS); 366bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC4_UNORM); 367bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC4_SNORM); 368bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC5_TYPELESS); 369bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC5_UNORM); 370bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC5_SNORM); 371bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B5G6R5_UNORM); 372bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B5G5R5A1_UNORM); 373bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B8G8R8A8_UNORM); 374bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B8G8R8X8_UNORM); 375bf215546Sopenharmony_ci CASE(DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM); 376bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B8G8R8A8_TYPELESS); 377bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B8G8R8A8_UNORM_SRGB); 378bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B8G8R8X8_TYPELESS); 379bf215546Sopenharmony_ci CASE(DXGI_FORMAT_B8G8R8X8_UNORM_SRGB); 380bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC6H_TYPELESS); 381bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC6H_UF16); 382bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC6H_SF16); 383bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC7_TYPELESS); 384bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC7_UNORM); 385bf215546Sopenharmony_ci CASE(DXGI_FORMAT_BC7_UNORM_SRGB); 386bf215546Sopenharmony_ci default: 387bf215546Sopenharmony_ci return "???"; 388bf215546Sopenharmony_ci } 389bf215546Sopenharmony_ci} 390