diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-10-10 04:22:07 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-10-10 04:22:07 +0000 |
| commit | 2493c846cfb4e4d60d3a26ca9cd1e9a9b0ed92d6 (patch) | |
| tree | 40f8bab9964524f3e6b77be3042c236a47c4d6fc /Graphics/GraphicsEngineD3D12 | |
| parent | Improved D3D12DynamicHeap memory usage reporting (diff) | |
| download | DiligentCore-2493c846cfb4e4d60d3a26ca9cd1e9a9b0ed92d6.tar.gz DiligentCore-2493c846cfb4e4d60d3a26ca9cd1e9a9b0ed92d6.zip | |
Fixed creation of typeless textures in D3D12 backend
Diffstat (limited to 'Graphics/GraphicsEngineD3D12')
| -rw-r--r-- | Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp index 8a0ddb56..5af28000 100644 --- a/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp @@ -43,15 +43,30 @@ DXGI_FORMAT GetClearFormat(DXGI_FORMAT Fmt, D3D12_RESOURCE_FLAGS Flags) { switch (Fmt) { - case DXGI_FORMAT_R32_TYPELESS: return DXGI_FORMAT_D32_FLOAT; - case DXGI_FORMAT_R16_TYPELESS: return DXGI_FORMAT_D16_UNORM; - case DXGI_FORMAT_R24G8_TYPELESS: return DXGI_FORMAT_D24_UNORM_S8_UINT; + case DXGI_FORMAT_R32_TYPELESS: return DXGI_FORMAT_D32_FLOAT; + case DXGI_FORMAT_R16_TYPELESS: return DXGI_FORMAT_D16_UNORM; + case DXGI_FORMAT_R24G8_TYPELESS: return DXGI_FORMAT_D24_UNORM_S8_UINT; case DXGI_FORMAT_R32G8X24_TYPELESS: return DXGI_FORMAT_D32_FLOAT_S8X24_UINT; } } else if (Flags & D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET) { - + switch (Fmt) + { + 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_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; + case DXGI_FORMAT_R8G8_TYPELESS: return DXGI_FORMAT_R8G8_UNORM; + case DXGI_FORMAT_R16_TYPELESS: return DXGI_FORMAT_R16_FLOAT; + case DXGI_FORMAT_R8_TYPELESS: return DXGI_FORMAT_R8_UNORM; + case DXGI_FORMAT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_UNORM; + case DXGI_FORMAT_B8G8R8X8_TYPELESS: return DXGI_FORMAT_B8G8R8X8_UNORM; + } } return Fmt; } @@ -303,8 +318,9 @@ static TextureDesc InitTexDescFromD3D12Resource(ID3D12Resource* pTexture, const if ((ResourceDesc.Flags & D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE) == 0) { auto FormatAttribs = GetTextureFormatAttribs(TexDesc.Format); - if (FormatAttribs.ComponentType != COMPONENT_TYPE_DEPTH && - FormatAttribs.ComponentType != COMPONENT_TYPE_DEPTH_STENCIL) + if (FormatAttribs.IsTypeless || + (FormatAttribs.ComponentType != COMPONENT_TYPE_DEPTH && + FormatAttribs.ComponentType != COMPONENT_TYPE_DEPTH_STENCIL) ) { TexDesc.BindFlags |= BIND_SHADER_RESOURCE; } |
