mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-17 20:16:31 +00:00
2073 lines
70 KiB
C++
2073 lines
70 KiB
C++
/******************************************************************************
|
|
* The MIT License (MIT)
|
|
*
|
|
* Copyright (c) 2016-2017 Baldur Karlsson
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
* THE SOFTWARE.
|
|
******************************************************************************/
|
|
|
|
#include "dxgi_common.h"
|
|
#include "common/common.h"
|
|
#include "serialise/serialiser.h"
|
|
|
|
UINT GetFormatBPP(DXGI_FORMAT f)
|
|
{
|
|
UINT ret = 8;
|
|
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32A32_UINT:
|
|
case DXGI_FORMAT_R32G32B32A32_SINT: ret *= 16; break;
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_UINT:
|
|
case DXGI_FORMAT_R32G32B32_SINT: ret *= 12; break;
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT:
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R32G32_UINT:
|
|
case DXGI_FORMAT_R32G32_SINT:
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: ret *= 8; break;
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UNORM:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT:
|
|
case DXGI_FORMAT_R11G11B10_FLOAT:
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT:
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SINT:
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_UINT:
|
|
case DXGI_FORMAT_R32_SINT:
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
|
|
case DXGI_FORMAT_R8G8_B8G8_UNORM:
|
|
case DXGI_FORMAT_G8R8_G8B8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM:
|
|
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: ret *= 4; break;
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R8G8_SINT:
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R16_SINT:
|
|
case DXGI_FORMAT_B5G6R5_UNORM:
|
|
case DXGI_FORMAT_B5G5R5A1_UNORM: ret *= 2; break;
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM:
|
|
case DXGI_FORMAT_R8_SINT:
|
|
case DXGI_FORMAT_A8_UNORM: ret *= 1; break;
|
|
case DXGI_FORMAT_R1_UNORM: ret /= 8; break;
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_UNORM:
|
|
case DXGI_FORMAT_BC4_SNORM:
|
|
// return block size (in bits)
|
|
ret *= 8;
|
|
break;
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_UNORM:
|
|
case DXGI_FORMAT_BC5_SNORM:
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_UF16:
|
|
case DXGI_FORMAT_BC6H_SF16:
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB:
|
|
// return block size (in bits)
|
|
ret *= 16;
|
|
break;
|
|
|
|
case DXGI_FORMAT_AYUV:
|
|
case DXGI_FORMAT_Y410:
|
|
case DXGI_FORMAT_YUY2:
|
|
case DXGI_FORMAT_Y416:
|
|
case DXGI_FORMAT_NV12:
|
|
case DXGI_FORMAT_P010:
|
|
case DXGI_FORMAT_P016:
|
|
case DXGI_FORMAT_420_OPAQUE:
|
|
case DXGI_FORMAT_Y210:
|
|
case DXGI_FORMAT_Y216:
|
|
case DXGI_FORMAT_NV11:
|
|
case DXGI_FORMAT_AI44:
|
|
case DXGI_FORMAT_IA44:
|
|
case DXGI_FORMAT_P8:
|
|
case DXGI_FORMAT_A8P8:
|
|
case DXGI_FORMAT_P208:
|
|
case DXGI_FORMAT_V208:
|
|
case DXGI_FORMAT_V408: RDCERR("Video formats not supported"); break;
|
|
|
|
case DXGI_FORMAT_B4G4R4A4_UNORM:
|
|
ret *= 2; // 4 channels, half a byte each
|
|
break;
|
|
|
|
case DXGI_FORMAT_UNKNOWN:
|
|
ret = 0;
|
|
RDCWARN("Getting BPP of DXGI_FORMAT_UNKNOWN");
|
|
break;
|
|
|
|
default: RDCERR("Unrecognised DXGI Format: %d", f); break;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
UINT GetByteSize(int Width, int Height, int Depth, DXGI_FORMAT Format, int mip)
|
|
{
|
|
UINT ret = RDCMAX(Width >> mip, 1) * RDCMAX(Height >> mip, 1) * RDCMAX(Depth >> mip, 1);
|
|
|
|
switch(Format)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32A32_UINT:
|
|
case DXGI_FORMAT_R32G32B32A32_SINT: ret *= 16; break;
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_UINT:
|
|
case DXGI_FORMAT_R32G32B32_SINT: ret *= 12; break;
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT:
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R32G32_UINT:
|
|
case DXGI_FORMAT_R32G32_SINT:
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: ret *= 8; break;
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UNORM:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT:
|
|
case DXGI_FORMAT_R11G11B10_FLOAT:
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT:
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SINT:
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_UINT:
|
|
case DXGI_FORMAT_R32_SINT:
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
|
|
case DXGI_FORMAT_R8G8_B8G8_UNORM:
|
|
case DXGI_FORMAT_G8R8_G8B8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM:
|
|
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: ret *= 4; break;
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R8G8_SINT:
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R16_SINT:
|
|
case DXGI_FORMAT_B5G6R5_UNORM:
|
|
case DXGI_FORMAT_B5G5R5A1_UNORM: ret *= 2; break;
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM:
|
|
case DXGI_FORMAT_R8_SINT:
|
|
case DXGI_FORMAT_A8_UNORM: ret *= 1; break;
|
|
case DXGI_FORMAT_R1_UNORM: ret = RDCMAX(ret / 8, 1U); break;
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_UNORM:
|
|
case DXGI_FORMAT_BC4_SNORM:
|
|
ret = AlignUp4(RDCMAX(Width >> mip, 1)) * AlignUp4(RDCMAX(Height >> mip, 1)) *
|
|
RDCMAX(Depth >> mip, 1);
|
|
ret /= 2;
|
|
break;
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_UNORM:
|
|
case DXGI_FORMAT_BC5_SNORM:
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_UF16:
|
|
case DXGI_FORMAT_BC6H_SF16:
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB:
|
|
ret = AlignUp4(RDCMAX(Width >> mip, 1)) * AlignUp4(RDCMAX(Height >> mip, 1)) *
|
|
RDCMAX(Depth >> mip, 1);
|
|
ret *= 1;
|
|
break;
|
|
case DXGI_FORMAT_AYUV:
|
|
case DXGI_FORMAT_Y410:
|
|
case DXGI_FORMAT_YUY2:
|
|
case DXGI_FORMAT_Y416:
|
|
case DXGI_FORMAT_NV12:
|
|
case DXGI_FORMAT_P010:
|
|
case DXGI_FORMAT_P016:
|
|
case DXGI_FORMAT_420_OPAQUE:
|
|
case DXGI_FORMAT_Y210:
|
|
case DXGI_FORMAT_Y216:
|
|
case DXGI_FORMAT_NV11:
|
|
case DXGI_FORMAT_AI44:
|
|
case DXGI_FORMAT_IA44:
|
|
case DXGI_FORMAT_P8:
|
|
case DXGI_FORMAT_A8P8:
|
|
case DXGI_FORMAT_P208:
|
|
case DXGI_FORMAT_V208:
|
|
case DXGI_FORMAT_V408: RDCERR("Video formats not supported"); break;
|
|
|
|
case DXGI_FORMAT_B4G4R4A4_UNORM:
|
|
ret *= 2; // 4 channels, half a byte each
|
|
break;
|
|
case DXGI_FORMAT_UNKNOWN:
|
|
RDCERR("Getting byte size of unknown DXGI format");
|
|
ret = 0;
|
|
break;
|
|
default: RDCERR("Unrecognised DXGI Format: %d", Format); break;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
bool IsBlockFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_UNORM:
|
|
case DXGI_FORMAT_BC4_SNORM:
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_UNORM:
|
|
case DXGI_FORMAT_BC5_SNORM:
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_UF16:
|
|
case DXGI_FORMAT_BC6H_SF16:
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB: return true;
|
|
default: break;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool IsDepthFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
|
|
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM: return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool IsDepthAndStencilFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
|
|
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
case DXGI_FORMAT_R24G8_TYPELESS: return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool IsTypelessFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC7_TYPELESS: return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool IsUIntFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_UINT:
|
|
case DXGI_FORMAT_R32G32B32_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R32G32_UINT:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R32_UINT:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R8_UINT: return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool IsIntFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_SINT:
|
|
case DXGI_FORMAT_R32G32B32_SINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT:
|
|
case DXGI_FORMAT_R32G32_SINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT:
|
|
case DXGI_FORMAT_R16G16_SINT:
|
|
case DXGI_FORMAT_R32_SINT:
|
|
case DXGI_FORMAT_R8G8_SINT:
|
|
case DXGI_FORMAT_R16_SINT:
|
|
case DXGI_FORMAT_R8_SINT: return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool IsSRGBFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: return true;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
DXGI_FORMAT GetDepthTypedFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_TYPELESS: return DXGI_FORMAT_D32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
|
|
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT: return DXGI_FORMAT_D24_UNORM_S8_UINT;
|
|
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_R16_TYPELESS: return DXGI_FORMAT_D16_UNORM;
|
|
|
|
default: break;
|
|
}
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetNonSRGBFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: return DXGI_FORMAT_R8G8B8A8_UNORM;
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB: return DXGI_FORMAT_BC1_UNORM;
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB: return DXGI_FORMAT_BC2_UNORM;
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB: return DXGI_FORMAT_BC3_UNORM;
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB: return DXGI_FORMAT_BC7_UNORM;
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8A8_UNORM;
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8X8_UNORM;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetSRGBFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM: return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
|
|
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM: return DXGI_FORMAT_BC1_UNORM_SRGB;
|
|
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM: return DXGI_FORMAT_BC2_UNORM_SRGB;
|
|
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM: return DXGI_FORMAT_BC3_UNORM_SRGB;
|
|
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM: return DXGI_FORMAT_BC7_UNORM_SRGB;
|
|
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM: return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
|
|
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM: return DXGI_FORMAT_B8G8R8X8_UNORM_SRGB;
|
|
|
|
default: break;
|
|
}
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetUnormTypedFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT: return DXGI_FORMAT_R16G16B16A16_UNORM;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT: return DXGI_FORMAT_R10G10B10A2_UNORM;
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT: return DXGI_FORMAT_R8G8B8A8_UNORM;
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SINT: return DXGI_FORMAT_R16G16_UNORM;
|
|
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT: return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R8G8_SINT: return DXGI_FORMAT_R8G8_UNORM;
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R16_SINT: return DXGI_FORMAT_R16_UNORM;
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM:
|
|
case DXGI_FORMAT_R8_SINT: return DXGI_FORMAT_R8_UNORM;
|
|
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB: return DXGI_FORMAT_BC1_UNORM;
|
|
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB: return DXGI_FORMAT_BC2_UNORM;
|
|
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB: return DXGI_FORMAT_BC3_UNORM;
|
|
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_SNORM: return DXGI_FORMAT_BC4_UNORM;
|
|
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_SNORM: return DXGI_FORMAT_BC5_UNORM;
|
|
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM;
|
|
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS: return DXGI_FORMAT_B8G8R8X8_UNORM;
|
|
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_SF16: return DXGI_FORMAT_BC6H_UF16;
|
|
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB: return DXGI_FORMAT_BC7_UNORM;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetSnormTypedFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT: return DXGI_FORMAT_R16G16B16A16_SNORM;
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT: return DXGI_FORMAT_R8G8B8A8_SNORM;
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SINT: return DXGI_FORMAT_R16G16_SNORM;
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SINT: return DXGI_FORMAT_R8G8_SNORM;
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SINT: return DXGI_FORMAT_R16_SNORM;
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SINT:
|
|
case DXGI_FORMAT_A8_UNORM: return DXGI_FORMAT_R8_SNORM;
|
|
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_UNORM: return DXGI_FORMAT_BC4_SNORM;
|
|
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_UNORM: return DXGI_FORMAT_BC5_SNORM;
|
|
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_UF16: return DXGI_FORMAT_BC6H_SF16;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetUIntTypedFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32A32_SINT: return DXGI_FORMAT_R32G32B32A32_UINT;
|
|
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_SINT: return DXGI_FORMAT_R32G32B32_UINT;
|
|
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT: return DXGI_FORMAT_R16G16B16A16_UINT;
|
|
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R32G32_SINT: return DXGI_FORMAT_R32G32_UINT;
|
|
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UNORM: return DXGI_FORMAT_R10G10B10A2_UINT;
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT: return DXGI_FORMAT_R8G8B8A8_UINT;
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SINT: return DXGI_FORMAT_R16G16_UINT;
|
|
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_SINT: return DXGI_FORMAT_R32_UINT;
|
|
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R8G8_SINT: return DXGI_FORMAT_R8G8_UINT;
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R16_SINT: return DXGI_FORMAT_R16_UINT;
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_SNORM:
|
|
case DXGI_FORMAT_R8_SINT:
|
|
case DXGI_FORMAT_A8_UNORM: return DXGI_FORMAT_R8_UINT;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetSIntTypedFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32A32_UINT: return DXGI_FORMAT_R32G32B32A32_SINT;
|
|
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_UINT: return DXGI_FORMAT_R32G32B32_SINT;
|
|
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM: return DXGI_FORMAT_R16G16B16A16_SINT;
|
|
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R32G32_UINT: return DXGI_FORMAT_R32G32_SINT;
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM: return DXGI_FORMAT_R8G8B8A8_SINT;
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM: return DXGI_FORMAT_R16G16_SINT;
|
|
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_UINT: return DXGI_FORMAT_R32_SINT;
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM: return DXGI_FORMAT_R8G8_SINT;
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM: return DXGI_FORMAT_R16_SINT;
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM: return DXGI_FORMAT_R8_SINT;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetFloatTypedFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_SINT:
|
|
case DXGI_FORMAT_R32G32B32A32_UINT: return DXGI_FORMAT_R32G32B32A32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_SINT:
|
|
case DXGI_FORMAT_R32G32B32_UINT: return DXGI_FORMAT_R32G32B32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT: return DXGI_FORMAT_R16G16B16A16_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_SINT:
|
|
case DXGI_FORMAT_R32G32_UINT: return DXGI_FORMAT_R32G32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT: return DXGI_FORMAT_R10G10B10A2_UNORM;
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM: return DXGI_FORMAT_R8G8B8A8_UNORM;
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM: return DXGI_FORMAT_R16G16_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_UINT: return DXGI_FORMAT_R32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM: return DXGI_FORMAT_R8G8_UNORM;
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM: return DXGI_FORMAT_R16_FLOAT;
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM: return DXGI_FORMAT_R8_UNORM;
|
|
}
|
|
|
|
return GetTypedFormat(f);
|
|
}
|
|
|
|
DXGI_FORMAT GetTypedFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS: return DXGI_FORMAT_R32G32B32A32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS: return DXGI_FORMAT_R32G32B32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS: return DXGI_FORMAT_R16G16B16A16_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32G32_TYPELESS: return DXGI_FORMAT_R32G32_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS: return DXGI_FORMAT_R32G8X24_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS: return DXGI_FORMAT_R10G10B10A2_UNORM;
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS: return DXGI_FORMAT_R8G8B8A8_UNORM;
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS: return DXGI_FORMAT_R16G16_FLOAT;
|
|
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
return DXGI_FORMAT_R32_FLOAT;
|
|
|
|
// maybe not valid casts?
|
|
case DXGI_FORMAT_R24G8_TYPELESS: return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM;
|
|
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS: return DXGI_FORMAT_B8G8R8X8_UNORM;
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS: return DXGI_FORMAT_R8G8_UNORM;
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS: return DXGI_FORMAT_R16_UNORM;
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS: return DXGI_FORMAT_R8_UNORM;
|
|
|
|
case DXGI_FORMAT_BC1_TYPELESS: return DXGI_FORMAT_BC1_UNORM;
|
|
|
|
case DXGI_FORMAT_BC4_TYPELESS: return DXGI_FORMAT_BC4_UNORM;
|
|
|
|
case DXGI_FORMAT_BC2_TYPELESS: return DXGI_FORMAT_BC2_UNORM;
|
|
|
|
case DXGI_FORMAT_BC3_TYPELESS: return DXGI_FORMAT_BC3_UNORM;
|
|
|
|
case DXGI_FORMAT_BC5_TYPELESS: return DXGI_FORMAT_BC5_UNORM;
|
|
|
|
case DXGI_FORMAT_BC6H_TYPELESS: return DXGI_FORMAT_BC6H_UF16;
|
|
|
|
case DXGI_FORMAT_BC7_TYPELESS: return DXGI_FORMAT_BC7_UNORM;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetTypedFormat(DXGI_FORMAT f, CompType typeHint)
|
|
{
|
|
switch(f)
|
|
{
|
|
// these formats have multiple typed formats - use the hint to decide which to use
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R8_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R8_SINT;
|
|
if(typeHint == CompType::SNorm)
|
|
return DXGI_FORMAT_R8_SNORM;
|
|
return DXGI_FORMAT_R8_UNORM;
|
|
}
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R8G8_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R8G8_SINT;
|
|
if(typeHint == CompType::SNorm)
|
|
return DXGI_FORMAT_R8G8_SNORM;
|
|
return DXGI_FORMAT_R8G8_UNORM;
|
|
}
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R8G8B8A8_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R8G8B8A8_SINT;
|
|
if(typeHint == CompType::SNorm)
|
|
return DXGI_FORMAT_R8G8B8A8_SNORM;
|
|
return DXGI_FORMAT_R8G8B8A8_UNORM;
|
|
}
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R16_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R16_SINT;
|
|
if(typeHint == CompType::SNorm)
|
|
return DXGI_FORMAT_R16_SNORM;
|
|
if(typeHint == CompType::Float)
|
|
return DXGI_FORMAT_R16_FLOAT;
|
|
if(typeHint == CompType::Depth)
|
|
return DXGI_FORMAT_D16_UNORM;
|
|
return DXGI_FORMAT_R16_UNORM;
|
|
}
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R16G16_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R16G16_SINT;
|
|
if(typeHint == CompType::SNorm)
|
|
return DXGI_FORMAT_R16G16_SNORM;
|
|
if(typeHint == CompType::Float)
|
|
return DXGI_FORMAT_R16G16_FLOAT;
|
|
return DXGI_FORMAT_R16G16_UNORM;
|
|
}
|
|
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R16G16B16A16_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R16G16B16A16_SINT;
|
|
if(typeHint == CompType::SNorm)
|
|
return DXGI_FORMAT_R16G16B16A16_SNORM;
|
|
if(typeHint == CompType::Float)
|
|
return DXGI_FORMAT_R16G16B16A16_FLOAT;
|
|
return DXGI_FORMAT_R16G16B16A16_UNORM;
|
|
}
|
|
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R32_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R32_SINT;
|
|
if(typeHint == CompType::Depth)
|
|
return DXGI_FORMAT_D32_FLOAT;
|
|
return DXGI_FORMAT_R32_FLOAT;
|
|
}
|
|
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R32G32_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R32G32_SINT;
|
|
return DXGI_FORMAT_R32G32_FLOAT;
|
|
}
|
|
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R32G32B32_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R32G32B32_SINT;
|
|
return DXGI_FORMAT_R32G32B32_FLOAT;
|
|
}
|
|
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_R32G32B32A32_UINT;
|
|
if(typeHint == CompType::SInt)
|
|
return DXGI_FORMAT_R32G32B32A32_SINT;
|
|
return DXGI_FORMAT_R32G32B32A32_FLOAT;
|
|
}
|
|
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
|
|
if(typeHint == CompType::Depth)
|
|
return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
|
|
return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
|
|
}
|
|
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
{
|
|
if(typeHint == CompType::UInt)
|
|
return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
|
|
if(typeHint == CompType::Depth)
|
|
return DXGI_FORMAT_D24_UNORM_S8_UINT;
|
|
return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
|
|
}
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
return typeHint == CompType::UInt ? DXGI_FORMAT_R10G10B10A2_UINT
|
|
: DXGI_FORMAT_R10G10B10A2_UNORM;
|
|
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
return typeHint == CompType::SNorm ? DXGI_FORMAT_BC4_SNORM : DXGI_FORMAT_BC4_UNORM;
|
|
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
return typeHint == CompType::SNorm ? DXGI_FORMAT_BC5_SNORM : DXGI_FORMAT_BC5_UNORM;
|
|
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
return typeHint == CompType::SNorm ? DXGI_FORMAT_BC6H_SF16 : DXGI_FORMAT_BC6H_UF16;
|
|
|
|
// these formats have only one valid non-typeless format (ignoring SRGB)
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM;
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS: return DXGI_FORMAT_B8G8R8X8_UNORM;
|
|
case DXGI_FORMAT_BC1_TYPELESS: return DXGI_FORMAT_BC1_UNORM;
|
|
case DXGI_FORMAT_BC2_TYPELESS: return DXGI_FORMAT_BC2_UNORM;
|
|
case DXGI_FORMAT_BC3_TYPELESS: return DXGI_FORMAT_BC3_UNORM;
|
|
case DXGI_FORMAT_BC7_TYPELESS: return DXGI_FORMAT_BC7_UNORM;
|
|
|
|
default: break;
|
|
}
|
|
|
|
return f;
|
|
}
|
|
|
|
DXGI_FORMAT GetTypelessFormat(DXGI_FORMAT f)
|
|
{
|
|
switch(f)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32A32_UINT:
|
|
case DXGI_FORMAT_R32G32B32A32_SINT: return DXGI_FORMAT_R32G32B32A32_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_UINT:
|
|
case DXGI_FORMAT_R32G32B32_SINT: return DXGI_FORMAT_R32G32B32_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT: return DXGI_FORMAT_R16G16B16A16_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R32G32_UINT:
|
|
case DXGI_FORMAT_R32G32_SINT: return DXGI_FORMAT_R32G32_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: return DXGI_FORMAT_R32G8X24_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UNORM:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT:
|
|
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: // maybe not valid cast?
|
|
return DXGI_FORMAT_R10G10B10A2_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT: return DXGI_FORMAT_R8G8B8A8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SINT: return DXGI_FORMAT_R16G16_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT: // maybe not valid cast?
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_UINT:
|
|
case DXGI_FORMAT_R32_SINT:
|
|
return DXGI_FORMAT_R32_TYPELESS;
|
|
|
|
// maybe not valid casts?
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT: return DXGI_FORMAT_R24G8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8_B8G8_UNORM: // maybe not valid cast?
|
|
case DXGI_FORMAT_G8R8_G8B8_UNORM: // maybe not valid cast?
|
|
return DXGI_FORMAT_B8G8R8A8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8X8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R8G8_SINT: return DXGI_FORMAT_R8G8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R16_SINT: return DXGI_FORMAT_R16_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM:
|
|
case DXGI_FORMAT_R8_SINT:
|
|
case DXGI_FORMAT_A8_UNORM: return DXGI_FORMAT_R8_TYPELESS;
|
|
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB: return DXGI_FORMAT_BC1_TYPELESS;
|
|
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_UNORM:
|
|
case DXGI_FORMAT_BC4_SNORM: return DXGI_FORMAT_BC4_TYPELESS;
|
|
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB: return DXGI_FORMAT_BC2_TYPELESS;
|
|
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB: return DXGI_FORMAT_BC3_TYPELESS;
|
|
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_UNORM:
|
|
case DXGI_FORMAT_BC5_SNORM: return DXGI_FORMAT_BC5_TYPELESS;
|
|
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_UF16:
|
|
case DXGI_FORMAT_BC6H_SF16: return DXGI_FORMAT_BC6H_TYPELESS;
|
|
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB: return DXGI_FORMAT_BC7_TYPELESS;
|
|
|
|
case DXGI_FORMAT_R1_UNORM:
|
|
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
|
|
case DXGI_FORMAT_B5G6R5_UNORM:
|
|
case DXGI_FORMAT_B5G5R5A1_UNORM:
|
|
case DXGI_FORMAT_R11G11B10_FLOAT:
|
|
case DXGI_FORMAT_AYUV:
|
|
case DXGI_FORMAT_Y410:
|
|
case DXGI_FORMAT_YUY2:
|
|
case DXGI_FORMAT_Y416:
|
|
case DXGI_FORMAT_NV12:
|
|
case DXGI_FORMAT_P010:
|
|
case DXGI_FORMAT_P016:
|
|
case DXGI_FORMAT_420_OPAQUE:
|
|
case DXGI_FORMAT_Y210:
|
|
case DXGI_FORMAT_Y216:
|
|
case DXGI_FORMAT_NV11:
|
|
case DXGI_FORMAT_AI44:
|
|
case DXGI_FORMAT_IA44:
|
|
case DXGI_FORMAT_P8:
|
|
case DXGI_FORMAT_A8P8:
|
|
case DXGI_FORMAT_P208:
|
|
case DXGI_FORMAT_V208:
|
|
case DXGI_FORMAT_V408:
|
|
case DXGI_FORMAT_B4G4R4A4_UNORM: return f;
|
|
|
|
case DXGI_FORMAT_UNKNOWN: return DXGI_FORMAT_UNKNOWN;
|
|
|
|
default: RDCERR("Unrecognised DXGI Format: %d", f); return DXGI_FORMAT_UNKNOWN;
|
|
}
|
|
}
|
|
|
|
D3D_PRIMITIVE_TOPOLOGY MakeD3DPrimitiveTopology(Topology Topo)
|
|
{
|
|
switch(Topo)
|
|
{
|
|
case Topology::LineLoop:
|
|
case Topology::TriangleFan: RDCWARN("Unsupported primitive topology on D3D: %x", Topo); break;
|
|
default:
|
|
case Topology::Unknown: return D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
|
|
case Topology::PointList: return D3D_PRIMITIVE_TOPOLOGY_POINTLIST;
|
|
case Topology::LineList: return D3D_PRIMITIVE_TOPOLOGY_LINELIST;
|
|
case Topology::LineStrip: return D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;
|
|
case Topology::TriangleList: return D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
|
|
case Topology::TriangleStrip: return D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;
|
|
case Topology::LineList_Adj: return D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ;
|
|
case Topology::LineStrip_Adj: return D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ;
|
|
case Topology::TriangleList_Adj: return D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ;
|
|
case Topology::TriangleStrip_Adj: return D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ;
|
|
case Topology::PatchList_1CPs:
|
|
case Topology::PatchList_2CPs:
|
|
case Topology::PatchList_3CPs:
|
|
case Topology::PatchList_4CPs:
|
|
case Topology::PatchList_5CPs:
|
|
case Topology::PatchList_6CPs:
|
|
case Topology::PatchList_7CPs:
|
|
case Topology::PatchList_8CPs:
|
|
case Topology::PatchList_9CPs:
|
|
case Topology::PatchList_10CPs:
|
|
case Topology::PatchList_11CPs:
|
|
case Topology::PatchList_12CPs:
|
|
case Topology::PatchList_13CPs:
|
|
case Topology::PatchList_14CPs:
|
|
case Topology::PatchList_15CPs:
|
|
case Topology::PatchList_16CPs:
|
|
case Topology::PatchList_17CPs:
|
|
case Topology::PatchList_18CPs:
|
|
case Topology::PatchList_19CPs:
|
|
case Topology::PatchList_20CPs:
|
|
case Topology::PatchList_21CPs:
|
|
case Topology::PatchList_22CPs:
|
|
case Topology::PatchList_23CPs:
|
|
case Topology::PatchList_24CPs:
|
|
case Topology::PatchList_25CPs:
|
|
case Topology::PatchList_26CPs:
|
|
case Topology::PatchList_27CPs:
|
|
case Topology::PatchList_28CPs:
|
|
case Topology::PatchList_29CPs:
|
|
case Topology::PatchList_30CPs:
|
|
case Topology::PatchList_31CPs:
|
|
case Topology::PatchList_32CPs:
|
|
return D3D_PRIMITIVE_TOPOLOGY(D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST +
|
|
PatchList_Count(Topo) - 1);
|
|
}
|
|
|
|
return D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
|
|
}
|
|
|
|
Topology MakePrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY Topo)
|
|
{
|
|
switch(Topo)
|
|
{
|
|
default:
|
|
case D3D_PRIMITIVE_TOPOLOGY_UNDEFINED: break;
|
|
case D3D_PRIMITIVE_TOPOLOGY_POINTLIST: return Topology::PointList;
|
|
case D3D_PRIMITIVE_TOPOLOGY_LINELIST: return Topology::LineList;
|
|
case D3D_PRIMITIVE_TOPOLOGY_LINESTRIP: return Topology::LineStrip;
|
|
case D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST: return Topology::TriangleList;
|
|
case D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP: return Topology::TriangleStrip;
|
|
case D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ: return Topology::LineList_Adj;
|
|
case D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ: return Topology::LineStrip_Adj;
|
|
case D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ: return Topology::TriangleList_Adj;
|
|
case D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ: return Topology::TriangleStrip_Adj;
|
|
case D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST:
|
|
case D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST:
|
|
return PatchList_Topology(Topo - D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST + 1);
|
|
}
|
|
|
|
return Topology::Unknown;
|
|
}
|
|
|
|
DXGI_FORMAT MakeDXGIFormat(ResourceFormat fmt)
|
|
{
|
|
DXGI_FORMAT ret = DXGI_FORMAT_UNKNOWN;
|
|
|
|
if(fmt.special)
|
|
{
|
|
switch(fmt.specialFormat)
|
|
{
|
|
case SpecialFormat::BC1: ret = DXGI_FORMAT_BC1_UNORM; break;
|
|
case SpecialFormat::BC2: ret = DXGI_FORMAT_BC2_UNORM; break;
|
|
case SpecialFormat::BC3: ret = DXGI_FORMAT_BC3_UNORM; break;
|
|
case SpecialFormat::BC4: ret = DXGI_FORMAT_BC4_UNORM; break;
|
|
case SpecialFormat::BC5: ret = DXGI_FORMAT_BC5_UNORM; break;
|
|
case SpecialFormat::BC6: ret = DXGI_FORMAT_BC6H_UF16; break;
|
|
case SpecialFormat::BC7: ret = DXGI_FORMAT_BC7_UNORM; break;
|
|
case SpecialFormat::R10G10B10A2:
|
|
if(fmt.compType == CompType::UNorm)
|
|
ret = DXGI_FORMAT_R10G10B10A2_UNORM;
|
|
else
|
|
ret = DXGI_FORMAT_R10G10B10A2_UINT;
|
|
break;
|
|
case SpecialFormat::R11G11B10: ret = DXGI_FORMAT_R11G11B10_FLOAT; break;
|
|
case SpecialFormat::R5G6B5:
|
|
// only support bgra order
|
|
if(!fmt.bgraOrder)
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
ret = DXGI_FORMAT_B5G6R5_UNORM;
|
|
break;
|
|
case SpecialFormat::R5G5B5A1:
|
|
// only support bgra order
|
|
if(!fmt.bgraOrder)
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
ret = DXGI_FORMAT_B5G5R5A1_UNORM;
|
|
break;
|
|
case SpecialFormat::R9G9B9E5: ret = DXGI_FORMAT_R9G9B9E5_SHAREDEXP; break;
|
|
case SpecialFormat::R4G4B4A4:
|
|
// only support bgra order
|
|
if(!fmt.bgraOrder)
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
ret = DXGI_FORMAT_B4G4R4A4_UNORM;
|
|
break;
|
|
case SpecialFormat::D24S8: ret = DXGI_FORMAT_R24G8_TYPELESS; break;
|
|
case SpecialFormat::D32S8: ret = DXGI_FORMAT_R32G8X24_TYPELESS; break;
|
|
case SpecialFormat::YUV:
|
|
// just claim all YUV formats as unsupported. In theory we could add more
|
|
// special format enums to identify all the types, and return support for
|
|
// the ones that exist in D3D
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
case SpecialFormat::S8: // D3D has no stencil-only format
|
|
case SpecialFormat::D16S8: // D3D has no D16S8 format
|
|
default: return DXGI_FORMAT_UNKNOWN;
|
|
}
|
|
}
|
|
else if(fmt.compCount == 4)
|
|
{
|
|
if(fmt.compByteWidth == 4)
|
|
ret = DXGI_FORMAT_R32G32B32A32_TYPELESS;
|
|
else if(fmt.compByteWidth == 2)
|
|
ret = DXGI_FORMAT_R16G16B16A16_TYPELESS;
|
|
else if(fmt.compByteWidth == 1)
|
|
ret = DXGI_FORMAT_R8G8B8A8_TYPELESS;
|
|
else
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
|
|
if(fmt.bgraOrder)
|
|
ret = DXGI_FORMAT_B8G8R8A8_UNORM;
|
|
}
|
|
else if(fmt.compCount == 3)
|
|
{
|
|
if(fmt.compByteWidth == 4)
|
|
ret = DXGI_FORMAT_R32G32B32_TYPELESS;
|
|
else
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
}
|
|
else if(fmt.compCount == 2)
|
|
{
|
|
if(fmt.compByteWidth == 4)
|
|
ret = DXGI_FORMAT_R32G32_TYPELESS;
|
|
else if(fmt.compByteWidth == 2)
|
|
ret = DXGI_FORMAT_R16G16_TYPELESS;
|
|
else if(fmt.compByteWidth == 1)
|
|
ret = DXGI_FORMAT_R8G8_TYPELESS;
|
|
else
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
}
|
|
else if(fmt.compCount == 1)
|
|
{
|
|
if(fmt.compByteWidth == 4)
|
|
ret = DXGI_FORMAT_R32_TYPELESS;
|
|
else if(fmt.compByteWidth == 2)
|
|
ret = DXGI_FORMAT_R16_TYPELESS;
|
|
else if(fmt.compByteWidth == 1)
|
|
ret = DXGI_FORMAT_R8_TYPELESS;
|
|
else
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
}
|
|
else
|
|
{
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
}
|
|
|
|
if(fmt.compType == CompType::Typeless)
|
|
ret = GetTypelessFormat(ret);
|
|
else if(fmt.compType == CompType::Float)
|
|
ret = GetFloatTypedFormat(ret);
|
|
else if(fmt.compType == CompType::Depth)
|
|
ret = GetDepthTypedFormat(ret);
|
|
else if(fmt.compType == CompType::UNorm)
|
|
ret = GetUnormTypedFormat(ret);
|
|
else if(fmt.compType == CompType::SNorm)
|
|
ret = GetSnormTypedFormat(ret);
|
|
else if(fmt.compType == CompType::UInt)
|
|
ret = GetUIntTypedFormat(ret);
|
|
else if(fmt.compType == CompType::SInt)
|
|
ret = GetSIntTypedFormat(ret);
|
|
else
|
|
return DXGI_FORMAT_UNKNOWN;
|
|
|
|
if(fmt.srgbCorrected)
|
|
ret = GetSRGBFormat(ret);
|
|
|
|
return ret;
|
|
}
|
|
|
|
ResourceFormat MakeResourceFormat(DXGI_FORMAT fmt)
|
|
{
|
|
ResourceFormat ret;
|
|
|
|
ret.special = false;
|
|
ret.strname = ToStr::Get(fmt).substr(12); // 12 == strlen("DXGI_FORMAT_")
|
|
|
|
ret.compCount = ret.compByteWidth = 0;
|
|
ret.compType = CompType::Float;
|
|
|
|
ret.srgbCorrected = IsSRGBFormat(fmt);
|
|
|
|
switch(fmt)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32A32_UINT:
|
|
case DXGI_FORMAT_R32G32B32A32_SINT:
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT:
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT: ret.compCount = 4; break;
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_UINT:
|
|
case DXGI_FORMAT_R32G32B32_SINT: ret.compCount = 3; break;
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R32G32_UINT:
|
|
case DXGI_FORMAT_R32G32_SINT:
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SINT:
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R8G8_SINT: ret.compCount = 2; break;
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_UINT:
|
|
case DXGI_FORMAT_R32_SINT:
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R16_SINT:
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM:
|
|
case DXGI_FORMAT_R8_SINT:
|
|
case DXGI_FORMAT_A8_UNORM: ret.compCount = 1; break;
|
|
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_UNORM:
|
|
case DXGI_FORMAT_BC5_SNORM: ret.compCount = 2; break;
|
|
|
|
case DXGI_FORMAT_R11G11B10_FLOAT:
|
|
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
|
|
case DXGI_FORMAT_R8G8_B8G8_UNORM:
|
|
case DXGI_FORMAT_G8R8_G8B8_UNORM:
|
|
case DXGI_FORMAT_B5G6R5_UNORM:
|
|
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_UF16:
|
|
case DXGI_FORMAT_BC6H_SF16: ret.compCount = 3; break;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UNORM:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B5G5R5A1_UNORM:
|
|
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
|
|
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB: ret.compCount = 4; break;
|
|
|
|
case DXGI_FORMAT_R1_UNORM:
|
|
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_UNORM:
|
|
case DXGI_FORMAT_BC4_SNORM: ret.compCount = 1; break;
|
|
|
|
case DXGI_FORMAT_UNKNOWN: ret.compCount = 0; break;
|
|
|
|
default: ret.special = true;
|
|
}
|
|
|
|
switch(fmt)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32A32_UINT:
|
|
case DXGI_FORMAT_R32G32B32A32_SINT:
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_UINT:
|
|
case DXGI_FORMAT_R32G32B32_SINT:
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R32G32_UINT:
|
|
case DXGI_FORMAT_R32G32_SINT:
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R32_UINT:
|
|
case DXGI_FORMAT_R32_SINT: ret.compByteWidth = 4; break;
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT:
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SINT:
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R16_FLOAT:
|
|
case DXGI_FORMAT_D16_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R16_SINT: ret.compByteWidth = 2; break;
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT:
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R8G8_SINT:
|
|
case DXGI_FORMAT_R8_TYPELESS:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_R8_UINT:
|
|
case DXGI_FORMAT_R8_SNORM:
|
|
case DXGI_FORMAT_R8_SINT:
|
|
case DXGI_FORMAT_A8_UNORM: ret.compByteWidth = 1; break;
|
|
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: ret.compByteWidth = 1; break;
|
|
|
|
case DXGI_FORMAT_UNKNOWN: ret.compByteWidth = 0; break;
|
|
|
|
default: ret.special = true;
|
|
}
|
|
|
|
switch(fmt)
|
|
{
|
|
case DXGI_FORMAT_R32G32B32A32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32B32_TYPELESS:
|
|
case DXGI_FORMAT_R32G32_TYPELESS:
|
|
case DXGI_FORMAT_R32_TYPELESS:
|
|
case DXGI_FORMAT_R16G16B16A16_TYPELESS:
|
|
case DXGI_FORMAT_R16G16_TYPELESS:
|
|
case DXGI_FORMAT_R16_TYPELESS:
|
|
case DXGI_FORMAT_R8G8B8A8_TYPELESS:
|
|
case DXGI_FORMAT_R8G8_TYPELESS:
|
|
case DXGI_FORMAT_R8_TYPELESS: ret.compType = CompType::Typeless; break;
|
|
case DXGI_FORMAT_R32G32B32A32_FLOAT:
|
|
case DXGI_FORMAT_R32G32B32_FLOAT:
|
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
|
case DXGI_FORMAT_R32G32_FLOAT:
|
|
case DXGI_FORMAT_R16G16_FLOAT:
|
|
case DXGI_FORMAT_R32_FLOAT:
|
|
case DXGI_FORMAT_R16_FLOAT: ret.compType = CompType::Float; break;
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_UNORM:
|
|
case DXGI_FORMAT_R16G16_UNORM:
|
|
case DXGI_FORMAT_R8G8_UNORM:
|
|
case DXGI_FORMAT_R16_UNORM:
|
|
case DXGI_FORMAT_R8_UNORM:
|
|
case DXGI_FORMAT_A8_UNORM: ret.compType = CompType::UNorm; break;
|
|
case DXGI_FORMAT_R8G8B8A8_SNORM:
|
|
case DXGI_FORMAT_R16G16B16A16_SNORM:
|
|
case DXGI_FORMAT_R16G16_SNORM:
|
|
case DXGI_FORMAT_R8G8_SNORM:
|
|
case DXGI_FORMAT_R16_SNORM:
|
|
case DXGI_FORMAT_R8_SNORM: ret.compType = CompType::SNorm; break;
|
|
case DXGI_FORMAT_R32G32B32A32_UINT:
|
|
case DXGI_FORMAT_R32G32B32_UINT:
|
|
case DXGI_FORMAT_R16G16B16A16_UINT:
|
|
case DXGI_FORMAT_R32G32_UINT:
|
|
case DXGI_FORMAT_R8G8B8A8_UINT:
|
|
case DXGI_FORMAT_R16G16_UINT:
|
|
case DXGI_FORMAT_R32_UINT:
|
|
case DXGI_FORMAT_R8G8_UINT:
|
|
case DXGI_FORMAT_R16_UINT:
|
|
case DXGI_FORMAT_R8_UINT: ret.compType = CompType::UInt; break;
|
|
case DXGI_FORMAT_R32G32B32A32_SINT:
|
|
case DXGI_FORMAT_R32G32B32_SINT:
|
|
case DXGI_FORMAT_R16G16B16A16_SINT:
|
|
case DXGI_FORMAT_R32G32_SINT:
|
|
case DXGI_FORMAT_R8G8B8A8_SINT:
|
|
case DXGI_FORMAT_R16G16_SINT:
|
|
case DXGI_FORMAT_R32_SINT:
|
|
case DXGI_FORMAT_R8G8_SINT:
|
|
case DXGI_FORMAT_R16_SINT:
|
|
case DXGI_FORMAT_R8_SINT: ret.compType = CompType::SInt; break;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_UINT:
|
|
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: ret.compType = CompType::UInt; break;
|
|
|
|
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
|
|
case DXGI_FORMAT_R11G11B10_FLOAT: ret.compType = CompType::Float; break;
|
|
|
|
case DXGI_FORMAT_BC4_SNORM:
|
|
case DXGI_FORMAT_BC5_SNORM:
|
|
case DXGI_FORMAT_BC6H_SF16: ret.compType = CompType::SNorm; break;
|
|
|
|
case DXGI_FORMAT_R24G8_TYPELESS:
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS: ret.compType = CompType::Typeless; break;
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
|
|
case DXGI_FORMAT_D32_FLOAT:
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_D16_UNORM: ret.compType = CompType::Depth; break;
|
|
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC6H_TYPELESS:
|
|
case DXGI_FORMAT_BC7_TYPELESS: ret.compType = CompType::Typeless; break;
|
|
case DXGI_FORMAT_R8G8_B8G8_UNORM:
|
|
case DXGI_FORMAT_G8R8_G8B8_UNORM:
|
|
case DXGI_FORMAT_R10G10B10A2_UNORM:
|
|
case DXGI_FORMAT_B5G6R5_UNORM:
|
|
case DXGI_FORMAT_B5G5R5A1_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
|
|
case DXGI_FORMAT_R1_UNORM:
|
|
case DXGI_FORMAT_BC1_UNORM:
|
|
case DXGI_FORMAT_BC2_UNORM:
|
|
case DXGI_FORMAT_BC3_UNORM:
|
|
case DXGI_FORMAT_BC4_UNORM:
|
|
case DXGI_FORMAT_BC5_UNORM:
|
|
case DXGI_FORMAT_BC6H_UF16:
|
|
case DXGI_FORMAT_BC7_UNORM:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB: ret.compType = CompType::UNorm; break;
|
|
|
|
case DXGI_FORMAT_UNKNOWN: ret.compType = CompType::Typeless; break;
|
|
|
|
default: ret.special = true;
|
|
}
|
|
|
|
switch(fmt)
|
|
{
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM:
|
|
case DXGI_FORMAT_B8G8R8A8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8X8_TYPELESS:
|
|
case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
|
|
case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: ret.bgraOrder = true; break;
|
|
}
|
|
|
|
ret.specialFormat = SpecialFormat::Unknown;
|
|
|
|
switch(fmt)
|
|
{
|
|
case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
|
|
case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
|
|
case DXGI_FORMAT_D24_UNORM_S8_UINT:
|
|
case DXGI_FORMAT_R24G8_TYPELESS: ret.specialFormat = SpecialFormat::D24S8; break;
|
|
case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
|
|
case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
|
|
case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
|
|
case DXGI_FORMAT_R32G8X24_TYPELESS: ret.specialFormat = SpecialFormat::D32S8; break;
|
|
|
|
case DXGI_FORMAT_BC1_TYPELESS:
|
|
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC1_UNORM: ret.specialFormat = SpecialFormat::BC1; break;
|
|
case DXGI_FORMAT_BC2_TYPELESS:
|
|
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC2_UNORM: ret.specialFormat = SpecialFormat::BC2; break;
|
|
case DXGI_FORMAT_BC3_TYPELESS:
|
|
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC3_UNORM: ret.specialFormat = SpecialFormat::BC3; break;
|
|
case DXGI_FORMAT_BC4_TYPELESS:
|
|
case DXGI_FORMAT_BC4_UNORM:
|
|
case DXGI_FORMAT_BC4_SNORM: ret.specialFormat = SpecialFormat::BC4; break;
|
|
case DXGI_FORMAT_BC5_TYPELESS:
|
|
case DXGI_FORMAT_BC5_UNORM:
|
|
case DXGI_FORMAT_BC5_SNORM: ret.specialFormat = SpecialFormat::BC5; break;
|
|
case DXGI_FORMAT_BC6H_UF16:
|
|
case DXGI_FORMAT_BC6H_SF16:
|
|
case DXGI_FORMAT_BC6H_TYPELESS: ret.specialFormat = SpecialFormat::BC6; break;
|
|
case DXGI_FORMAT_BC7_TYPELESS:
|
|
case DXGI_FORMAT_BC7_UNORM_SRGB:
|
|
case DXGI_FORMAT_BC7_UNORM: ret.specialFormat = SpecialFormat::BC7; break;
|
|
case DXGI_FORMAT_R10G10B10A2_TYPELESS:
|
|
case DXGI_FORMAT_R10G10B10A2_UINT:
|
|
case DXGI_FORMAT_R10G10B10A2_UNORM:
|
|
case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
|
|
ret.specialFormat = SpecialFormat::R10G10B10A2;
|
|
break;
|
|
case DXGI_FORMAT_R11G11B10_FLOAT: ret.specialFormat = SpecialFormat::R11G11B10; break;
|
|
case DXGI_FORMAT_B5G6R5_UNORM:
|
|
ret.specialFormat = SpecialFormat::R5G6B5;
|
|
ret.bgraOrder = true;
|
|
break;
|
|
case DXGI_FORMAT_B5G5R5A1_UNORM:
|
|
ret.specialFormat = SpecialFormat::R5G5B5A1;
|
|
ret.bgraOrder = true;
|
|
break;
|
|
case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: ret.specialFormat = SpecialFormat::R9G9B9E5; break;
|
|
|
|
case DXGI_FORMAT_AYUV:
|
|
case DXGI_FORMAT_Y410:
|
|
case DXGI_FORMAT_Y416:
|
|
case DXGI_FORMAT_NV12:
|
|
case DXGI_FORMAT_P010:
|
|
case DXGI_FORMAT_P016:
|
|
case DXGI_FORMAT_420_OPAQUE:
|
|
case DXGI_FORMAT_YUY2:
|
|
case DXGI_FORMAT_Y210:
|
|
case DXGI_FORMAT_Y216:
|
|
case DXGI_FORMAT_NV11:
|
|
case DXGI_FORMAT_AI44:
|
|
case DXGI_FORMAT_IA44:
|
|
case DXGI_FORMAT_P8:
|
|
case DXGI_FORMAT_A8P8:
|
|
case DXGI_FORMAT_P208:
|
|
case DXGI_FORMAT_V208:
|
|
case DXGI_FORMAT_V408: ret.specialFormat = SpecialFormat::YUV; break;
|
|
|
|
case DXGI_FORMAT_B4G4R4A4_UNORM:
|
|
ret.specialFormat = SpecialFormat::R4G4B4A4;
|
|
ret.bgraOrder = true;
|
|
break;
|
|
|
|
case DXGI_FORMAT_UNKNOWN: ret.specialFormat = SpecialFormat::Unknown; break;
|
|
|
|
default: break;
|
|
}
|
|
|
|
if(ret.specialFormat != SpecialFormat::Unknown)
|
|
{
|
|
ret.special = true;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
string ToStrHelper<false, DXGI_SAMPLE_DESC>::Get(const DXGI_SAMPLE_DESC &el)
|
|
{
|
|
char tostrBuf[256] = {0};
|
|
StringFormat::snprintf(tostrBuf, 255, "DXGI_SAMPLE_DESC<%d,%d>", el.Count, el.Quality);
|
|
|
|
return tostrBuf;
|
|
}
|
|
|
|
string ToStrHelper<false, DXGI_FORMAT>::Get(const DXGI_FORMAT &el)
|
|
{
|
|
switch(el)
|
|
{
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_UNKNOWN)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32A32_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32A32_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32A32_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32A32_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32B32_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16B16A16_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16B16A16_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16B16A16_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16B16A16_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16B16A16_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16B16A16_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G32_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32G8X24_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_X32_TYPELESS_G8X24_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R10G10B10A2_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R10G10B10A2_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R10G10B10A2_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R11G11B10_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8B8A8_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8B8A8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8B8A8_UNORM_SRGB)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8B8A8_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8B8A8_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8B8A8_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16G16_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_D32_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R32_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R24G8_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_D24_UNORM_S8_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R24_UNORM_X8_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_X24_TYPELESS_G8_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16_FLOAT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_D16_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R16_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8_UINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8_SINT)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_A8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R1_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R9G9B9E5_SHAREDEXP)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R8G8_B8G8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_G8R8_G8B8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC1_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC1_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC1_UNORM_SRGB)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC2_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC2_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC2_UNORM_SRGB)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC3_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC3_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC3_UNORM_SRGB)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC4_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC4_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC4_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC5_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC5_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC5_SNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B5G6R5_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B5G5R5A1_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B8G8R8A8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B8G8R8X8_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B8G8R8A8_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B8G8R8A8_UNORM_SRGB)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B8G8R8X8_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B8G8R8X8_UNORM_SRGB)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC6H_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC6H_UF16)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC6H_SF16)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC7_TYPELESS)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC7_UNORM)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_BC7_UNORM_SRGB)
|
|
// D3D11.1 formats
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_AYUV)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_Y410)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_Y416)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_NV12)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_P010)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_P016)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_420_OPAQUE)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_YUY2)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_Y210)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_Y216)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_NV11)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_AI44)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_IA44)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_P8)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_A8P8)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_B4G4R4A4_UNORM)
|
|
// D3D11.2 formats
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_P208)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_V208)
|
|
TOSTR_CASE_STRINGIZE(DXGI_FORMAT_V408)
|
|
default: break;
|
|
}
|
|
|
|
char tostrBuf[256] = {0};
|
|
StringFormat::snprintf(tostrBuf, 255, "DXGI_FORMAT<%d>", el);
|
|
|
|
return tostrBuf;
|
|
}
|
|
|
|
// not technically DXGI, but makes more sense to have it here common between D3D versions
|
|
string ToStrHelper<false, D3D_FEATURE_LEVEL>::Get(const D3D_FEATURE_LEVEL &el)
|
|
{
|
|
switch(el)
|
|
{
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_9_1)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_9_2)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_9_3)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_10_0)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_10_1)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_11_0)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_11_1)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_12_0)
|
|
TOSTR_CASE_STRINGIZE(D3D_FEATURE_LEVEL_12_1)
|
|
default: break;
|
|
}
|
|
|
|
char tostrBuf[256] = {0};
|
|
StringFormat::snprintf(tostrBuf, 255, "D3D_FEATURE_LEVEL<%d>", el);
|
|
|
|
return tostrBuf;
|
|
}
|
|
|
|
string ToStrHelper<false, D3D_DRIVER_TYPE>::Get(const D3D_DRIVER_TYPE &el)
|
|
{
|
|
switch(el)
|
|
{
|
|
TOSTR_CASE_STRINGIZE(D3D_DRIVER_TYPE_HARDWARE)
|
|
TOSTR_CASE_STRINGIZE(D3D_DRIVER_TYPE_REFERENCE)
|
|
TOSTR_CASE_STRINGIZE(D3D_DRIVER_TYPE_NULL)
|
|
TOSTR_CASE_STRINGIZE(D3D_DRIVER_TYPE_SOFTWARE)
|
|
TOSTR_CASE_STRINGIZE(D3D_DRIVER_TYPE_WARP)
|
|
default: break;
|
|
}
|
|
|
|
char tostrBuf[256] = {0};
|
|
StringFormat::snprintf(tostrBuf, 255, "D3D_DRIVER_TYPE<%d>", el);
|
|
|
|
return tostrBuf;
|
|
}
|