From 525906ab87d103f558a2a03b0cbcb0b86b3536b8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 21 Apr 2021 16:53:47 +0100 Subject: [PATCH] Serialise D3D12 SDK version in captures --- renderdoc/driver/d3d12/d3d12_common.cpp | 13 +++++++++++++ renderdoc/driver/d3d12/d3d12_device.cpp | 7 +++++++ renderdoc/driver/d3d12/d3d12_device.h | 4 +++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/d3d12/d3d12_common.cpp b/renderdoc/driver/d3d12/d3d12_common.cpp index 376ca56db..3dc4f1dc0 100644 --- a/renderdoc/driver/d3d12/d3d12_common.cpp +++ b/renderdoc/driver/d3d12/d3d12_common.cpp @@ -227,6 +227,10 @@ bool D3D12InitParams::IsSupportedVersion(uint64_t ver) if(ver == 0xA) return true; + // 0xB -> 0xC - Serialised D3D12 SDK version + if(ver == 0xB) + return true; + return false; } @@ -261,6 +265,15 @@ void DoSerialise(SerialiserType &ser, D3D12InitParams &el) el.VendorUAV = ~0U; el.VendorUAVSpace = ~0U; } + + if(ser.VersionAtLeast(0xC)) + { + SERIALISE_MEMBER(SDKVersion); + } + else + { + el.SDKVersion = 0; + } } INSTANTIATE_SERIALISE_TYPE(D3D12InitParams); diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 6ef78f66d..d6b35af47 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -2508,6 +2508,13 @@ bool WrappedID3D12Device::EndFrameCapture(void *dev, void *wnd) m_InitParams.usedDXIL = m_UsedDXIL; + HMODULE D3D12Core = GetModuleHandleA("D3D12Core.dll"); + if(D3D12Core) + { + m_InitParams.SDKVersion = *(DWORD *)GetProcAddress(D3D12Core, "D3D12SDKVersion"); + FreeLibrary(D3D12Core); + } + if(m_UsedDXIL) { RDCLOG("Capture used DXIL"); diff --git a/renderdoc/driver/d3d12/d3d12_device.h b/renderdoc/driver/d3d12/d3d12_device.h index 7da6c7ad9..acdd00ee6 100644 --- a/renderdoc/driver/d3d12/d3d12_device.h +++ b/renderdoc/driver/d3d12/d3d12_device.h @@ -51,8 +51,10 @@ struct D3D12InitParams uint32_t VendorUAV = ~0U; uint32_t VendorUAVSpace = ~0U; + UINT SDKVersion = 0; + // check if a frame capture section version is supported - static const uint64_t CurrentVersion = 0xB; + static const uint64_t CurrentVersion = 0xC; static bool IsSupportedVersion(uint64_t ver); };