summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Ekström <jeebjp@gmail.com>2019-04-20 00:13:54 +0300
committerJan Ekström <jeebjp@gmail.com>2019-09-29 19:39:26 +0300
commite205e179e031b8868786e1ec0816a78985ead527 (patch)
tree4a72f23d7840b6ffe6eb10c9b7269fdc5a021b2d
parentc833c095d7cf3cd5b0d9d2103e76be9c072a8b33 (diff)
downloadmpv-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.
-rw-r--r--video/out/gpu/d3d11_helpers.c17
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;
}