diff --git a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp index 8d800950d8..b33b6fda61 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp @@ -7,12 +7,15 @@ #include #include #include "d3dx12.h" +#include PFN_D3D12_CREATE_DEVICE wrapD3D12CreateDevice; PFN_D3D12_GET_DEBUG_INTERFACE wrapD3D12GetDebugInterface; PFN_D3D12_SERIALIZE_ROOT_SIGNATURE wrapD3D12SerializeRootSignature; +PFN_D3D11ON12_CREATE_DEVICE wrapD3D11On12CreateDevice; static HMODULE D3D12Module; +static HMODULE D3D11Module; static void loadD3D12FunctionPointers() { @@ -20,11 +23,14 @@ static void loadD3D12FunctionPointers() wrapD3D12CreateDevice = (PFN_D3D12_CREATE_DEVICE)GetProcAddress(D3D12Module, "D3D12CreateDevice"); wrapD3D12GetDebugInterface = (PFN_D3D12_GET_DEBUG_INTERFACE)GetProcAddress(D3D12Module, "D3D12GetDebugInterface"); wrapD3D12SerializeRootSignature = (PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)GetProcAddress(D3D12Module, "D3D12SerializeRootSignature"); + D3D11Module = LoadLibrary(L"d3d11.dll"); + wrapD3D11On12CreateDevice = (PFN_D3D11ON12_CREATE_DEVICE)GetProcAddress(D3D11Module, "D3D11On12CreateDevice"); } static void unloadD3D12FunctionPointers() { FreeLibrary(D3D12Module); + FreeLibrary(D3D11Module); } GetGSFrameCb2 GetGSFrame = nullptr; diff --git a/rpcs3/Emu/RSX/D3D12/D3D12Overlay.cpp b/rpcs3/Emu/RSX/D3D12/D3D12Overlay.cpp index 4f05937e62..d119a4500d 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12Overlay.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12Overlay.cpp @@ -22,11 +22,12 @@ ComPtr m_textBrush; #pragma comment (lib, "d2d1.lib") #pragma comment (lib, "dwrite.lib") -#pragma comment (lib, "d3d11.lib") + +extern PFN_D3D11ON12_CREATE_DEVICE wrapD3D11On12CreateDevice; void D3D12GSRender::InitD2DStructures() { - D3D11On12CreateDevice( + wrapD3D11On12CreateDevice( m_device.Get(), D3D11_CREATE_DEVICE_BGRA_SUPPORT, nullptr,