OverviewFilesCommitsIssuesDocsReleasesPeers

nvidia-rtx-godot / thirdparty / directx_headers / patches / 0001-win7-8-dynamic-load.patch

69 lines · patch ref:
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
index e194d30a3f..bf9a2c9101 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
@@ -1001,6 +1001,7 @@ struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
 #endif
 
 inline HRESULT D3DX12SerializeVersionedRootSignature(
+    _In_ HMODULE pLibD3D12,
     _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
     D3D_ROOT_SIGNATURE_VERSION MaxVersion,
     _Outptr_ ID3DBlob** ppBlob,
@@ -1011,13 +1012,18 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
         *ppErrorBlob = nullptr;
     }
 
+    PFN_D3D12_SERIALIZE_ROOT_SIGNATURE d3d_D3D12SerializeRootSignature = (PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(void *)GetProcAddress(pLibD3D12, "D3D12SerializeRootSignature");
+    if (d3d_D3D12SerializeRootSignature == nullptr) {
+        return E_INVALIDARG;
+    }
+    PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE d3d_D3D12SerializeVersionedRootSignature = (PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(void *)GetProcAddress(pLibD3D12, "D3D12SerializeVersionedRootSignature");
     switch (MaxVersion)
     {
         case D3D_ROOT_SIGNATURE_VERSION_1_0:
             switch (pRootSignatureDesc->Version)
             {
                 case D3D_ROOT_SIGNATURE_VERSION_1_0:
-                    return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
+                    return d3d_D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
 
                 case D3D_ROOT_SIGNATURE_VERSION_1_1:
 #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
@@ -1125,7 +1131,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
                     if (SUCCEEDED(hr))
                     {
                         const CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
-                        hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
+                        hr = d3d_D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
                     }
 
                     if (pParameters)
@@ -1159,7 +1165,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
             {
             case D3D_ROOT_SIGNATURE_VERSION_1_0:
             case D3D_ROOT_SIGNATURE_VERSION_1_1:
-                return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
+                return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
 
 #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
             case D3D_ROOT_SIGNATURE_VERSION_1_2:
@@ -1195,7 +1201,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
                 if (SUCCEEDED(hr))
                 {
                     const CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC desc(desc_1_1.NumParameters, desc_1_1.pParameters, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
-                    hr = D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
+                    hr = d3d_D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
                 }
 
                 if (pStaticSamplers)
@@ -1216,7 +1222,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
         case D3D_ROOT_SIGNATURE_VERSION_1_2:
 #endif
         default:
-            return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
+            return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
     }
 
     return E_INVALIDARG;