common: add setting for renderer clock workaround
This commit is contained in:
parent
301e9bbc03
commit
a4269c285a
|
@ -185,6 +185,7 @@ void RestoreGlobalState(bool is_powered_on) {
|
||||||
// Renderer
|
// Renderer
|
||||||
values.fsr_sharpening_slider.SetGlobal(true);
|
values.fsr_sharpening_slider.SetGlobal(true);
|
||||||
values.renderer_backend.SetGlobal(true);
|
values.renderer_backend.SetGlobal(true);
|
||||||
|
values.renderer_force_max_clock.SetGlobal(true);
|
||||||
values.vulkan_device.SetGlobal(true);
|
values.vulkan_device.SetGlobal(true);
|
||||||
values.aspect_ratio.SetGlobal(true);
|
values.aspect_ratio.SetGlobal(true);
|
||||||
values.max_anisotropy.SetGlobal(true);
|
values.max_anisotropy.SetGlobal(true);
|
||||||
|
|
|
@ -415,6 +415,7 @@ struct Values {
|
||||||
// Renderer
|
// Renderer
|
||||||
SwitchableSetting<RendererBackend, true> renderer_backend{
|
SwitchableSetting<RendererBackend, true> renderer_backend{
|
||||||
RendererBackend::Vulkan, RendererBackend::OpenGL, RendererBackend::Null, "backend"};
|
RendererBackend::Vulkan, RendererBackend::OpenGL, RendererBackend::Null, "backend"};
|
||||||
|
SwitchableSetting<bool> renderer_force_max_clock{true, "force_max_clock"};
|
||||||
Setting<bool> renderer_debug{false, "debug"};
|
Setting<bool> renderer_debug{false, "debug"};
|
||||||
Setting<bool> renderer_shader_feedback{false, "shader_feedback"};
|
Setting<bool> renderer_shader_feedback{false, "shader_feedback"};
|
||||||
Setting<bool> enable_nsight_aftermath{false, "nsight_aftermath"};
|
Setting<bool> enable_nsight_aftermath{false, "nsight_aftermath"};
|
||||||
|
|
|
@ -110,7 +110,9 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_,
|
||||||
screen_info),
|
screen_info),
|
||||||
rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator,
|
rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator,
|
||||||
state_tracker, scheduler) {
|
state_tracker, scheduler) {
|
||||||
|
if (Settings::values.renderer_force_max_clock.GetValue()) {
|
||||||
turbo_mode.emplace(instance, dld);
|
turbo_mode.emplace(instance, dld);
|
||||||
|
}
|
||||||
Report();
|
Report();
|
||||||
} catch (const vk::Exception& exception) {
|
} catch (const vk::Exception& exception) {
|
||||||
LOG_ERROR(Render_Vulkan, "Vulkan initialization failed with error: {}", exception.what());
|
LOG_ERROR(Render_Vulkan, "Vulkan initialization failed with error: {}", exception.what());
|
||||||
|
|
|
@ -690,6 +690,7 @@ void Config::ReadRendererValues() {
|
||||||
qt_config->beginGroup(QStringLiteral("Renderer"));
|
qt_config->beginGroup(QStringLiteral("Renderer"));
|
||||||
|
|
||||||
ReadGlobalSetting(Settings::values.renderer_backend);
|
ReadGlobalSetting(Settings::values.renderer_backend);
|
||||||
|
ReadGlobalSetting(Settings::values.renderer_force_max_clock);
|
||||||
ReadGlobalSetting(Settings::values.vulkan_device);
|
ReadGlobalSetting(Settings::values.vulkan_device);
|
||||||
ReadGlobalSetting(Settings::values.fullscreen_mode);
|
ReadGlobalSetting(Settings::values.fullscreen_mode);
|
||||||
ReadGlobalSetting(Settings::values.aspect_ratio);
|
ReadGlobalSetting(Settings::values.aspect_ratio);
|
||||||
|
@ -1305,6 +1306,9 @@ void Config::SaveRendererValues() {
|
||||||
static_cast<u32>(Settings::values.renderer_backend.GetValue(global)),
|
static_cast<u32>(Settings::values.renderer_backend.GetValue(global)),
|
||||||
static_cast<u32>(Settings::values.renderer_backend.GetDefault()),
|
static_cast<u32>(Settings::values.renderer_backend.GetDefault()),
|
||||||
Settings::values.renderer_backend.UsingGlobal());
|
Settings::values.renderer_backend.UsingGlobal());
|
||||||
|
WriteSetting(QString::fromStdString(Settings::values.renderer_force_max_clock.GetLabel()),
|
||||||
|
static_cast<u32>(Settings::values.renderer_force_max_clock.GetValue(global)),
|
||||||
|
static_cast<u32>(Settings::values.renderer_force_max_clock.GetDefault()));
|
||||||
WriteGlobalSetting(Settings::values.vulkan_device);
|
WriteGlobalSetting(Settings::values.vulkan_device);
|
||||||
WriteSetting(QString::fromStdString(Settings::values.fullscreen_mode.GetLabel()),
|
WriteSetting(QString::fromStdString(Settings::values.fullscreen_mode.GetLabel()),
|
||||||
static_cast<u32>(Settings::values.fullscreen_mode.GetValue(global)),
|
static_cast<u32>(Settings::values.fullscreen_mode.GetValue(global)),
|
||||||
|
|
|
@ -25,6 +25,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
|
||||||
ui->use_asynchronous_shaders->setEnabled(runtime_lock);
|
ui->use_asynchronous_shaders->setEnabled(runtime_lock);
|
||||||
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
|
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
|
||||||
|
|
||||||
|
ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue());
|
||||||
ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue());
|
ui->use_vsync->setChecked(Settings::values.use_vsync.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());
|
||||||
|
@ -37,6 +38,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
|
||||||
Settings::values.max_anisotropy.GetValue());
|
Settings::values.max_anisotropy.GetValue());
|
||||||
} else {
|
} else {
|
||||||
ConfigurationShared::SetPerGameSetting(ui->gpu_accuracy, &Settings::values.gpu_accuracy);
|
ConfigurationShared::SetPerGameSetting(ui->gpu_accuracy, &Settings::values.gpu_accuracy);
|
||||||
|
ConfigurationShared::SetPerGameSetting(ui->renderer_force_max_clock,
|
||||||
|
&Settings::values.renderer_force_max_clock);
|
||||||
ConfigurationShared::SetPerGameSetting(ui->anisotropic_filtering_combobox,
|
ConfigurationShared::SetPerGameSetting(ui->anisotropic_filtering_combobox,
|
||||||
&Settings::values.max_anisotropy);
|
&Settings::values.max_anisotropy);
|
||||||
ConfigurationShared::SetHighlight(ui->label_gpu_accuracy,
|
ConfigurationShared::SetHighlight(ui->label_gpu_accuracy,
|
||||||
|
@ -48,6 +51,9 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
|
||||||
|
|
||||||
void ConfigureGraphicsAdvanced::ApplyConfiguration() {
|
void ConfigureGraphicsAdvanced::ApplyConfiguration() {
|
||||||
ConfigurationShared::ApplyPerGameSetting(&Settings::values.gpu_accuracy, ui->gpu_accuracy);
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.gpu_accuracy, ui->gpu_accuracy);
|
||||||
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.renderer_force_max_clock,
|
||||||
|
ui->renderer_force_max_clock,
|
||||||
|
renderer_force_max_clock);
|
||||||
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);
|
||||||
|
@ -76,6 +82,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
|
||||||
// Disable if not global (only happens during game)
|
// Disable if not global (only happens during game)
|
||||||
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->renderer_force_max_clock->setEnabled(
|
||||||
|
Settings::values.renderer_force_max_clock.UsingGlobal());
|
||||||
ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal());
|
ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal());
|
||||||
ui->use_asynchronous_shaders->setEnabled(
|
ui->use_asynchronous_shaders->setEnabled(
|
||||||
Settings::values.use_asynchronous_shaders.UsingGlobal());
|
Settings::values.use_asynchronous_shaders.UsingGlobal());
|
||||||
|
@ -88,6 +96,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigurationShared::SetColoredTristate(ui->renderer_force_max_clock,
|
||||||
|
Settings::values.renderer_force_max_clock,
|
||||||
|
renderer_force_max_clock);
|
||||||
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->use_asynchronous_shaders,
|
ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders,
|
||||||
Settings::values.use_asynchronous_shaders,
|
Settings::values.use_asynchronous_shaders,
|
||||||
|
|
|
@ -36,6 +36,7 @@ private:
|
||||||
|
|
||||||
std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui;
|
std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui;
|
||||||
|
|
||||||
|
ConfigurationShared::CheckState renderer_force_max_clock;
|
||||||
ConfigurationShared::CheckState use_vsync;
|
ConfigurationShared::CheckState use_vsync;
|
||||||
ConfigurationShared::CheckState use_asynchronous_shaders;
|
ConfigurationShared::CheckState use_asynchronous_shaders;
|
||||||
ConfigurationShared::CheckState use_fast_gpu_time;
|
ConfigurationShared::CheckState use_fast_gpu_time;
|
||||||
|
|
|
@ -69,6 +69,16 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="renderer_force_max_clock">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Force maximum clocks (Vulkan only)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="use_vsync">
|
<widget class="QCheckBox" name="use_vsync">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
|
|
@ -296,6 +296,7 @@ void Config::ReadValues() {
|
||||||
|
|
||||||
// Renderer
|
// Renderer
|
||||||
ReadSetting("Renderer", Settings::values.renderer_backend);
|
ReadSetting("Renderer", Settings::values.renderer_backend);
|
||||||
|
ReadSetting("Renderer", Settings::values.renderer_force_max_clock);
|
||||||
ReadSetting("Renderer", Settings::values.renderer_debug);
|
ReadSetting("Renderer", Settings::values.renderer_debug);
|
||||||
ReadSetting("Renderer", Settings::values.renderer_shader_feedback);
|
ReadSetting("Renderer", Settings::values.renderer_shader_feedback);
|
||||||
ReadSetting("Renderer", Settings::values.enable_nsight_aftermath);
|
ReadSetting("Renderer", Settings::values.enable_nsight_aftermath);
|
||||||
|
|
Loading…
Reference in New Issue