From 7d5abb4eb49fc26e533e1b6b7febc1fd42c31e66 Mon Sep 17 00:00:00 2001 From: magumagu Date: Sat, 17 Jan 2015 14:27:11 -0800 Subject: [PATCH] D3D: allow selecting adapters with no outputs. The result might be a little iffy in complicated situations (i.e. you have three graphics cards and monitors hooked up to two of them), but we really need better UI for such cases anyway. --- Source/Core/VideoBackends/D3D/D3DBase.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/Core/VideoBackends/D3D/D3DBase.cpp b/Source/Core/VideoBackends/D3D/D3DBase.cpp index 982c5d2e6c..62ce37da76 100644 --- a/Source/Core/VideoBackends/D3D/D3DBase.cpp +++ b/Source/Core/VideoBackends/D3D/D3DBase.cpp @@ -243,11 +243,16 @@ HRESULT Create(HWND wnd) if (FAILED(hr)) { // try using the first one - hr = adapter->EnumOutputs(0, &output); - if (FAILED(hr)) MessageBox(wnd, _T("Failed to enumerate outputs!\n") - _T("This usually happens when you've set your video adapter to the Nvidia GPU in an Optimus-equipped system.\n") - _T("Set Dolphin to use the high-performance graphics in Nvidia's drivers instead and leave Dolphin's video adapter set to the Intel GPU."), - _T("Dolphin Direct3D 11 backend"), MB_OK | MB_ICONERROR); + IDXGIAdapter* firstadapter; + hr = factory->EnumAdapters(0, &firstadapter); + if (!FAILED(hr)) + hr = firstadapter->EnumOutputs(0, &output); + if (FAILED(hr)) MessageBox(wnd, + _T("Failed to enumerate outputs!\n") + _T("This usually happens when you've set your video adapter to the Nvidia GPU in an Optimus-equipped system.\n") + _T("Set Dolphin to use the high-performance graphics in Nvidia's drivers instead and leave Dolphin's video adapter set to the Intel GPU."), + _T("Dolphin Direct3D 11 backend"), MB_OK | MB_ICONERROR); + SAFE_RELEASE(firstadapter); } // get supported AA modes