blob: 373cc316311b97ace571c74f61b7dc0ee7ddb814 [file] [log] [blame]
José Fonsecac8695f72013-03-06 12:12:04 +00001/**************************************************************************
2 *
3 * Copyright 2013 VMware, Inc.
4 * All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 *
24 **************************************************************************/
25
26
José Fonsecabbb9eb32013-04-16 19:38:00 +010027#include <assert.h>
28
José Fonseca4bdfcb92013-07-09 13:27:00 +010029#include <iostream>
30
José Fonsecabbb9eb32013-04-16 19:38:00 +010031#include "image.hpp"
Jose Fonsecae8ba0792015-05-01 12:38:03 +010032#include "state_writer.hpp"
José Fonseca00dc2f12014-06-12 19:18:11 +010033#include "com_ptr.hpp"
José Fonsecabbb9eb32013-04-16 19:38:00 +010034
José Fonsecac8695f72013-03-06 12:12:04 +000035#include "dxgistate.hpp"
José Fonseca29d4bda2014-02-28 17:50:24 +000036#include "d3d10state.hpp"
José Fonseca00dc2f12014-06-12 19:18:11 +010037#include "d3d11state.hpp"
José Fonsecac8695f72013-03-06 12:12:04 +000038
39#ifdef __MINGW32__
40#define nullptr NULL
41#endif
42#include "DirectXTex.h"
43
44
45namespace d3dstate {
46
47
José Fonsecabbb9eb32013-04-16 19:38:00 +010048static DXGI_FORMAT
José Fonseca52fc2b02013-10-10 18:43:33 -070049ChooseConversionFormat(DXGI_FORMAT Format, unsigned &numChannels, image::ChannelType &channelType)
José Fonsecabbb9eb32013-04-16 19:38:00 +010050{
José Fonseca52fc2b02013-10-10 18:43:33 -070051 numChannels = 4;
José Fonseca75af8672013-09-16 12:20:40 +010052 channelType = image::TYPE_UNORM8;
53
José Fonsecabbb9eb32013-04-16 19:38:00 +010054 switch (Format) {
55
56 // Float
57 case DXGI_FORMAT_R32G32B32A32_FLOAT:
58 case DXGI_FORMAT_R32G32B32_FLOAT:
59 case DXGI_FORMAT_R16G16B16A16_FLOAT:
60 case DXGI_FORMAT_R32G32_FLOAT:
61 case DXGI_FORMAT_R11G11B10_FLOAT:
62 case DXGI_FORMAT_R16G16_FLOAT:
63 case DXGI_FORMAT_R32_FLOAT:
64 case DXGI_FORMAT_R16_FLOAT:
65 case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
66 case DXGI_FORMAT_BC6H_UF16:
67 case DXGI_FORMAT_BC6H_SF16:
José Fonseca75af8672013-09-16 12:20:40 +010068 channelType = image::TYPE_FLOAT;
69 return DXGI_FORMAT_R32G32B32A32_FLOAT;
José Fonsecabbb9eb32013-04-16 19:38:00 +010070
71 // Unsigned normalized
72 case DXGI_FORMAT_R16G16B16A16_UNORM:
73 case DXGI_FORMAT_R10G10B10A2_UNORM:
74 case DXGI_FORMAT_R8G8B8A8_UNORM:
75 case DXGI_FORMAT_R16G16_UNORM:
76 case DXGI_FORMAT_R8G8_UNORM:
77 case DXGI_FORMAT_R16_UNORM:
78 case DXGI_FORMAT_R8_UNORM:
79 case DXGI_FORMAT_A8_UNORM:
80 case DXGI_FORMAT_R1_UNORM:
81 case DXGI_FORMAT_R8G8_B8G8_UNORM:
82 case DXGI_FORMAT_G8R8_G8B8_UNORM:
83 case DXGI_FORMAT_BC1_UNORM:
84 case DXGI_FORMAT_BC2_UNORM:
85 case DXGI_FORMAT_BC3_UNORM:
86 case DXGI_FORMAT_BC4_UNORM:
87 case DXGI_FORMAT_BC5_UNORM:
88 case DXGI_FORMAT_B5G6R5_UNORM:
89 case DXGI_FORMAT_B5G5R5A1_UNORM:
90 case DXGI_FORMAT_B8G8R8A8_UNORM:
91 case DXGI_FORMAT_B8G8R8X8_UNORM:
92 case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
93 case DXGI_FORMAT_BC7_UNORM:
94 return DXGI_FORMAT_R8G8B8A8_UNORM;
95
96 // SRGB
97 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
98 case DXGI_FORMAT_BC1_UNORM_SRGB:
99 case DXGI_FORMAT_BC2_UNORM_SRGB:
100 case DXGI_FORMAT_BC3_UNORM_SRGB:
101 case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
102 case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
103 case DXGI_FORMAT_BC7_UNORM_SRGB:
104 return DXGI_FORMAT_R8G8B8A8_UNORM;
105
106 // Signed normalized
107 case DXGI_FORMAT_R16G16B16A16_SNORM:
108 case DXGI_FORMAT_R8G8B8A8_SNORM:
109 case DXGI_FORMAT_R16G16_SNORM:
110 case DXGI_FORMAT_R8G8_SNORM:
111 case DXGI_FORMAT_R16_SNORM:
112 case DXGI_FORMAT_R8_SNORM:
113 case DXGI_FORMAT_BC4_SNORM:
114 case DXGI_FORMAT_BC5_SNORM:
115 return DXGI_FORMAT_R8G8B8A8_SNORM;
116
117 // Unsigned
118 case DXGI_FORMAT_R32G32B32A32_UINT:
119 case DXGI_FORMAT_R32G32B32_UINT:
120 case DXGI_FORMAT_R16G16B16A16_UINT:
121 case DXGI_FORMAT_R32G32_UINT:
122 case DXGI_FORMAT_R10G10B10A2_UINT:
123 case DXGI_FORMAT_R8G8B8A8_UINT:
124 case DXGI_FORMAT_R16G16_UINT:
125 case DXGI_FORMAT_R32_UINT:
126 case DXGI_FORMAT_R8G8_UINT:
127 case DXGI_FORMAT_R16_UINT:
128 case DXGI_FORMAT_R8_UINT:
129 return DXGI_FORMAT_R8G8B8A8_UINT;
130
131 // Signed
132 case DXGI_FORMAT_R32G32B32A32_SINT:
133 case DXGI_FORMAT_R32G32B32_SINT:
134 case DXGI_FORMAT_R16G16B16A16_SINT:
135 case DXGI_FORMAT_R32G32_SINT:
136 case DXGI_FORMAT_R8G8B8A8_SINT:
137 case DXGI_FORMAT_R16G16_SINT:
138 case DXGI_FORMAT_R32_SINT:
139 case DXGI_FORMAT_R8G8_SINT:
140 case DXGI_FORMAT_R16_SINT:
141 case DXGI_FORMAT_R8_SINT:
142 return DXGI_FORMAT_R8G8B8A8_SINT;
143
144 // Depth
145 case DXGI_FORMAT_D32_FLOAT:
146 case DXGI_FORMAT_D24_UNORM_S8_UINT:
147 case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
148 case DXGI_FORMAT_D16_UNORM:
José Fonseca52fc2b02013-10-10 18:43:33 -0700149 numChannels = 1;
150 channelType = image::TYPE_FLOAT;
151 return DXGI_FORMAT_D32_FLOAT;
José Fonsecabbb9eb32013-04-16 19:38:00 +0100152
153 // Typeless
154 case DXGI_FORMAT_UNKNOWN:
155 case DXGI_FORMAT_R32G32B32A32_TYPELESS:
156 case DXGI_FORMAT_R32G32B32_TYPELESS:
157 case DXGI_FORMAT_R16G16B16A16_TYPELESS:
158 case DXGI_FORMAT_R32G32_TYPELESS:
159 case DXGI_FORMAT_R32G8X24_TYPELESS:
160 case DXGI_FORMAT_R10G10B10A2_TYPELESS:
161 case DXGI_FORMAT_R8G8B8A8_TYPELESS:
162 case DXGI_FORMAT_R16G16_TYPELESS:
163 case DXGI_FORMAT_R32_TYPELESS:
164 case DXGI_FORMAT_R8G8_TYPELESS:
165 case DXGI_FORMAT_R16_TYPELESS:
166 case DXGI_FORMAT_R8_TYPELESS:
167 case DXGI_FORMAT_BC1_TYPELESS:
168 case DXGI_FORMAT_BC2_TYPELESS:
169 case DXGI_FORMAT_BC3_TYPELESS:
170 case DXGI_FORMAT_BC4_TYPELESS:
171 case DXGI_FORMAT_BC5_TYPELESS:
172 case DXGI_FORMAT_B8G8R8A8_TYPELESS:
173 case DXGI_FORMAT_B8G8R8X8_TYPELESS:
174 case DXGI_FORMAT_BC6H_TYPELESS:
175 case DXGI_FORMAT_BC7_TYPELESS:
176 case DXGI_FORMAT_R24G8_TYPELESS:
177 case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
178 case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
179 case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
180 case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
181 return DXGI_FORMAT_UNKNOWN;
182
183 default:
184 return DXGI_FORMAT_R8G8B8A8_UNORM;
185 }
186}
187
188
José Fonsecac8695f72013-03-06 12:12:04 +0000189/**
190 * Convert between DXGI formats.
191 *
192 */
193HRESULT
194ConvertFormat(DXGI_FORMAT SrcFormat,
195 void *SrcData,
196 UINT SrcPitch,
197 DXGI_FORMAT DstFormat,
198 void *DstData,
199 UINT DstPitch,
200 UINT Width, UINT Height)
201{
202 HRESULT hr;
203
204 DirectX::Image SrcImage;
205 DirectX::Image DstImage;
206
207 SrcImage.width = Width;
208 SrcImage.height = Height;
209 SrcImage.format = SrcFormat;
210 SrcImage.rowPitch = SrcPitch;
211 SrcImage.slicePitch = Height * SrcPitch;
212 SrcImage.pixels = (uint8_t*)SrcData;
213
214 DstImage.width = Width;
215 DstImage.height = Height;
216 DstImage.format = DstFormat;
217 DstImage.rowPitch = DstPitch;
218 DstImage.slicePitch = Height * DstPitch;
219 DstImage.pixels = (uint8_t*)DstData;
220
221 DirectX::Rect rect(0, 0, Width, Height);
222
José Fonseca386d29d2013-05-20 13:35:23 +0100223 hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
224 assert(SUCCEEDED(hr));
225 if (FAILED(hr)) {
226 return hr;
227 }
228
José Fonsecac8695f72013-03-06 12:12:04 +0000229 if (SrcFormat != DstFormat) {
230 DirectX::ScratchImage ScratchImage;
231 ScratchImage.Initialize2D(DstFormat, Width, Height, 1, 1);
232
José Fonseca4bdfcb92013-07-09 13:27:00 +0100233 if (DirectX::IsCompressed(SrcFormat)) {
234 hr = DirectX::Decompress(SrcImage, DstFormat, ScratchImage);
235 } else {
236 hr = DirectX::Convert(SrcImage, DstFormat, DirectX::TEX_FILTER_DEFAULT, 0.0f, ScratchImage);
237 }
238
José Fonsecac8695f72013-03-06 12:12:04 +0000239 if (SUCCEEDED(hr)) {
240 hr = CopyRectangle(*ScratchImage.GetImage(0, 0, 0), rect, DstImage, DirectX::TEX_FILTER_DEFAULT, 0, 0);
241 }
242 } else {
243 hr = CopyRectangle(SrcImage, rect, DstImage, DirectX::TEX_FILTER_DEFAULT, 0, 0);
244 }
245
246 return hr;
247}
248
249
José Fonsecabbb9eb32013-04-16 19:38:00 +0100250image::Image *
251ConvertImage(DXGI_FORMAT SrcFormat,
252 void *SrcData,
253 UINT SrcPitch,
254 UINT Width, UINT Height)
255{
José Fonseca52fc2b02013-10-10 18:43:33 -0700256 unsigned numChannels;
José Fonseca75af8672013-09-16 12:20:40 +0100257 image::ChannelType channelType;
José Fonsecabbb9eb32013-04-16 19:38:00 +0100258
José Fonseca52fc2b02013-10-10 18:43:33 -0700259 DXGI_FORMAT DstFormat = ChooseConversionFormat(SrcFormat, numChannels, channelType);
José Fonsecabbb9eb32013-04-16 19:38:00 +0100260 if (DstFormat == DXGI_FORMAT_UNKNOWN) {
261 return NULL;
262 }
263
José Fonseca52fc2b02013-10-10 18:43:33 -0700264 image::Image *image = new image::Image(Width, Height, numChannels, false, channelType);
José Fonsecabbb9eb32013-04-16 19:38:00 +0100265 if (!image) {
266 return NULL;
267 }
268 assert(image->stride() > 0);
269
270 HRESULT hr;
271 hr = ConvertFormat(SrcFormat,
272 SrcData, SrcPitch,
273 DstFormat,
274 image->start(), image->stride(),
275 Width, Height);
276 if (FAILED(hr)) {
José Fonseca4bdfcb92013-07-09 13:27:00 +0100277 std::cerr << "warning: failed to convert from format " << SrcFormat << " to format " << DstFormat << "\n";
José Fonsecabbb9eb32013-04-16 19:38:00 +0100278 delete image;
279 image = NULL;
280 }
281
282 return image;
283}
284
José Fonseca29d4bda2014-02-28 17:50:24 +0000285
286image::Image *
287getRenderTargetImage(IDXGISwapChain *pSwapChain)
288{
289 HRESULT hr;
290
291 assert(pSwapChain);
292 if (!pSwapChain) {
293 return NULL;
294 }
295
296 DXGI_SWAP_CHAIN_DESC Desc;
297 hr = pSwapChain->GetDesc(&Desc);
298 assert(SUCCEEDED(hr));
299
José Fonseca36413ec2014-08-14 13:58:19 +0100300 DXGI_FORMAT Format = Desc.BufferDesc.Format;
301
José Fonseca29d4bda2014-02-28 17:50:24 +0000302 /*
303 * There is a IDXGISurface::Map method, but swapchains are not normally mappable,
304 * and there is no way to copy into a staging resource, which effectively means there
305 * is no way to read a IDXGISwapChain using DXGI interfaces alone.
306 *
307 * We must figure out
308 * the appropriate D3D10/D3D11 interfaces, and use them instead.
309 */
310
José Fonseca00dc2f12014-06-12 19:18:11 +0100311 com_ptr<ID3D10Device> pD3D10Device;
312 hr = pSwapChain->GetDevice(IID_ID3D10Device, (void **)&pD3D10Device);
José Fonseca29d4bda2014-02-28 17:50:24 +0000313 if (SUCCEEDED(hr)) {
José Fonseca00dc2f12014-06-12 19:18:11 +0100314 ID3D10Resource *pD3D10Resource = NULL;
315 hr = pSwapChain->GetBuffer(0, IID_ID3D10Resource, (void **)&pD3D10Resource);
José Fonseca29d4bda2014-02-28 17:50:24 +0000316 assert(SUCCEEDED(hr));
317 if (FAILED(hr)) {
318 return NULL;
319 }
320
José Fonseca29d4bda2014-02-28 17:50:24 +0000321 return getSubResourceImage(pD3D10Device, pD3D10Resource, Format, 0, 0);
322 }
323
José Fonseca00dc2f12014-06-12 19:18:11 +0100324 com_ptr<ID3D11Device> pD3D11Device;
325 hr = pSwapChain->GetDevice(IID_ID3D11Device, (void **)&pD3D11Device);
326 if (SUCCEEDED(hr)) {
327 ID3D11Resource *pD3D11Resource = NULL;
328 hr = pSwapChain->GetBuffer(0, IID_ID3D11Resource, (void **)&pD3D11Resource);
329 assert(SUCCEEDED(hr));
330 if (FAILED(hr)) {
331 return NULL;
332 }
333
334 com_ptr<ID3D11DeviceContext> pD3D11DeviceContext;
335 pD3D11Device->GetImmediateContext(&pD3D11DeviceContext);
336
José Fonseca00dc2f12014-06-12 19:18:11 +0100337 return getSubResourceImage(pD3D11DeviceContext, pD3D11Resource, Format, 0, 0);
338 }
José Fonseca29d4bda2014-02-28 17:50:24 +0000339
340 return NULL;
341}
342
343
344void
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100345dumpDevice(StateWriter &writer, IDXGISwapChain *pSwapChain)
José Fonseca29d4bda2014-02-28 17:50:24 +0000346{
José Fonseca52024be2014-06-12 19:48:35 +0100347 HRESULT hr;
José Fonseca29d4bda2014-02-28 17:50:24 +0000348
José Fonseca52024be2014-06-12 19:48:35 +0100349 if (pSwapChain) {
350 com_ptr<ID3D10Device> pD3D10Device;
351 hr = pSwapChain->GetDevice(IID_ID3D10Device, (void **)&pD3D10Device);
352 if (SUCCEEDED(hr)) {
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100353 dumpDevice(writer, pD3D10Device);
José Fonseca52024be2014-06-12 19:48:35 +0100354 return;
355 }
356
José Fonseca52024be2014-06-12 19:48:35 +0100357 com_ptr<ID3D11Device> pD3D11Device;
358 hr = pSwapChain->GetDevice(IID_ID3D11Device, (void **)&pD3D11Device);
359 if (SUCCEEDED(hr)) {
360 com_ptr<ID3D11DeviceContext> pD3D11DeviceContext;
361 pD3D11Device->GetImmediateContext(&pD3D11DeviceContext);
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100362 dumpDevice(writer, pD3D11DeviceContext);
José Fonseca52024be2014-06-12 19:48:35 +0100363 return;
364 }
José Fonseca52024be2014-06-12 19:48:35 +0100365 }
366
367 // Fallback -- this should really never happen.
368 assert(0);
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100369 writer.beginMember("framebuffer");
370 writer.beginObject();
José Fonseca29d4bda2014-02-28 17:50:24 +0000371 if (pSwapChain) {
372 image::Image *image;
373 image = getRenderTargetImage(pSwapChain);
374 if (image) {
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100375 writer.beginMember("SWAP_CHAIN");
376 writer.writeImage(image);
377 writer.endMember();
José Fonseca52024be2014-06-12 19:48:35 +0100378 delete image;
José Fonseca29d4bda2014-02-28 17:50:24 +0000379 }
380 }
Jose Fonsecae8ba0792015-05-01 12:38:03 +0100381 writer.endObject();
382 writer.endMember(); // framebuffer
José Fonseca29d4bda2014-02-28 17:50:24 +0000383}
384
385
Zack Rusin86bd4992015-03-03 21:50:43 -0500386std::string
387getDXGIFormatName(DXGI_FORMAT format)
388{
389 switch (format) {
390 case DXGI_FORMAT_UNKNOWN:
391 return "DXGI_FORMAT_UNKNOWN";
392 case DXGI_FORMAT_R32G32B32A32_TYPELESS:
393 return "DXGI_FORMAT_R32G32B32A32_TYPELESS";
394 case DXGI_FORMAT_R32G32B32A32_FLOAT:
395 return "DXGI_FORMAT_R32G32B32A32_FLOAT";
396 case DXGI_FORMAT_R32G32B32A32_UINT:
397 return "DXGI_FORMAT_R32G32B32A32_UINT";
398 case DXGI_FORMAT_R32G32B32A32_SINT:
399 return "DXGI_FORMAT_R32G32B32A32_SINT";
400 case DXGI_FORMAT_R32G32B32_TYPELESS:
401 return "DXGI_FORMAT_R32G32B32_TYPELESS";
402 case DXGI_FORMAT_R32G32B32_FLOAT:
403 return "DXGI_FORMAT_R32G32B32_FLOAT";
404 case DXGI_FORMAT_R32G32B32_UINT:
405 return "DXGI_FORMAT_R32G32B32_UINT";
406 case DXGI_FORMAT_R32G32B32_SINT:
407 return "DXGI_FORMAT_R32G32B32_SINT";
408 case DXGI_FORMAT_R16G16B16A16_TYPELESS:
409 return "DXGI_FORMAT_R16G16B16A16_TYPELESS";
410 case DXGI_FORMAT_R16G16B16A16_FLOAT:
411 return "DXGI_FORMAT_R16G16B16A16_FLOAT";
412 case DXGI_FORMAT_R16G16B16A16_UNORM:
413 return "DXGI_FORMAT_R16G16B16A16_UNORM";
414 case DXGI_FORMAT_R16G16B16A16_UINT:
415 return "DXGI_FORMAT_R16G16B16A16_UINT";
416 case DXGI_FORMAT_R16G16B16A16_SNORM:
417 return "DXGI_FORMAT_R16G16B16A16_SNORM";
418 case DXGI_FORMAT_R16G16B16A16_SINT:
419 return "DXGI_FORMAT_R16G16B16A16_SINT";
420 case DXGI_FORMAT_R32G32_TYPELESS:
421 return "DXGI_FORMAT_R32G32_TYPELESS";
422 case DXGI_FORMAT_R32G32_FLOAT:
423 return "DXGI_FORMAT_R32G32_FLOAT";
424 case DXGI_FORMAT_R32G32_UINT:
425 return "DXGI_FORMAT_R32G32_UINT";
426 case DXGI_FORMAT_R32G32_SINT:
427 return "DXGI_FORMAT_R32G32_SINT";
428 case DXGI_FORMAT_R32G8X24_TYPELESS:
429 return "DXGI_FORMAT_R32G8X24_TYPELESS";
430 case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
431 return "DXGI_FORMAT_D32_FLOAT_S8X24_UINT";
432 case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
433 return "DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS";
434 case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
435 return "DXGI_FORMAT_X32_TYPELESS_G8X24_UINT";
436 case DXGI_FORMAT_R10G10B10A2_TYPELESS:
437 return "DXGI_FORMAT_R10G10B10A2_TYPELESS";
438 case DXGI_FORMAT_R10G10B10A2_UNORM:
439 return "DXGI_FORMAT_R10G10B10A2_UNORM";
440 case DXGI_FORMAT_R10G10B10A2_UINT:
441 return "DXGI_FORMAT_R10G10B10A2_UINT";
442 case DXGI_FORMAT_R11G11B10_FLOAT:
443 return "DXGI_FORMAT_R11G11B10_FLOAT";
444 case DXGI_FORMAT_R8G8B8A8_TYPELESS:
445 return "DXGI_FORMAT_R8G8B8A8_TYPELESS";
446 case DXGI_FORMAT_R8G8B8A8_UNORM:
447 return "DXGI_FORMAT_R8G8B8A8_UNORM";
448 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
449 return "DXGI_FORMAT_R8G8B8A8_UNORM_SRGB";
450 case DXGI_FORMAT_R8G8B8A8_UINT:
451 return "DXGI_FORMAT_R8G8B8A8_UINT";
452 case DXGI_FORMAT_R8G8B8A8_SNORM:
453 return "DXGI_FORMAT_R8G8B8A8_SNORM";
454 case DXGI_FORMAT_R8G8B8A8_SINT:
455 return "DXGI_FORMAT_R8G8B8A8_SINT";
456 case DXGI_FORMAT_R16G16_TYPELESS:
457 return "DXGI_FORMAT_R16G16_TYPELESS";
458 case DXGI_FORMAT_R16G16_FLOAT:
459 return "DXGI_FORMAT_R16G16_FLOAT";
460 case DXGI_FORMAT_R16G16_UNORM:
461 return "DXGI_FORMAT_R16G16_UNORM";
462 case DXGI_FORMAT_R16G16_UINT:
463 return "DXGI_FORMAT_R16G16_UINT";
464 case DXGI_FORMAT_R16G16_SNORM:
465 return "DXGI_FORMAT_R16G16_SNORM";
466 case DXGI_FORMAT_R16G16_SINT:
467 return "DXGI_FORMAT_R16G16_SINT";
468 case DXGI_FORMAT_R32_TYPELESS:
469 return "DXGI_FORMAT_R32_TYPELESS";
470 case DXGI_FORMAT_D32_FLOAT:
471 return "DXGI_FORMAT_D32_FLOAT";
472 case DXGI_FORMAT_R32_FLOAT:
473 return "DXGI_FORMAT_R32_FLOAT";
474 case DXGI_FORMAT_R32_UINT:
475 return "DXGI_FORMAT_R32_UINT";
476 case DXGI_FORMAT_R32_SINT:
477 return "DXGI_FORMAT_R32_SINT";
478 case DXGI_FORMAT_R24G8_TYPELESS:
479 return "DXGI_FORMAT_R24G8_TYPELESS";
480 case DXGI_FORMAT_D24_UNORM_S8_UINT:
481 return "DXGI_FORMAT_D24_UNORM_S8_UINT";
482 case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
483 return "DXGI_FORMAT_R24_UNORM_X8_TYPELESS";
484 case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
485 return "DXGI_FORMAT_X24_TYPELESS_G8_UINT";
486 case DXGI_FORMAT_R8G8_TYPELESS:
487 return "DXGI_FORMAT_R8G8_TYPELESS";
488 case DXGI_FORMAT_R8G8_UNORM:
489 return "DXGI_FORMAT_R8G8_UNORM";
490 case DXGI_FORMAT_R8G8_UINT:
491 return "DXGI_FORMAT_R8G8_UINT";
492 case DXGI_FORMAT_R8G8_SNORM:
493 return "DXGI_FORMAT_R8G8_SNORM";
494 case DXGI_FORMAT_R8G8_SINT:
495 return "DXGI_FORMAT_R8G8_SINT";
496 case DXGI_FORMAT_R16_TYPELESS:
497 return "DXGI_FORMAT_R16_TYPELESS";
498 case DXGI_FORMAT_R16_FLOAT:
499 return "DXGI_FORMAT_R16_FLOAT";
500 case DXGI_FORMAT_D16_UNORM:
501 return "DXGI_FORMAT_D16_UNORM";
502 case DXGI_FORMAT_R16_UNORM:
503 return "DXGI_FORMAT_R16_UNORM";
504 case DXGI_FORMAT_R16_UINT:
505 return "DXGI_FORMAT_R16_UINT";
506 case DXGI_FORMAT_R16_SNORM:
507 return "DXGI_FORMAT_R16_SNORM";
508 case DXGI_FORMAT_R16_SINT:
509 return "DXGI_FORMAT_R16_SINT";
510 case DXGI_FORMAT_R8_TYPELESS:
511 return "DXGI_FORMAT_R8_TYPELESS";
512 case DXGI_FORMAT_R8_UNORM:
513 return "DXGI_FORMAT_R8_UNORM";
514 case DXGI_FORMAT_R8_UINT:
515 return "DXGI_FORMAT_R8_UINT";
516 case DXGI_FORMAT_R8_SNORM:
517 return "DXGI_FORMAT_R8_SNORM";
518 case DXGI_FORMAT_R8_SINT:
519 return "DXGI_FORMAT_R8_SINT";
520 case DXGI_FORMAT_A8_UNORM:
521 return "DXGI_FORMAT_A8_UNORM";
522 case DXGI_FORMAT_R1_UNORM:
523 return "DXGI_FORMAT_R1_UNORM";
524 case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
525 return "DXGI_FORMAT_R9G9B9E5_SHAREDEXP";
526 case DXGI_FORMAT_R8G8_B8G8_UNORM:
527 return "DXGI_FORMAT_R8G8_B8G8_UNORM";
528 case DXGI_FORMAT_G8R8_G8B8_UNORM:
529 return "DXGI_FORMAT_G8R8_G8B8_UNORM";
530 case DXGI_FORMAT_BC1_TYPELESS:
531 return "DXGI_FORMAT_BC1_TYPELESS";
532 case DXGI_FORMAT_BC1_UNORM:
533 return "DXGI_FORMAT_BC1_UNORM";
534 case DXGI_FORMAT_BC1_UNORM_SRGB:
535 return "DXGI_FORMAT_BC1_UNORM_SRGB";
536 case DXGI_FORMAT_BC2_TYPELESS:
537 return "DXGI_FORMAT_BC2_TYPELESS";
538 case DXGI_FORMAT_BC2_UNORM:
539 return "DXGI_FORMAT_BC2_UNORM";
540 case DXGI_FORMAT_BC2_UNORM_SRGB:
541 return "DXGI_FORMAT_BC2_UNORM_SRGB";
542 case DXGI_FORMAT_BC3_TYPELESS:
543 return "DXGI_FORMAT_BC3_TYPELESS";
544 case DXGI_FORMAT_BC3_UNORM:
545 return "DXGI_FORMAT_BC3_UNORM";
546 case DXGI_FORMAT_BC3_UNORM_SRGB:
547 return "DXGI_FORMAT_BC3_UNORM_SRGB";
548 case DXGI_FORMAT_BC4_TYPELESS:
549 return "DXGI_FORMAT_BC4_TYPELESS";
550 case DXGI_FORMAT_BC4_UNORM:
551 return "DXGI_FORMAT_BC4_UNORM";
552 case DXGI_FORMAT_BC4_SNORM:
553 return "DXGI_FORMAT_BC4_SNORM";
554 case DXGI_FORMAT_BC5_TYPELESS:
555 return "DXGI_FORMAT_BC5_TYPELESS";
556 case DXGI_FORMAT_BC5_UNORM:
557 return "DXGI_FORMAT_BC5_UNORM";
558 case DXGI_FORMAT_BC5_SNORM:
559 return "DXGI_FORMAT_BC5_SNORM";
560 case DXGI_FORMAT_B5G6R5_UNORM:
561 return "DXGI_FORMAT_B5G6R5_UNORM";
562 case DXGI_FORMAT_B5G5R5A1_UNORM:
563 return "DXGI_FORMAT_B5G5R5A1_UNORM";
564 case DXGI_FORMAT_B8G8R8A8_UNORM:
565 return "DXGI_FORMAT_B8G8R8A8_UNORM";
566 case DXGI_FORMAT_B8G8R8X8_UNORM:
567 return "DXGI_FORMAT_B8G8R8X8_UNORM";
568 case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
569 return "DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM";
570 case DXGI_FORMAT_B8G8R8A8_TYPELESS:
571 return "DXGI_FORMAT_B8G8R8A8_TYPELESS";
572 case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
573 return "DXGI_FORMAT_B8G8R8A8_UNORM_SRGB";
574 case DXGI_FORMAT_B8G8R8X8_TYPELESS:
575 return "DXGI_FORMAT_B8G8R8X8_TYPELESS";
576 case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
577 return "DXGI_FORMAT_B8G8R8X8_UNORM_SRGB";
578 case DXGI_FORMAT_BC6H_TYPELESS:
579 return "DXGI_FORMAT_BC6H_TYPELESS";
580 case DXGI_FORMAT_BC6H_UF16:
581 return "DXGI_FORMAT_BC6H_UF16";
582 case DXGI_FORMAT_BC6H_SF16:
583 return "DXGI_FORMAT_BC6H_SF16";
584 case DXGI_FORMAT_BC7_TYPELESS:
585 return "DXGI_FORMAT_BC7_TYPELESS";
586 case DXGI_FORMAT_BC7_UNORM:
587 return "DXGI_FORMAT_BC7_UNORM";
588 case DXGI_FORMAT_BC7_UNORM_SRGB:
589 return "DXGI_FORMAT_BC7_UNORM_SRGB";
590 case DXGI_FORMAT_AYUV:
591 return "DXGI_FORMAT_AYUV";
592 case DXGI_FORMAT_Y410:
593 return "DXGI_FORMAT_Y410";
594 case DXGI_FORMAT_Y416:
595 return "DXGI_FORMAT_Y416";
596 case DXGI_FORMAT_NV12:
597 return "DXGI_FORMAT_NV12";
598 case DXGI_FORMAT_P010:
599 return "DXGI_FORMAT_P010";
600 case DXGI_FORMAT_P016:
601 return "DXGI_FORMAT_P016";
602 case DXGI_FORMAT_420_OPAQUE:
603 return "DXGI_FORMAT_420_OPAQUE";
604 case DXGI_FORMAT_YUY2:
605 return "DXGI_FORMAT_YUY2";
606 case DXGI_FORMAT_Y210:
607 return "DXGI_FORMAT_Y210";
608 case DXGI_FORMAT_Y216:
609 return "DXGI_FORMAT_Y216";
610 case DXGI_FORMAT_NV11:
611 return "DXGI_FORMAT_NV11";
612 case DXGI_FORMAT_AI44:
613 return "DXGI_FORMAT_AI44";
614 case DXGI_FORMAT_IA44:
615 return "DXGI_FORMAT_IA44";
616 case DXGI_FORMAT_P8:
617 return "DXGI_FORMAT_P8";
618 case DXGI_FORMAT_A8P8:
619 return "DXGI_FORMAT_A8P8";
620 case DXGI_FORMAT_B4G4R4A4_UNORM:
621 return "DXGI_FORMAT_B4G4R4A4_UNORM";
622 case DXGI_FORMAT_FORCE_UINT:
623 return "DXGI_FORMAT_FORCE_UINT";
624 default:
625 return "DXGI_ERROR_FORMAT";
626 }
627}
628
José Fonsecac8695f72013-03-06 12:12:04 +0000629} /* namespace d3dstate */