diff options
author | Jan Ekström <jeebjp@gmail.com> | 2019-04-20 00:13:54 +0300 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2019-09-29 19:39:26 +0300 |
commit | e205e179e031b8868786e1ec0816a78985ead527 (patch) | |
tree | 4a72f23d7840b6ffe6eb10c9b7269fdc5a021b2d /video/out | |
parent | c833c095d7cf3cd5b0d9d2103e76be9c072a8b33 (diff) | |
download | mpv-e205e179e031b8868786e1ec0816a78985ead527.tar.bz2 mpv-e205e179e031b8868786e1ec0816a78985ead527.tar.xz |
vo_gpu/d3d11_helpers: also load up CreateDXGIFactory1
Just a factory, without a device, is required for listing of devices.
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/gpu/d3d11_helpers.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/video/out/gpu/d3d11_helpers.c b/video/out/gpu/d3d11_helpers.c index d267ac3009..086fa54890 100644 --- a/video/out/gpu/d3d11_helpers.c +++ b/video/out/gpu/d3d11_helpers.c @@ -29,16 +29,22 @@ // Windows 8 enum value, not present in mingw-w64 headers #define DXGI_ADAPTER_FLAG_SOFTWARE (2) +typedef HRESULT(WINAPI *PFN_CREATE_DXGI_FACTORY)(REFIID riid, void **ppFactory); static pthread_once_t d3d11_once = PTHREAD_ONCE_INIT; static PFN_D3D11_CREATE_DEVICE pD3D11CreateDevice = NULL; +static PFN_CREATE_DXGI_FACTORY pCreateDXGIFactory1 = NULL; static void d3d11_load(void) { - HMODULE d3d11 = LoadLibraryW(L"d3d11.dll"); - if (!d3d11) + HMODULE d3d11 = LoadLibraryW(L"d3d11.dll"); + HMODULE dxgilib = LoadLibraryW(L"dxgi.dll"); + if (!d3d11 || !dxgilib) return; + pD3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE) GetProcAddress(d3d11, "D3D11CreateDevice"); + pCreateDXGIFactory1 = (PFN_CREATE_DXGI_FACTORY) + GetProcAddress(dxgilib, "CreateDXGIFactory1"); } // Get a const array of D3D_FEATURE_LEVELs from max_fl to min_fl (inclusive) @@ -106,8 +112,11 @@ bool mp_d3d11_create_present_device(struct mp_log *log, HRESULT hr; pthread_once(&d3d11_once, d3d11_load); - if (!pD3D11CreateDevice) { - mp_fatal(log, "Failed to load d3d11.dll\n"); + if (!pD3D11CreateDevice || !pCreateDXGIFactory1) { + mp_fatal(log, "Failed to load base d3d11 functionality: " + "CreateDevice: %s, CreateDXGIFactory1: %s\n", + pD3D11CreateDevice ? "success" : "failure", + pCreateDXGIFactory1 ? "success": "failure"); goto done; } |