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