[dxgi] Add useMonitorFallback option

And enable it for CP2077.
It is supposed to be dropped once QueryDisplayConfig optimization
is in Proton Wine.
This commit is contained in:
Paul Gofman 2023-10-09 15:16:30 -06:00 committed by Philip Rebohle
parent 4d974685c9
commit 552d2f0a6d
5 changed files with 28 additions and 0 deletions

View File

@ -623,3 +623,14 @@
# DO NOT CHANGE THIS UNLESS YOU HAVE A VERY GOOD REASON.
# d3d9.textureMemory = 100
# Always enumerate all monitors on each dxgi output
#
# Used to avoid performance degradation in some games
# (will be deprecated once QueryDisplayConfig optimization
# is in Proton Wine).
#
# Supported values:
# - True/False
# dxgi.useMonitorFallback = False

View File

@ -124,10 +124,13 @@ namespace dxvk {
}
}
// If any monitors are left on the list, enable the
// fallback to always enumerate all monitors.
if ((m_monitorFallback = !monitors.empty()))
Logger::warn("DXGI: Found monitors not associated with any adapter, using fallback");
else
m_monitorFallback = m_options.useMonitorFallback;
}

View File

@ -101,6 +101,10 @@ namespace dxvk {
Logger::info("HDR was configured to be enabled, but has been force disabled as a UE4 DX11 game was detected.");
this->enableHDR = false;
}
this->useMonitorFallback = config.getOption<bool>("dxgi.useMonitorFallback", env::getEnvVar("DXVK_MONITOR_FALLBACK") == "1");
if (this->useMonitorFallback)
Logger::info("Enabled useMonitorFallback option");
}
}

View File

@ -44,6 +44,9 @@ namespace dxvk {
/// Enable HDR
bool enableHDR;
/// Use monitor fallback to enumerating all monitors per output
bool useMonitorFallback;
};
}

View File

@ -846,6 +846,13 @@ namespace dxvk {
{ R"(\\RiftApart\.exe$)", {{
{ "dxgi.hideNvidiaGpu", "False" },
}} },
/* CP2077 enumerates display outputs each frame.
* Avoid using QueryDisplayConfig to avoid
* performance degradation until the
* optimization of that function is in Proton. */
{ R"(\\Cyberpunk2077\.exe$)", {{
{ "dxgi.useMonitorFallback", "True" },
}} },
}};