From f0f3961326a855740b761732205bfc4c4e8449b5 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Sun, 17 Nov 2019 09:24:07 -0800 Subject: D3D11 and D3D12 backends: fixed issue with resolving typeless resources --- .../GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'Graphics/GraphicsEngineD3D11') diff --git a/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp index 93e7362c..974ee98f 100755 --- a/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp @@ -2064,7 +2064,19 @@ namespace Diligent auto Format = ResolveAttribs.Format; if (Format == TEX_FORMAT_UNKNOWN) - Format = SrcTexDesc.Format; + { + const auto& SrcFmtAttribs = GetTextureFormatAttribs(SrcTexDesc.Format); + if (!SrcFmtAttribs.IsTypeless) + { + Format = SrcTexDesc.Format; + } + else + { + const auto& DstFmtAttribs = GetTextureFormatAttribs(DstTexDesc.Format); + DEV_CHECK_ERR(!DstFmtAttribs.IsTypeless, "Resolve operation format can't be typeless when both source and destination textures are typeless"); + Format = DstFmtAttribs.Format; + } + } auto DXGIFmt = TexFormatToDXGI_Format(Format); auto SrcSubresIndex = D3D11CalcSubresource(ResolveAttribs.SrcMipLevel, ResolveAttribs.SrcSlice, SrcTexDesc.MipLevels); -- cgit v1.2.3