nvflinger: Add toggle to disable buffer swap interval limits
Enabling this setting will allow some titles to present more frames to the screen as they become available in the nvflinger buffer queue.
This commit is contained in:
parent
abb0124b84
commit
3522fc019c
|
@ -149,6 +149,7 @@ struct Values {
|
||||||
Setting<bool> use_nvdec_emulation;
|
Setting<bool> use_nvdec_emulation;
|
||||||
Setting<bool> accelerate_astc;
|
Setting<bool> accelerate_astc;
|
||||||
Setting<bool> use_vsync;
|
Setting<bool> use_vsync;
|
||||||
|
Setting<bool> disable_fps_limit;
|
||||||
Setting<bool> use_assembly_shaders;
|
Setting<bool> use_assembly_shaders;
|
||||||
Setting<bool> use_asynchronous_shaders;
|
Setting<bool> use_asynchronous_shaders;
|
||||||
Setting<bool> use_fast_gpu_time;
|
Setting<bool> use_fast_gpu_time;
|
||||||
|
|
|
@ -307,6 +307,9 @@ void NVFlinger::Compose() {
|
||||||
}
|
}
|
||||||
|
|
||||||
s64 NVFlinger::GetNextTicks() const {
|
s64 NVFlinger::GetNextTicks() const {
|
||||||
|
if (Settings::values.disable_fps_limit.GetValue()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
constexpr s64 max_hertz = 120LL;
|
constexpr s64 max_hertz = 120LL;
|
||||||
return (1000000000 * (1LL << swap_interval)) / max_hertz;
|
return (1000000000 * (1LL << swap_interval)) / max_hertz;
|
||||||
}
|
}
|
||||||
|
|
|
@ -811,6 +811,8 @@ void Config::ReadRendererValues() {
|
||||||
true);
|
true);
|
||||||
ReadSettingGlobal(Settings::values.accelerate_astc, QStringLiteral("accelerate_astc"), true);
|
ReadSettingGlobal(Settings::values.accelerate_astc, QStringLiteral("accelerate_astc"), true);
|
||||||
ReadSettingGlobal(Settings::values.use_vsync, QStringLiteral("use_vsync"), true);
|
ReadSettingGlobal(Settings::values.use_vsync, QStringLiteral("use_vsync"), true);
|
||||||
|
ReadSettingGlobal(Settings::values.disable_fps_limit, QStringLiteral("disable_fps_limit"),
|
||||||
|
false);
|
||||||
ReadSettingGlobal(Settings::values.use_assembly_shaders, QStringLiteral("use_assembly_shaders"),
|
ReadSettingGlobal(Settings::values.use_assembly_shaders, QStringLiteral("use_assembly_shaders"),
|
||||||
false);
|
false);
|
||||||
ReadSettingGlobal(Settings::values.use_asynchronous_shaders,
|
ReadSettingGlobal(Settings::values.use_asynchronous_shaders,
|
||||||
|
@ -1395,6 +1397,8 @@ void Config::SaveRendererValues() {
|
||||||
true);
|
true);
|
||||||
WriteSettingGlobal(QStringLiteral("accelerate_astc"), Settings::values.accelerate_astc, true);
|
WriteSettingGlobal(QStringLiteral("accelerate_astc"), Settings::values.accelerate_astc, true);
|
||||||
WriteSettingGlobal(QStringLiteral("use_vsync"), Settings::values.use_vsync, true);
|
WriteSettingGlobal(QStringLiteral("use_vsync"), Settings::values.use_vsync, true);
|
||||||
|
WriteSettingGlobal(QStringLiteral("disable_fps_limit"), Settings::values.disable_fps_limit,
|
||||||
|
false);
|
||||||
WriteSettingGlobal(QStringLiteral("use_assembly_shaders"),
|
WriteSettingGlobal(QStringLiteral("use_assembly_shaders"),
|
||||||
Settings::values.use_assembly_shaders, false);
|
Settings::values.use_assembly_shaders, false);
|
||||||
WriteSettingGlobal(QStringLiteral("use_asynchronous_shaders"),
|
WriteSettingGlobal(QStringLiteral("use_asynchronous_shaders"),
|
||||||
|
|
|
@ -28,6 +28,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
|
||||||
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
|
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
|
||||||
|
|
||||||
ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue());
|
ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue());
|
||||||
|
ui->disable_fps_limit->setChecked(Settings::values.disable_fps_limit.GetValue());
|
||||||
ui->use_assembly_shaders->setChecked(Settings::values.use_assembly_shaders.GetValue());
|
ui->use_assembly_shaders->setChecked(Settings::values.use_assembly_shaders.GetValue());
|
||||||
ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue());
|
ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue());
|
||||||
ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue());
|
ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue());
|
||||||
|
@ -57,6 +58,8 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
|
||||||
ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy,
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy,
|
||||||
ui->anisotropic_filtering_combobox);
|
ui->anisotropic_filtering_combobox);
|
||||||
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync);
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.disable_fps_limit,
|
||||||
|
ui->disable_fps_limit, disable_fps_limit);
|
||||||
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_assembly_shaders,
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_assembly_shaders,
|
||||||
ui->use_assembly_shaders, use_assembly_shaders);
|
ui->use_assembly_shaders, use_assembly_shaders);
|
||||||
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders,
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders,
|
||||||
|
@ -97,6 +100,7 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
|
||||||
if (Settings::IsConfiguringGlobal()) {
|
if (Settings::IsConfiguringGlobal()) {
|
||||||
ui->gpu_accuracy->setEnabled(Settings::values.gpu_accuracy.UsingGlobal());
|
ui->gpu_accuracy->setEnabled(Settings::values.gpu_accuracy.UsingGlobal());
|
||||||
ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal());
|
ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal());
|
||||||
|
ui->disable_fps_limit->setEnabled(Settings::values.disable_fps_limit.UsingGlobal());
|
||||||
ui->use_assembly_shaders->setEnabled(Settings::values.use_assembly_shaders.UsingGlobal());
|
ui->use_assembly_shaders->setEnabled(Settings::values.use_assembly_shaders.UsingGlobal());
|
||||||
ui->use_asynchronous_shaders->setEnabled(
|
ui->use_asynchronous_shaders->setEnabled(
|
||||||
Settings::values.use_asynchronous_shaders.UsingGlobal());
|
Settings::values.use_asynchronous_shaders.UsingGlobal());
|
||||||
|
@ -108,6 +112,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync);
|
ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync);
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->disable_fps_limit,
|
||||||
|
Settings::values.disable_fps_limit, disable_fps_limit);
|
||||||
ConfigurationShared::SetColoredTristate(
|
ConfigurationShared::SetColoredTristate(
|
||||||
ui->use_assembly_shaders, Settings::values.use_assembly_shaders, use_assembly_shaders);
|
ui->use_assembly_shaders, Settings::values.use_assembly_shaders, use_assembly_shaders);
|
||||||
ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders,
|
ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders,
|
||||||
|
|
|
@ -35,6 +35,7 @@ private:
|
||||||
std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui;
|
std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui;
|
||||||
|
|
||||||
ConfigurationShared::CheckState use_vsync;
|
ConfigurationShared::CheckState use_vsync;
|
||||||
|
ConfigurationShared::CheckState disable_fps_limit;
|
||||||
ConfigurationShared::CheckState use_assembly_shaders;
|
ConfigurationShared::CheckState use_assembly_shaders;
|
||||||
ConfigurationShared::CheckState use_asynchronous_shaders;
|
ConfigurationShared::CheckState use_asynchronous_shaders;
|
||||||
ConfigurationShared::CheckState use_fast_gpu_time;
|
ConfigurationShared::CheckState use_fast_gpu_time;
|
||||||
|
|
|
@ -76,6 +76,24 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="disable_fps_limit">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>
|
||||||
|
<html><head/><body>
|
||||||
|
<p>Presents guest frames as they become available, disabling the FPS limit in most titles.</p>
|
||||||
|
<p>NOTE: Will cause instabilities.</p>
|
||||||
|
</body></html>
|
||||||
|
</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Disable framerate limit (experimental)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="use_assembly_shaders">
|
<widget class="QCheckBox" name="use_assembly_shaders">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
|
|
@ -443,6 +443,8 @@ void Config::ReadValues() {
|
||||||
sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", true));
|
sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", true));
|
||||||
Settings::values.use_vsync.SetValue(
|
Settings::values.use_vsync.SetValue(
|
||||||
static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)));
|
static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)));
|
||||||
|
Settings::values.disable_fps_limit.SetValue(
|
||||||
|
sdl2_config->GetBoolean("Renderer", "disable_fps_limit", false));
|
||||||
Settings::values.use_assembly_shaders.SetValue(
|
Settings::values.use_assembly_shaders.SetValue(
|
||||||
sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", true));
|
sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", true));
|
||||||
Settings::values.use_asynchronous_shaders.SetValue(
|
Settings::values.use_asynchronous_shaders.SetValue(
|
||||||
|
|
|
@ -362,6 +362,9 @@ use_debug_asserts =
|
||||||
use_auto_stub =
|
use_auto_stub =
|
||||||
# Enables/Disables the macro JIT compiler
|
# Enables/Disables the macro JIT compiler
|
||||||
disable_macro_jit=false
|
disable_macro_jit=false
|
||||||
|
# Presents guest frames as they become available. Experimental.
|
||||||
|
# false: Disabled (default), true: Enabled
|
||||||
|
disable_fps_limit=false
|
||||||
|
|
||||||
[WebService]
|
[WebService]
|
||||||
# Whether or not to enable telemetry
|
# Whether or not to enable telemetry
|
||||||
|
|
Reference in New Issue