diff --git a/renderdoc/driver/d3d11/d3d11_resources.cpp b/renderdoc/driver/d3d11/d3d11_resources.cpp index d50ddda34..7fb7206cd 100644 --- a/renderdoc/driver/d3d11/d3d11_resources.cpp +++ b/renderdoc/driver/d3d11/d3d11_resources.cpp @@ -539,6 +539,42 @@ bool IsDepthFormat(DXGI_FORMAT f) 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) @@ -628,6 +664,32 @@ DXGI_FORMAT GetDepthTypedFormat(DXGI_FORMAT f) 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) diff --git a/renderdoc/driver/d3d11/d3d11_resources.h b/renderdoc/driver/d3d11/d3d11_resources.h index e9e689370..def50d0b3 100644 --- a/renderdoc/driver/d3d11/d3d11_resources.h +++ b/renderdoc/driver/d3d11/d3d11_resources.h @@ -83,10 +83,12 @@ DXGI_FORMAT GetSnormTypedFormat(DXGI_FORMAT f); DXGI_FORMAT GetUIntTypedFormat(DXGI_FORMAT f); DXGI_FORMAT GetSIntTypedFormat(DXGI_FORMAT f); DXGI_FORMAT GetSRGBFormat(DXGI_FORMAT f); +DXGI_FORMAT GetNonSRGBFormat(DXGI_FORMAT f); bool IsBlockFormat(DXGI_FORMAT f); bool IsDepthFormat(DXGI_FORMAT f); bool IsUIntFormat(DXGI_FORMAT f); +bool IsTypelessFormat(DXGI_FORMAT f); bool IsIntFormat(DXGI_FORMAT f); bool IsSRGBFormat(DXGI_FORMAT f);