From: Toni Wilen Date: Sat, 20 Feb 2021 16:21:00 +0000 (+0200) Subject: Log if MultiPlane Overlays (MPO) is supported. X-Git-Tag: 4900~182 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=b798c5be8e3f56146f5db8ba168353e9f7caa7d0;p=francis%2Fwinuae.git Log if MultiPlane Overlays (MPO) is supported. --- diff --git a/od-win32/direct3d11.cpp b/od-win32/direct3d11.cpp index d3335c13..bf32dd8d 100644 --- a/od-win32/direct3d11.cpp +++ b/od-win32/direct3d11.cpp @@ -3310,12 +3310,13 @@ static int xxD3D11_init2(HWND ahwnd, int monid, int w_w, int w_h, int t_w, int t ComPtr factory2; ComPtr factory4; ComPtr factory5; - IDXGIAdapter1* adapter; - IDXGIOutput* adapterOutput; + IDXGIAdapter1 *adapter; + IDXGIOutput *adapterOutput; + IDXGIOutput2 *adapterOutput2; DXGI_ADAPTER_DESC1 adesc; DXGI_OUTPUT_DESC odesc; unsigned int numModes; - DXGI_MODE_DESC1* displayModeList; + DXGI_MODE_DESC1 *displayModeList; DXGI_ADAPTER_DESC adapterDesc; write_log(_T("D3D11 init start. (%d*%d) (%d*%d) RTG=%d Depth=%d.\n"), w_w, w_h, t_w, t_h, ad->picasso_on, depth); @@ -3745,8 +3746,8 @@ static int xxD3D11_init2(HWND ahwnd, int monid, int w_w, int w_h, int t_w, int t } CComPtr m_swapChain3; - if (d3d->hdr) { - if (SUCCEEDED(d3d->m_swapChain->QueryInterface(&m_swapChain3))) { + if (SUCCEEDED(d3d->m_swapChain->QueryInterface(&m_swapChain3))) { + if (d3d->hdr) { UINT cps; result = m_swapChain3->CheckColorSpaceSupport(DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709, &cps); if (SUCCEEDED(result)) { @@ -3759,18 +3760,30 @@ static int xxD3D11_init2(HWND ahwnd, int monid, int w_w, int w_h, int t_w, int t } else { write_log(_T("CheckColorSpaceSupport failed %08x\n"), result); } - } else { - write_log(_T("QueryInterface(IDXGISwapChain3) failed %08x\n"), result); + } + IDXGIOutput* dxgiOutput = NULL; + result = m_swapChain3->GetContainingOutput(&dxgiOutput); + if (SUCCEEDED(result)) { + IDXGIOutput2* dxgiOutput2; + result = dxgiOutput->QueryInterface(IID_PPV_ARGS(&dxgiOutput2)); + if (SUCCEEDED(result)) { + BOOL mpo = dxgiOutput2->SupportsOverlays(); + if (mpo) { + write_log(_T("MultiPlane Overlays supported\n")); + } + dxgiOutput2->Release(); + } + dxgiOutput->Release(); } } + { ComPtr dxgiDevice; result = d3d->m_device->QueryInterface(__uuidof(IDXGIDevice1), &dxgiDevice); if (FAILED(result)) { write_log(_T("QueryInterface IDXGIDevice1 %08x\n"), result); - } - else { + } else { int f = apm->gfx_backbuffers <= 1 ? 1 : 2; if (d3d->blackscreen) f++;