settings: Hide shader cache behind a setting
This commit is contained in:
		
							parent
							
								
									be4641c43f
								
							
						
					
					
						commit
						e78da8dc1f
					
				| @ -391,6 +391,7 @@ struct Values { | ||||
|     float resolution_factor; | ||||
|     bool use_frame_limit; | ||||
|     u16 frame_limit; | ||||
|     bool use_disk_shader_cache; | ||||
|     bool use_accurate_gpu_emulation; | ||||
| 
 | ||||
|     float bg_red; | ||||
|  | ||||
| @ -158,6 +158,8 @@ TelemetrySession::TelemetrySession() { | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_UseFrameLimit", | ||||
|              Settings::values.use_frame_limit); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit", Settings::values.frame_limit); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_UseDiskShaderCache", | ||||
|              Settings::values.use_disk_shader_cache); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_UseAccurateGpuEmulation", | ||||
|              Settings::values.use_accurate_gpu_emulation); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "System_UseDockedMode", | ||||
|  | ||||
| @ -17,6 +17,7 @@ | ||||
| 
 | ||||
| #include "core/core.h" | ||||
| #include "core/hle/kernel/process.h" | ||||
| #include "core/settings.h" | ||||
| 
 | ||||
| #include "video_core/renderer_opengl/gl_shader_cache.h" | ||||
| #include "video_core/renderer_opengl/gl_shader_disk_cache.h" | ||||
| @ -78,6 +79,10 @@ void ShaderDiskCacheRaw::Save(FileUtil::IOFile& file) const { | ||||
| 
 | ||||
| bool ShaderDiskCacheOpenGL::LoadTransferable(std::vector<ShaderDiskCacheRaw>& raws, | ||||
|                                              std::vector<ShaderDiskCacheUsage>& usages) { | ||||
|     if (!Settings::values.use_disk_shader_cache) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     FileUtil::IOFile file(GetTransferablePath(), "rb"); | ||||
|     if (!file.IsOpen()) { | ||||
|         LOG_INFO(Render_OpenGL, "No transferable shader cache found for game with title id={}", | ||||
| @ -129,6 +134,10 @@ bool ShaderDiskCacheOpenGL::LoadTransferable(std::vector<ShaderDiskCacheRaw>& ra | ||||
| } | ||||
| 
 | ||||
| std::vector<ShaderDiskCachePrecompiledEntry> ShaderDiskCacheOpenGL::LoadPrecompiled() { | ||||
|     if (!Settings::values.use_disk_shader_cache) { | ||||
|         return {}; | ||||
|     } | ||||
| 
 | ||||
|     FileUtil::IOFile file(GetPrecompiledPath(), "rb"); | ||||
|     if (!file.IsOpen()) { | ||||
|         LOG_INFO(Render_OpenGL, "No precompiled shader cache found for game with title id={}", | ||||
| @ -173,6 +182,10 @@ void ShaderDiskCacheOpenGL::InvalidatePrecompiled() const { | ||||
| } | ||||
| 
 | ||||
| void ShaderDiskCacheOpenGL::SaveRaw(const ShaderDiskCacheRaw& entry) { | ||||
|     if (!Settings::values.use_disk_shader_cache) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     const u64 id = entry.GetUniqueIdentifier(); | ||||
|     if (transferable.find(id) != transferable.end()) { | ||||
|         // The shader already exists
 | ||||
| @ -190,6 +203,10 @@ void ShaderDiskCacheOpenGL::SaveRaw(const ShaderDiskCacheRaw& entry) { | ||||
| } | ||||
| 
 | ||||
| void ShaderDiskCacheOpenGL::SaveUsage(const ShaderDiskCacheUsage& usage) { | ||||
|     if (!Settings::values.use_disk_shader_cache) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     const auto it = transferable.find(usage.unique_identifier); | ||||
|     if (it == transferable.end()) { | ||||
|         LOG_CRITICAL(Render_OpenGL, "Saving shader usage without storing raw previously"); | ||||
| @ -208,6 +225,10 @@ void ShaderDiskCacheOpenGL::SaveUsage(const ShaderDiskCacheUsage& usage) { | ||||
| } | ||||
| 
 | ||||
| void ShaderDiskCacheOpenGL::SavePrecompiled(const ShaderDiskCacheUsage& usage, GLuint program) { | ||||
|     if (!Settings::values.use_disk_shader_cache) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     FileUtil::IOFile file = AppendPrecompiledFile(); | ||||
|     if (!file.IsOpen()) { | ||||
|         return; | ||||
|  | ||||
| @ -370,6 +370,8 @@ void Config::ReadValues() { | ||||
|     Settings::values.resolution_factor = qt_config->value("resolution_factor", 1.0).toFloat(); | ||||
|     Settings::values.use_frame_limit = qt_config->value("use_frame_limit", true).toBool(); | ||||
|     Settings::values.frame_limit = qt_config->value("frame_limit", 100).toInt(); | ||||
|     Settings::values.use_disk_shader_cache = | ||||
|         qt_config->value("use_disk_shader_cache", false).toBool(); | ||||
|     Settings::values.use_accurate_gpu_emulation = | ||||
|         qt_config->value("use_accurate_gpu_emulation", false).toBool(); | ||||
| 
 | ||||
| @ -629,6 +631,7 @@ void Config::SaveValues() { | ||||
|     qt_config->setValue("resolution_factor", (double)Settings::values.resolution_factor); | ||||
|     qt_config->setValue("use_frame_limit", Settings::values.use_frame_limit); | ||||
|     qt_config->setValue("frame_limit", Settings::values.frame_limit); | ||||
|     qt_config->setValue("use_disk_shader_cache", Settings::values.use_disk_shader_cache); | ||||
|     qt_config->setValue("use_accurate_gpu_emulation", Settings::values.use_accurate_gpu_emulation); | ||||
| 
 | ||||
|     // Cast to double because Qt's written float values are not human-readable
 | ||||
|  | ||||
| @ -73,6 +73,7 @@ void ConfigureGraphics::setConfiguration() { | ||||
|         static_cast<int>(FromResolutionFactor(Settings::values.resolution_factor))); | ||||
|     ui->toggle_frame_limit->setChecked(Settings::values.use_frame_limit); | ||||
|     ui->frame_limit->setValue(Settings::values.frame_limit); | ||||
|     ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache); | ||||
|     ui->use_accurate_gpu_emulation->setChecked(Settings::values.use_accurate_gpu_emulation); | ||||
|     UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red, Settings::values.bg_green, | ||||
|                                                  Settings::values.bg_blue)); | ||||
| @ -83,6 +84,7 @@ void ConfigureGraphics::applyConfiguration() { | ||||
|         ToResolutionFactor(static_cast<Resolution>(ui->resolution_factor_combobox->currentIndex())); | ||||
|     Settings::values.use_frame_limit = ui->toggle_frame_limit->isChecked(); | ||||
|     Settings::values.frame_limit = ui->frame_limit->value(); | ||||
|     Settings::values.use_disk_shader_cache = ui->use_disk_shader_cache->isChecked(); | ||||
|     Settings::values.use_accurate_gpu_emulation = ui->use_accurate_gpu_emulation->isChecked(); | ||||
|     Settings::values.bg_red = static_cast<float>(bg_color.redF()); | ||||
|     Settings::values.bg_green = static_cast<float>(bg_color.greenF()); | ||||
|  | ||||
| @ -49,6 +49,13 @@ | ||||
|           </item> | ||||
|          </layout> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="use_disk_shader_cache"> | ||||
|           <property name="text"> | ||||
|            <string>Use disk shader cache</string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="use_accurate_gpu_emulation"> | ||||
|           <property name="text"> | ||||
|  | ||||
| @ -350,6 +350,8 @@ void Config::ReadValues() { | ||||
|     Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true); | ||||
|     Settings::values.frame_limit = | ||||
|         static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100)); | ||||
|     Settings::values.use_disk_shader_cache = | ||||
|         sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false); | ||||
|     Settings::values.use_accurate_gpu_emulation = | ||||
|         sdl2_config->GetBoolean("Renderer", "use_accurate_gpu_emulation", false); | ||||
| 
 | ||||
|  | ||||
| @ -110,6 +110,10 @@ use_frame_limit = | ||||
| # 1 - 9999: Speed limit as a percentage of target game speed. 100 (default) | ||||
| frame_limit = | ||||
| 
 | ||||
| # Whether to use disk based shader cache | ||||
| # 0 (default): Off, 1 : On | ||||
| use_disk_shader_cache = | ||||
| 
 | ||||
| # Whether to use accurate GPU emulation | ||||
| # 0 (default): Off (fast), 1 : On (slow) | ||||
| use_accurate_gpu_emulation = | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
						ReinUsesLisp