From 028d71fced9ce5e9dce598d2ef2be4009ce4fead Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 17 Jun 2022 18:13:06 +0100 Subject: [PATCH] Remove DENY_SHADER_RESOURCE flag in all resource creation functions --- renderdoc/driver/d3d12/d3d12_device_wrap4.cpp | 11 +++++++++++ renderdoc/driver/d3d12/d3d12_device_wrap8.cpp | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/renderdoc/driver/d3d12/d3d12_device_wrap4.cpp b/renderdoc/driver/d3d12/d3d12_device_wrap4.cpp index b5faac61c..43c3f2e1c 100644 --- a/renderdoc/driver/d3d12/d3d12_device_wrap4.cpp +++ b/renderdoc/driver/d3d12/d3d12_device_wrap4.cpp @@ -359,6 +359,17 @@ HRESULT WrappedID3D12Device::CreateCommittedResource1( riidResource != __uuidof(ID3D12Resource2)) return E_NOINTERFACE; + const D3D12_RESOURCE_DESC *pCreateDesc = pDesc; + D3D12_RESOURCE_DESC localDesc; + + if(pDesc && pDesc->Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE2D && pDesc->SampleDesc.Count > 1) + { + localDesc = *pDesc; + // need to be able to create SRVs of MSAA textures to copy out their contents + localDesc.Flags &= ~D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE; + pCreateDesc = &localDesc; + } + void *realptr = NULL; HRESULT ret; SERIALISE_TIME_CALL(ret = m_pDevice4->CreateCommittedResource1( diff --git a/renderdoc/driver/d3d12/d3d12_device_wrap8.cpp b/renderdoc/driver/d3d12/d3d12_device_wrap8.cpp index d1e8a4ee6..23367d53e 100644 --- a/renderdoc/driver/d3d12/d3d12_device_wrap8.cpp +++ b/renderdoc/driver/d3d12/d3d12_device_wrap8.cpp @@ -183,6 +183,17 @@ HRESULT WrappedID3D12Device::CreateCommittedResource2( riidResource != __uuidof(ID3D12Resource2)) return E_NOINTERFACE; + const D3D12_RESOURCE_DESC1 *pCreateDesc = pDesc; + D3D12_RESOURCE_DESC1 localDesc; + + if(pDesc && pDesc->Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE2D && pDesc->SampleDesc.Count > 1) + { + localDesc = *pDesc; + // need to be able to create SRVs of MSAA textures to copy out their contents + localDesc.Flags &= ~D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE; + pCreateDesc = &localDesc; + } + void *realptr = NULL; HRESULT ret; SERIALISE_TIME_CALL(ret = m_pDevice8->CreateCommittedResource2(