diff --git a/src/dxgi/dxgi_adapter.cpp b/src/dxgi/dxgi_adapter.cpp index ab659add..593aaee8 100644 --- a/src/dxgi/dxgi_adapter.cpp +++ b/src/dxgi/dxgi_adapter.cpp @@ -16,6 +16,7 @@ namespace dxvk { const Rc& adapter) : m_factory (factory), m_adapter (adapter) { + SetupOutputs(); SetupFormatTable(); } @@ -64,14 +65,10 @@ namespace dxvk { if (ppOutput == nullptr) return DXGI_ERROR_INVALID_CALL; - if (Output > 0) { - *ppOutput = nullptr; + if (Output > 0) return DXGI_ERROR_NOT_FOUND; - } - // TODO support multiple monitors - HMONITOR monitor = ::MonitorFromPoint({ 0, 0 }, MONITOR_DEFAULTTOPRIMARY); - *ppOutput = ref(new DxgiOutput(this, monitor)); + *ppOutput = m_output.ref(); return S_OK; } @@ -277,6 +274,13 @@ namespace dxvk { } + void DxgiAdapter::SetupOutputs() { + // TODO support multiple monitors + HMONITOR monitor = ::MonitorFromPoint({ 0, 0 }, MONITOR_DEFAULTTOPRIMARY); + m_output = new DxgiOutput(this, monitor); + } + + void DxgiAdapter::SetupFormatTable() { /***********************************************************************************/ /* C O L O R F O R M A T S */ diff --git a/src/dxgi/dxgi_adapter.h b/src/dxgi/dxgi_adapter.h index 76f4ecaa..e8d0aafd 100644 --- a/src/dxgi/dxgi_adapter.h +++ b/src/dxgi/dxgi_adapter.h @@ -66,6 +66,7 @@ namespace dxvk { using FormatMap = std::unordered_map; Com m_factory; + Com m_output; Rc m_adapter; FormatMap m_colorFormats; @@ -91,6 +92,8 @@ namespace dxvk { VkFormat dstFormat, VkImageAspectFlags srvAspect); + void SetupOutputs(); + void SetupFormatTable(); };