diff options
Diffstat (limited to '')
| -rw-r--r-- | src/common/settings.cpp | 2 | ||||
| -rw-r--r-- | src/common/settings.h | 1 | ||||
| -rw-r--r-- | src/core/telemetry_session.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.ui | 7 |
9 files changed, 32 insertions, 2 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 360e878d6..9ec71eced 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -55,6 +55,7 @@ void LogSettings() { | |||
| 55 | log_setting("Renderer_UseAsynchronousGpuEmulation", | 55 | log_setting("Renderer_UseAsynchronousGpuEmulation", |
| 56 | values.use_asynchronous_gpu_emulation.GetValue()); | 56 | values.use_asynchronous_gpu_emulation.GetValue()); |
| 57 | log_setting("Renderer_UseNvdecEmulation", values.use_nvdec_emulation.GetValue()); | 57 | log_setting("Renderer_UseNvdecEmulation", values.use_nvdec_emulation.GetValue()); |
| 58 | log_setting("Renderer_AccelerateASTC", values.accelerate_astc.GetValue()); | ||
| 58 | log_setting("Renderer_UseVsync", values.use_vsync.GetValue()); | 59 | log_setting("Renderer_UseVsync", values.use_vsync.GetValue()); |
| 59 | log_setting("Renderer_UseAssemblyShaders", values.use_assembly_shaders.GetValue()); | 60 | log_setting("Renderer_UseAssemblyShaders", values.use_assembly_shaders.GetValue()); |
| 60 | log_setting("Renderer_UseAsynchronousShaders", values.use_asynchronous_shaders.GetValue()); | 61 | log_setting("Renderer_UseAsynchronousShaders", values.use_asynchronous_shaders.GetValue()); |
| @@ -135,6 +136,7 @@ void RestoreGlobalState(bool is_powered_on) { | |||
| 135 | values.gpu_accuracy.SetGlobal(true); | 136 | values.gpu_accuracy.SetGlobal(true); |
| 136 | values.use_asynchronous_gpu_emulation.SetGlobal(true); | 137 | values.use_asynchronous_gpu_emulation.SetGlobal(true); |
| 137 | values.use_nvdec_emulation.SetGlobal(true); | 138 | values.use_nvdec_emulation.SetGlobal(true); |
| 139 | values.accelerate_astc.SetGlobal(true); | ||
| 138 | values.use_vsync.SetGlobal(true); | 140 | values.use_vsync.SetGlobal(true); |
| 139 | values.use_assembly_shaders.SetGlobal(true); | 141 | values.use_assembly_shaders.SetGlobal(true); |
| 140 | values.use_asynchronous_shaders.SetGlobal(true); | 142 | values.use_asynchronous_shaders.SetGlobal(true); |
diff --git a/src/common/settings.h b/src/common/settings.h index 1af8c5ac2..529c84465 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -147,6 +147,7 @@ struct Values { | |||
| 147 | Setting<GPUAccuracy> gpu_accuracy; | 147 | Setting<GPUAccuracy> gpu_accuracy; |
| 148 | Setting<bool> use_asynchronous_gpu_emulation; | 148 | Setting<bool> use_asynchronous_gpu_emulation; |
| 149 | Setting<bool> use_nvdec_emulation; | 149 | Setting<bool> use_nvdec_emulation; |
| 150 | Setting<bool> accelerate_astc; | ||
| 150 | Setting<bool> use_vsync; | 151 | Setting<bool> use_vsync; |
| 151 | Setting<bool> use_assembly_shaders; | 152 | Setting<bool> use_assembly_shaders; |
| 152 | Setting<bool> use_asynchronous_shaders; | 153 | Setting<bool> use_asynchronous_shaders; |
diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index ad1a9ffb4..d4c23ced2 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp | |||
| @@ -230,6 +230,7 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader, | |||
| 230 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); | 230 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); |
| 231 | AddField(field_type, "Renderer_UseNvdecEmulation", | 231 | AddField(field_type, "Renderer_UseNvdecEmulation", |
| 232 | Settings::values.use_nvdec_emulation.GetValue()); | 232 | Settings::values.use_nvdec_emulation.GetValue()); |
| 233 | AddField(field_type, "Renderer_AccelerateASTC", Settings::values.accelerate_astc.GetValue()); | ||
| 233 | AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync.GetValue()); | 234 | AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync.GetValue()); |
| 234 | AddField(field_type, "Renderer_UseAssemblyShaders", | 235 | AddField(field_type, "Renderer_UseAssemblyShaders", |
| 235 | Settings::values.use_assembly_shaders.GetValue()); | 236 | Settings::values.use_assembly_shaders.GetValue()); |
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index ffe9edc1b..9b4038615 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp | |||
| @@ -9,6 +9,8 @@ | |||
| 9 | 9 | ||
| 10 | #include <glad/glad.h> | 10 | #include <glad/glad.h> |
| 11 | 11 | ||
| 12 | #include "common/settings.h" | ||
| 13 | |||
| 12 | #include "video_core/renderer_opengl/gl_device.h" | 14 | #include "video_core/renderer_opengl/gl_device.h" |
| 13 | #include "video_core/renderer_opengl/gl_shader_manager.h" | 15 | #include "video_core/renderer_opengl/gl_shader_manager.h" |
| 14 | #include "video_core/renderer_opengl/gl_state_tracker.h" | 16 | #include "video_core/renderer_opengl/gl_state_tracker.h" |
| @@ -307,7 +309,9 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4 | |||
| 307 | 309 | ||
| 308 | [[nodiscard]] bool CanBeAccelerated(const TextureCacheRuntime& runtime, | 310 | [[nodiscard]] bool CanBeAccelerated(const TextureCacheRuntime& runtime, |
| 309 | const VideoCommon::ImageInfo& info) { | 311 | const VideoCommon::ImageInfo& info) { |
| 310 | return !runtime.HasNativeASTC() && IsPixelFormatASTC(info.format); | 312 | if (IsPixelFormatASTC(info.format)) { |
| 313 | return !runtime.HasNativeASTC() && Settings::values.accelerate_astc.GetValue(); | ||
| 314 | } | ||
| 311 | // Disable other accelerated uploads for now as they don't implement swizzled uploads | 315 | // Disable other accelerated uploads for now as they don't implement swizzled uploads |
| 312 | return false; | 316 | return false; |
| 313 | switch (info.type) { | 317 | switch (info.type) { |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index bdd0ce8bc..52860b4cf 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <vector> | 8 | #include <vector> |
| 9 | 9 | ||
| 10 | #include "common/bit_cast.h" | 10 | #include "common/bit_cast.h" |
| 11 | #include "common/settings.h" | ||
| 11 | 12 | ||
| 12 | #include "video_core/engines/fermi_2d.h" | 13 | #include "video_core/engines/fermi_2d.h" |
| 13 | #include "video_core/renderer_vulkan/blit_image.h" | 14 | #include "video_core/renderer_vulkan/blit_image.h" |
| @@ -828,7 +829,11 @@ Image::Image(TextureCacheRuntime& runtime, const ImageInfo& info_, GPUVAddr gpu_ | |||
| 828 | commit = runtime.memory_allocator.Commit(buffer, MemoryUsage::DeviceLocal); | 829 | commit = runtime.memory_allocator.Commit(buffer, MemoryUsage::DeviceLocal); |
| 829 | } | 830 | } |
| 830 | if (IsPixelFormatASTC(info.format) && !runtime.device.IsOptimalAstcSupported()) { | 831 | if (IsPixelFormatASTC(info.format) && !runtime.device.IsOptimalAstcSupported()) { |
| 831 | flags |= VideoCommon::ImageFlagBits::AcceleratedUpload; | 832 | if (Settings::values.accelerate_astc.GetValue()) { |
| 833 | flags |= VideoCommon::ImageFlagBits::AcceleratedUpload; | ||
| 834 | } else { | ||
| 835 | flags |= VideoCommon::ImageFlagBits::Converted; | ||
| 836 | } | ||
| 832 | } | 837 | } |
| 833 | if (runtime.device.HasDebuggingToolAttached()) { | 838 | if (runtime.device.HasDebuggingToolAttached()) { |
| 834 | if (image) { | 839 | if (image) { |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index a59b36e13..d2e1e5bbc 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -807,6 +807,7 @@ void Config::ReadRendererValues() { | |||
| 807 | QStringLiteral("use_asynchronous_gpu_emulation"), true); | 807 | QStringLiteral("use_asynchronous_gpu_emulation"), true); |
| 808 | ReadSettingGlobal(Settings::values.use_nvdec_emulation, QStringLiteral("use_nvdec_emulation"), | 808 | ReadSettingGlobal(Settings::values.use_nvdec_emulation, QStringLiteral("use_nvdec_emulation"), |
| 809 | true); | 809 | true); |
| 810 | ReadSettingGlobal(Settings::values.accelerate_astc, QStringLiteral("accelerate_astc"), true); | ||
| 810 | ReadSettingGlobal(Settings::values.use_vsync, QStringLiteral("use_vsync"), true); | 811 | ReadSettingGlobal(Settings::values.use_vsync, QStringLiteral("use_vsync"), true); |
| 811 | ReadSettingGlobal(Settings::values.use_assembly_shaders, QStringLiteral("use_assembly_shaders"), | 812 | ReadSettingGlobal(Settings::values.use_assembly_shaders, QStringLiteral("use_assembly_shaders"), |
| 812 | false); | 813 | false); |
| @@ -1388,6 +1389,7 @@ void Config::SaveRendererValues() { | |||
| 1388 | Settings::values.use_asynchronous_gpu_emulation, true); | 1389 | Settings::values.use_asynchronous_gpu_emulation, true); |
| 1389 | WriteSettingGlobal(QStringLiteral("use_nvdec_emulation"), Settings::values.use_nvdec_emulation, | 1390 | WriteSettingGlobal(QStringLiteral("use_nvdec_emulation"), Settings::values.use_nvdec_emulation, |
| 1390 | true); | 1391 | true); |
| 1392 | WriteSettingGlobal(QStringLiteral("accelerate_astc"), Settings::values.accelerate_astc, true); | ||
| 1391 | WriteSettingGlobal(QStringLiteral("use_vsync"), Settings::values.use_vsync, true); | 1393 | WriteSettingGlobal(QStringLiteral("use_vsync"), Settings::values.use_vsync, true); |
| 1392 | WriteSettingGlobal(QStringLiteral("use_assembly_shaders"), | 1394 | WriteSettingGlobal(QStringLiteral("use_assembly_shaders"), |
| 1393 | Settings::values.use_assembly_shaders, false); | 1395 | Settings::values.use_assembly_shaders, false); |
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index fb9ec093c..41a69d9b8 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp | |||
| @@ -70,10 +70,12 @@ void ConfigureGraphics::SetConfiguration() { | |||
| 70 | ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); | 70 | ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); |
| 71 | ui->use_disk_shader_cache->setEnabled(runtime_lock); | 71 | ui->use_disk_shader_cache->setEnabled(runtime_lock); |
| 72 | ui->use_nvdec_emulation->setEnabled(runtime_lock); | 72 | ui->use_nvdec_emulation->setEnabled(runtime_lock); |
| 73 | ui->accelerate_astc->setEnabled(runtime_lock); | ||
| 73 | ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); | 74 | ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); |
| 74 | ui->use_asynchronous_gpu_emulation->setChecked( | 75 | ui->use_asynchronous_gpu_emulation->setChecked( |
| 75 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); | 76 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); |
| 76 | ui->use_nvdec_emulation->setChecked(Settings::values.use_nvdec_emulation.GetValue()); | 77 | ui->use_nvdec_emulation->setChecked(Settings::values.use_nvdec_emulation.GetValue()); |
| 78 | ui->accelerate_astc->setChecked(Settings::values.accelerate_astc.GetValue()); | ||
| 77 | 79 | ||
| 78 | if (Settings::IsConfiguringGlobal()) { | 80 | if (Settings::IsConfiguringGlobal()) { |
| 79 | ui->api->setCurrentIndex(static_cast<int>(Settings::values.renderer_backend.GetValue())); | 81 | ui->api->setCurrentIndex(static_cast<int>(Settings::values.renderer_backend.GetValue())); |
| @@ -118,6 +120,8 @@ void ConfigureGraphics::ApplyConfiguration() { | |||
| 118 | use_asynchronous_gpu_emulation); | 120 | use_asynchronous_gpu_emulation); |
| 119 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_nvdec_emulation, | 121 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_nvdec_emulation, |
| 120 | ui->use_nvdec_emulation, use_nvdec_emulation); | 122 | ui->use_nvdec_emulation, use_nvdec_emulation); |
| 123 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc, ui->accelerate_astc, | ||
| 124 | accelerate_astc); | ||
| 121 | 125 | ||
| 122 | if (Settings::IsConfiguringGlobal()) { | 126 | if (Settings::IsConfiguringGlobal()) { |
| 123 | // Guard if during game and set to game-specific value | 127 | // Guard if during game and set to game-specific value |
| @@ -254,6 +258,7 @@ void ConfigureGraphics::SetupPerGameUI() { | |||
| 254 | ui->use_asynchronous_gpu_emulation->setEnabled( | 258 | ui->use_asynchronous_gpu_emulation->setEnabled( |
| 255 | Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); | 259 | Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); |
| 256 | ui->use_nvdec_emulation->setEnabled(Settings::values.use_nvdec_emulation.UsingGlobal()); | 260 | ui->use_nvdec_emulation->setEnabled(Settings::values.use_nvdec_emulation.UsingGlobal()); |
| 261 | ui->accelerate_astc->setEnabled(Settings::values.accelerate_astc.UsingGlobal()); | ||
| 257 | ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal()); | 262 | ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal()); |
| 258 | ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal()); | 263 | ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal()); |
| 259 | 264 | ||
| @@ -269,6 +274,8 @@ void ConfigureGraphics::SetupPerGameUI() { | |||
| 269 | ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, use_disk_shader_cache); | 274 | ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, use_disk_shader_cache); |
| 270 | ConfigurationShared::SetColoredTristate( | 275 | ConfigurationShared::SetColoredTristate( |
| 271 | ui->use_nvdec_emulation, Settings::values.use_nvdec_emulation, use_nvdec_emulation); | 276 | ui->use_nvdec_emulation, Settings::values.use_nvdec_emulation, use_nvdec_emulation); |
| 277 | ConfigurationShared::SetColoredTristate(ui->accelerate_astc, Settings::values.accelerate_astc, | ||
| 278 | accelerate_astc); | ||
| 272 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation, | 279 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation, |
| 273 | Settings::values.use_asynchronous_gpu_emulation, | 280 | Settings::values.use_asynchronous_gpu_emulation, |
| 274 | use_asynchronous_gpu_emulation); | 281 | use_asynchronous_gpu_emulation); |
diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h index c162048a2..6418115cf 100644 --- a/src/yuzu/configuration/configure_graphics.h +++ b/src/yuzu/configuration/configure_graphics.h | |||
| @@ -47,6 +47,7 @@ private: | |||
| 47 | QColor bg_color; | 47 | QColor bg_color; |
| 48 | 48 | ||
| 49 | ConfigurationShared::CheckState use_nvdec_emulation; | 49 | ConfigurationShared::CheckState use_nvdec_emulation; |
| 50 | ConfigurationShared::CheckState accelerate_astc; | ||
| 50 | ConfigurationShared::CheckState use_disk_shader_cache; | 51 | ConfigurationShared::CheckState use_disk_shader_cache; |
| 51 | ConfigurationShared::CheckState use_asynchronous_gpu_emulation; | 52 | ConfigurationShared::CheckState use_asynchronous_gpu_emulation; |
| 52 | 53 | ||
diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index ab0bd4d77..5b999d84d 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui | |||
| @@ -105,6 +105,13 @@ | |||
| 105 | </widget> | 105 | </widget> |
| 106 | </item> | 106 | </item> |
| 107 | <item> | 107 | <item> |
| 108 | <widget class="QCheckBox" name="accelerate_astc"> | ||
| 109 | <property name="text"> | ||
| 110 | <string>Accelerate ASTC texture decoding</string> | ||
| 111 | </property> | ||
| 112 | </widget> | ||
| 113 | </item> | ||
| 114 | <item> | ||
| 108 | <widget class="QWidget" name="fullscreen_mode_layout" native="true"> | 115 | <widget class="QWidget" name="fullscreen_mode_layout" native="true"> |
| 109 | <layout class="QHBoxLayout" name="horizontalLayout_1"> | 116 | <layout class="QHBoxLayout" name="horizontalLayout_1"> |
| 110 | <property name="leftMargin"> | 117 | <property name="leftMargin"> |