summaryrefslogtreecommitdiffstats
path: root/thirdparty/directx_headers/patches/patch_d3d12_dynamic_load.diff
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/directx_headers/patches/patch_d3d12_dynamic_load.diff')
-rw-r--r--thirdparty/directx_headers/patches/patch_d3d12_dynamic_load.diff82
1 files changed, 82 insertions, 0 deletions
diff --git a/thirdparty/directx_headers/patches/patch_d3d12_dynamic_load.diff b/thirdparty/directx_headers/patches/patch_d3d12_dynamic_load.diff
new file mode 100644
index 0000000000..d520a44172
--- /dev/null
+++ b/thirdparty/directx_headers/patches/patch_d3d12_dynamic_load.diff
@@ -0,0 +1,82 @@
+diff --git a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
+index 572efed852..18efa7a0cb 100644
+--- a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
++++ b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
+@@ -996,6 +996,9 @@ struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
+ // two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
+ // 1.1 is not supported.
+ inline HRESULT D3DX12SerializeVersionedRootSignature(
++/* GODOT start */
++ _In_ HMODULE pLibD3D12,
++/* GODOT end */
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
+ D3D_ROOT_SIGNATURE_VERSION MaxVersion,
+ _Outptr_ ID3DBlob** ppBlob,
+@@ -1006,13 +1009,22 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
+ *ppErrorBlob = nullptr;
+ }
+
++ /* GODOT start */
++ 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");
++ /* GODOT end */
+ 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);
++/* GODOT start */
++ return d3d_D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
++/* GODOT end */
+
+ case D3D_ROOT_SIGNATURE_VERSION_1_1:
+ #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+@@ -1114,7 +1126,9 @@ 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);
++/* GODOT start */
++ hr = d3d_D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
++/* GODOT end */
+ }
+
+ if (pParameters)
+@@ -1145,7 +1159,9 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
+ {
+ case D3D_ROOT_SIGNATURE_VERSION_1_0:
+ case D3D_ROOT_SIGNATURE_VERSION_1_1:
+- return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
++/* GODOT start */
++ return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
++/* GODOT end */
+
+ #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ case D3D_ROOT_SIGNATURE_VERSION_1_2:
+@@ -1181,7 +1197,9 @@ 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);
++/* GODOT start */
++ hr = d3d_D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
++/* GODOT end */
+ }
+
+ if (pStaticSamplers)
+@@ -1197,7 +1215,9 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
+ #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+ case D3D_ROOT_SIGNATURE_VERSION_1_2:
+ #endif
+- return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
++/* GODOT start */
++ return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
++/* GODOT end */
+ }
+
+ return E_INVALIDARG;