[dxgi] Create persistent DxgiOutput object

This commit is contained in:
Philip Rebohle 2018-04-10 22:07:00 +02:00
parent f13011f487
commit ad7f0971cf
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 13 additions and 6 deletions

View File

@ -16,6 +16,7 @@ namespace dxvk {
const Rc<DxvkAdapter>& 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 */

View File

@ -66,6 +66,7 @@ namespace dxvk {
using FormatMap = std::unordered_map<DXGI_FORMAT, DxgiFormatInfo>;
Com<DxgiFactory> m_factory;
Com<DxgiOutput> m_output;
Rc<DxvkAdapter> m_adapter;
FormatMap m_colorFormats;
@ -91,6 +92,8 @@ namespace dxvk {
VkFormat dstFormat,
VkImageAspectFlags srvAspect);
void SetupOutputs();
void SetupFormatTable();
};