common: add setting for renderer clock workaround
This commit is contained in:
		
							parent
							
								
									301e9bbc03
								
							
						
					
					
						commit
						a4269c285a
					
				
					 8 changed files with 32 additions and 1 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Liam
						Liam