Add helpers to get view cast formats for YUV textures

This commit is contained in:
baldurk
2018-12-13 16:03:44 +00:00
parent 616e5efe03
commit a6a2a7f20c
2 changed files with 59 additions and 0 deletions
+56
View File
@@ -1406,6 +1406,62 @@ DXGI_FORMAT GetTypelessFormat(DXGI_FORMAT f)
}
}
DXGI_FORMAT GetYUVViewPlane0Format(DXGI_FORMAT f)
{
switch(f)
{
case DXGI_FORMAT_AYUV: return DXGI_FORMAT_R8G8B8A8_UNORM;
case DXGI_FORMAT_Y410: return DXGI_FORMAT_R10G10B10A2_UNORM;
case DXGI_FORMAT_Y416: return DXGI_FORMAT_R16G16B16A16_UNORM;
case DXGI_FORMAT_NV11:
case DXGI_FORMAT_NV12:
case DXGI_FORMAT_P208: return DXGI_FORMAT_R8_UNORM;
case DXGI_FORMAT_P010:
case DXGI_FORMAT_P016: return DXGI_FORMAT_R16_UNORM;
case DXGI_FORMAT_YUY2: return DXGI_FORMAT_R8G8B8A8_UNORM;
case DXGI_FORMAT_Y210:
case DXGI_FORMAT_Y216: return DXGI_FORMAT_R16G16B16A16_UNORM;
case DXGI_FORMAT_AI44:
case DXGI_FORMAT_IA44: return DXGI_FORMAT_R8G8_UNORM;
case DXGI_FORMAT_P8: return DXGI_FORMAT_R8_UNORM;
case DXGI_FORMAT_A8P8: return DXGI_FORMAT_R8G8_UNORM;
case DXGI_FORMAT_V208:
case DXGI_FORMAT_V408: return DXGI_FORMAT_R8G8B8A8_UNORM;
case DXGI_FORMAT_420_OPAQUE: return DXGI_FORMAT_UNKNOWN;
default: break;
}
return f;
}
DXGI_FORMAT GetYUVViewPlane1Format(DXGI_FORMAT f)
{
switch(f)
{
case DXGI_FORMAT_NV11:
case DXGI_FORMAT_NV12:
case DXGI_FORMAT_P208: return DXGI_FORMAT_R8G8_UNORM;
case DXGI_FORMAT_P010:
case DXGI_FORMAT_P016: return DXGI_FORMAT_R16G16_UNORM;
case DXGI_FORMAT_AYUV:
case DXGI_FORMAT_Y410:
case DXGI_FORMAT_Y416:
case DXGI_FORMAT_YUY2:
case DXGI_FORMAT_Y210:
case DXGI_FORMAT_Y216:
case DXGI_FORMAT_420_OPAQUE:
case DXGI_FORMAT_AI44:
case DXGI_FORMAT_IA44:
case DXGI_FORMAT_P8:
case DXGI_FORMAT_A8P8:
case DXGI_FORMAT_V208:
case DXGI_FORMAT_V408: return DXGI_FORMAT_UNKNOWN;
default: break;
}
return f;
}
D3D_PRIMITIVE_TOPOLOGY MakeD3DPrimitiveTopology(Topology Topo)
{
switch(Topo)
+3
View File
@@ -49,6 +49,9 @@ bool IsBlockFormat(DXGI_FORMAT f);
bool IsDepthFormat(DXGI_FORMAT f);
bool IsDepthAndStencilFormat(DXGI_FORMAT f);
DXGI_FORMAT GetYUVViewPlane0Format(DXGI_FORMAT f);
DXGI_FORMAT GetYUVViewPlane1Format(DXGI_FORMAT f);
bool IsUIntFormat(DXGI_FORMAT f);
bool IsTypelessFormat(DXGI_FORMAT f);
bool IsIntFormat(DXGI_FORMAT f);