summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/D3D/D3DBase.cpp
diff options
context:
space:
mode:
authorJules Blok <jules.blok@gmail.com>2014-06-18 15:02:42 +0200
committerJules Blok <jules.blok@gmail.com>2014-07-19 21:14:44 +0200
commitd72375fdfa0182037afcf0a2e64ea01c16a1b6f3 (patch)
tree3df7a5324190ff0beb8d8e8a33c356a00c870caf /Source/Core/VideoBackends/D3D/D3DBase.cpp
parentc323b386ae8bff134c058985261fc56acbaabef7 (diff)
D3D: Request desktop resolution before overriding the buffer size.
This fixes issues where the wrong refresh rate is selected for some monitors.
Diffstat (limited to 'Source/Core/VideoBackends/D3D/D3DBase.cpp')
-rw-r--r--Source/Core/VideoBackends/D3D/D3DBase.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/Source/Core/VideoBackends/D3D/D3DBase.cpp b/Source/Core/VideoBackends/D3D/D3DBase.cpp
index eac3e7ac59..d2d2cb3996 100644
--- a/Source/Core/VideoBackends/D3D/D3DBase.cpp
+++ b/Source/Core/VideoBackends/D3D/D3DBase.cpp
@@ -266,16 +266,21 @@ HRESULT Create(HWND wnd)
swap_chain_desc.SampleDesc.Quality = 0;
swap_chain_desc.Windowed = TRUE;
+ DXGI_OUTPUT_DESC out_desc;
+ memset(&out_desc, 0, sizeof(out_desc));
+ output->GetDesc(&out_desc);
+
DXGI_MODE_DESC mode_desc;
memset(&mode_desc, 0, sizeof(mode_desc));
- mode_desc.Width = xres;
- mode_desc.Height = yres;
+ mode_desc.Width = out_desc.DesktopCoordinates.right - out_desc.DesktopCoordinates.left;
+ mode_desc.Height = out_desc.DesktopCoordinates.bottom - out_desc.DesktopCoordinates.top;
mode_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
mode_desc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
hr = output->FindClosestMatchingMode(&mode_desc, &swap_chain_desc.BufferDesc, nullptr);
if (FAILED(hr)) MessageBox(wnd, _T("Failed to find a supported video mode"), _T("Dolphin Direct3D 11 backend"), MB_OK | MB_ICONERROR);
- // forcing buffer resolution to xres and yres.. TODO: The new video mode might not actually be supported!
+ // forcing buffer resolution to xres and yres..
+ // this is not a problem as long as we're in windowed mode
swap_chain_desc.BufferDesc.Width = xres;
swap_chain_desc.BufferDesc.Height = yres;