summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/settings.cpp2
-rw-r--r--src/common/settings.h11
-rw-r--r--src/core/telemetry_session.cpp15
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp8
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp19
-rw-r--r--src/yuzu/configuration/config.cpp12
-rw-r--r--src/yuzu/configuration/config.h1
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp19
-rw-r--r--src/yuzu/configuration/configure_graphics.ui51
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.cpp7
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.ui10
-rw-r--r--src/yuzu_cmd/config.cpp2
12 files changed, 105 insertions, 52 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 5972480e5..3f56afe94 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -82,7 +82,6 @@ void LogSettings() {
82 values.use_asynchronous_gpu_emulation.GetValue()); 82 values.use_asynchronous_gpu_emulation.GetValue());
83 log_setting("Renderer_NvdecEmulation", values.nvdec_emulation.GetValue()); 83 log_setting("Renderer_NvdecEmulation", values.nvdec_emulation.GetValue());
84 log_setting("Renderer_AccelerateASTC", values.accelerate_astc.GetValue()); 84 log_setting("Renderer_AccelerateASTC", values.accelerate_astc.GetValue());
85 log_setting("Renderer_AsyncASTC", values.async_astc.GetValue());
86 log_setting("Renderer_AstcRecompression", values.astc_recompression.GetValue()); 85 log_setting("Renderer_AstcRecompression", values.astc_recompression.GetValue());
87 log_setting("Renderer_UseVsync", values.vsync_mode.GetValue()); 86 log_setting("Renderer_UseVsync", values.vsync_mode.GetValue());
88 log_setting("Renderer_UseReactiveFlushing", values.use_reactive_flushing.GetValue()); 87 log_setting("Renderer_UseReactiveFlushing", values.use_reactive_flushing.GetValue());
@@ -246,7 +245,6 @@ void RestoreGlobalState(bool is_powered_on) {
246 values.use_asynchronous_gpu_emulation.SetGlobal(true); 245 values.use_asynchronous_gpu_emulation.SetGlobal(true);
247 values.nvdec_emulation.SetGlobal(true); 246 values.nvdec_emulation.SetGlobal(true);
248 values.accelerate_astc.SetGlobal(true); 247 values.accelerate_astc.SetGlobal(true);
249 values.async_astc.SetGlobal(true);
250 values.astc_recompression.SetGlobal(true); 248 values.astc_recompression.SetGlobal(true);
251 values.use_reactive_flushing.SetGlobal(true); 249 values.use_reactive_flushing.SetGlobal(true);
252 values.shader_backend.SetGlobal(true); 250 values.shader_backend.SetGlobal(true);
diff --git a/src/common/settings.h b/src/common/settings.h
index 59e96e74f..b8ab34f7f 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -16,6 +16,12 @@
16 16
17namespace Settings { 17namespace Settings {
18 18
19enum class AstcDecodeMode : u32 {
20 CPU = 0,
21 GPU = 1,
22 CPUAsynchronous = 2,
23};
24
19enum class VSyncMode : u32 { 25enum class VSyncMode : u32 {
20 Immediate = 0, 26 Immediate = 0,
21 Mailbox = 1, 27 Mailbox = 1,
@@ -467,8 +473,9 @@ struct Values {
467 GPUAccuracy::Extreme, "gpu_accuracy"}; 473 GPUAccuracy::Extreme, "gpu_accuracy"};
468 SwitchableSetting<bool> use_asynchronous_gpu_emulation{true, "use_asynchronous_gpu_emulation"}; 474 SwitchableSetting<bool> use_asynchronous_gpu_emulation{true, "use_asynchronous_gpu_emulation"};
469 SwitchableSetting<NvdecEmulation> nvdec_emulation{NvdecEmulation::GPU, "nvdec_emulation"}; 475 SwitchableSetting<NvdecEmulation> nvdec_emulation{NvdecEmulation::GPU, "nvdec_emulation"};
470 SwitchableSetting<bool> accelerate_astc{true, "accelerate_astc"}; 476 SwitchableSetting<AstcDecodeMode, true> accelerate_astc{
471 SwitchableSetting<bool> async_astc{false, "async_astc"}; 477 AstcDecodeMode::CPU, AstcDecodeMode::CPU, AstcDecodeMode::CPUAsynchronous,
478 "accelerate_astc"};
472 Setting<VSyncMode, true> vsync_mode{VSyncMode::FIFO, VSyncMode::Immediate, 479 Setting<VSyncMode, true> vsync_mode{VSyncMode::FIFO, VSyncMode::Immediate,
473 VSyncMode::FIFORelaxed, "use_vsync"}; 480 VSyncMode::FIFORelaxed, "use_vsync"};
474 SwitchableSetting<bool> use_reactive_flushing{true, "use_reactive_flushing"}; 481 SwitchableSetting<bool> use_reactive_flushing{true, "use_reactive_flushing"};
diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp
index 7a2f3c90a..665ffe3a2 100644
--- a/src/core/telemetry_session.cpp
+++ b/src/core/telemetry_session.cpp
@@ -99,6 +99,18 @@ static constexpr const char* TranslateVSyncMode(Settings::VSyncMode mode) {
99 return "Unknown"; 99 return "Unknown";
100} 100}
101 101
102static constexpr const char* TranslateASTCDecodeMode(Settings::AstcDecodeMode mode) {
103 switch (mode) {
104 case Settings::AstcDecodeMode::CPU:
105 return "CPU";
106 case Settings::AstcDecodeMode::GPU:
107 return "GPU";
108 case Settings::AstcDecodeMode::CPUAsynchronous:
109 return "CPU Asynchronous";
110 }
111 return "Unknown";
112}
113
102u64 GetTelemetryId() { 114u64 GetTelemetryId() {
103 u64 telemetry_id{}; 115 u64 telemetry_id{};
104 const auto filename = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "telemetry_id"; 116 const auto filename = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "telemetry_id";
@@ -254,7 +266,8 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader,
254 Settings::values.use_asynchronous_gpu_emulation.GetValue()); 266 Settings::values.use_asynchronous_gpu_emulation.GetValue());
255 AddField(field_type, "Renderer_NvdecEmulation", 267 AddField(field_type, "Renderer_NvdecEmulation",
256 TranslateNvdecEmulation(Settings::values.nvdec_emulation.GetValue())); 268 TranslateNvdecEmulation(Settings::values.nvdec_emulation.GetValue()));
257 AddField(field_type, "Renderer_AccelerateASTC", Settings::values.accelerate_astc.GetValue()); 269 AddField(field_type, "Renderer_AccelerateASTC",
270 TranslateASTCDecodeMode(Settings::values.accelerate_astc.GetValue()));
258 AddField(field_type, "Renderer_UseVsync", 271 AddField(field_type, "Renderer_UseVsync",
259 TranslateVSyncMode(Settings::values.vsync_mode.GetValue())); 272 TranslateVSyncMode(Settings::values.vsync_mode.GetValue()));
260 AddField(field_type, "Renderer_ShaderBackend", 273 AddField(field_type, "Renderer_ShaderBackend",
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp
index 3b446be07..38ae12d8e 100644
--- a/src/video_core/renderer_opengl/gl_texture_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp
@@ -232,10 +232,9 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4
232[[nodiscard]] bool CanBeAccelerated(const TextureCacheRuntime& runtime, 232[[nodiscard]] bool CanBeAccelerated(const TextureCacheRuntime& runtime,
233 const VideoCommon::ImageInfo& info) { 233 const VideoCommon::ImageInfo& info) {
234 if (IsPixelFormatASTC(info.format) && info.size.depth == 1 && !runtime.HasNativeASTC()) { 234 if (IsPixelFormatASTC(info.format) && info.size.depth == 1 && !runtime.HasNativeASTC()) {
235 return Settings::values.accelerate_astc.GetValue() && 235 return Settings::values.accelerate_astc.GetValue() == Settings::AstcDecodeMode::GPU &&
236 Settings::values.astc_recompression.GetValue() == 236 Settings::values.astc_recompression.GetValue() ==
237 Settings::AstcRecompression::Uncompressed && 237 Settings::AstcRecompression::Uncompressed;
238 !Settings::values.async_astc.GetValue();
239 } 238 }
240 // Disable other accelerated uploads for now as they don't implement swizzled uploads 239 // Disable other accelerated uploads for now as they don't implement swizzled uploads
241 return false; 240 return false;
@@ -267,7 +266,8 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4
267[[nodiscard]] bool CanBeDecodedAsync(const TextureCacheRuntime& runtime, 266[[nodiscard]] bool CanBeDecodedAsync(const TextureCacheRuntime& runtime,
268 const VideoCommon::ImageInfo& info) { 267 const VideoCommon::ImageInfo& info) {
269 if (IsPixelFormatASTC(info.format) && !runtime.HasNativeASTC()) { 268 if (IsPixelFormatASTC(info.format) && !runtime.HasNativeASTC()) {
270 return Settings::values.async_astc.GetValue(); 269 return Settings::values.accelerate_astc.GetValue() ==
270 Settings::AstcDecodeMode::CPUAsynchronous;
271 } 271 }
272 return false; 272 return false;
273} 273}
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
index bf6ad6c79..a060c3934 100644
--- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
@@ -817,7 +817,7 @@ TextureCacheRuntime::TextureCacheRuntime(const Device& device_, Scheduler& sched
817 : device{device_}, scheduler{scheduler_}, memory_allocator{memory_allocator_}, 817 : device{device_}, scheduler{scheduler_}, memory_allocator{memory_allocator_},
818 staging_buffer_pool{staging_buffer_pool_}, blit_image_helper{blit_image_helper_}, 818 staging_buffer_pool{staging_buffer_pool_}, blit_image_helper{blit_image_helper_},
819 render_pass_cache{render_pass_cache_}, resolution{Settings::values.resolution_info} { 819 render_pass_cache{render_pass_cache_}, resolution{Settings::values.resolution_info} {
820 if (Settings::values.accelerate_astc) { 820 if (Settings::values.accelerate_astc.GetValue() == Settings::AstcDecodeMode::GPU) {
821 astc_decoder_pass.emplace(device, scheduler, descriptor_pool, staging_buffer_pool, 821 astc_decoder_pass.emplace(device, scheduler, descriptor_pool, staging_buffer_pool,
822 compute_pass_descriptor_queue, memory_allocator); 822 compute_pass_descriptor_queue, memory_allocator);
823 } 823 }
@@ -1301,12 +1301,19 @@ Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu
1301 runtime->ViewFormats(info.format))), 1301 runtime->ViewFormats(info.format))),
1302 aspect_mask(ImageAspectMask(info.format)) { 1302 aspect_mask(ImageAspectMask(info.format)) {
1303 if (IsPixelFormatASTC(info.format) && !runtime->device.IsOptimalAstcSupported()) { 1303 if (IsPixelFormatASTC(info.format) && !runtime->device.IsOptimalAstcSupported()) {
1304 if (Settings::values.async_astc.GetValue()) { 1304 switch (Settings::values.accelerate_astc.GetValue()) {
1305 case Settings::AstcDecodeMode::GPU:
1306 if (Settings::values.astc_recompression.GetValue() ==
1307 Settings::AstcRecompression::Uncompressed &&
1308 info.size.depth == 1) {
1309 flags |= VideoCommon::ImageFlagBits::AcceleratedUpload;
1310 }
1311 break;
1312 case Settings::AstcDecodeMode::CPUAsynchronous:
1305 flags |= VideoCommon::ImageFlagBits::AsynchronousDecode; 1313 flags |= VideoCommon::ImageFlagBits::AsynchronousDecode;
1306 } else if (Settings::values.astc_recompression.GetValue() == 1314 break;
1307 Settings::AstcRecompression::Uncompressed && 1315 default:
1308 Settings::values.accelerate_astc.GetValue() && info.size.depth == 1) { 1316 break;
1309 flags |= VideoCommon::ImageFlagBits::AcceleratedUpload;
1310 } 1317 }
1311 flags |= VideoCommon::ImageFlagBits::Converted; 1318 flags |= VideoCommon::ImageFlagBits::Converted;
1312 flags |= VideoCommon::ImageFlagBits::CostlyLoad; 1319 flags |= VideoCommon::ImageFlagBits::CostlyLoad;
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index 195d3556c..786c1222f 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -764,10 +764,8 @@ void Config::ReadRendererValues() {
764 ReadGlobalSetting(Settings::values.use_asynchronous_gpu_emulation); 764 ReadGlobalSetting(Settings::values.use_asynchronous_gpu_emulation);
765 ReadGlobalSetting(Settings::values.nvdec_emulation); 765 ReadGlobalSetting(Settings::values.nvdec_emulation);
766 ReadGlobalSetting(Settings::values.accelerate_astc); 766 ReadGlobalSetting(Settings::values.accelerate_astc);
767 ReadGlobalSetting(Settings::values.async_astc);
768 ReadGlobalSetting(Settings::values.astc_recompression); 767 ReadGlobalSetting(Settings::values.astc_recompression);
769 ReadGlobalSetting(Settings::values.use_reactive_flushing); 768 ReadGlobalSetting(Settings::values.use_reactive_flushing);
770 ReadGlobalSetting(Settings::values.shader_backend);
771 ReadGlobalSetting(Settings::values.use_asynchronous_shaders); 769 ReadGlobalSetting(Settings::values.use_asynchronous_shaders);
772 ReadGlobalSetting(Settings::values.use_fast_gpu_time); 770 ReadGlobalSetting(Settings::values.use_fast_gpu_time);
773 ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); 771 ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
@@ -1428,13 +1426,19 @@ void Config::SaveRendererValues() {
1428 static_cast<u32>(Settings::values.nvdec_emulation.GetValue(global)), 1426 static_cast<u32>(Settings::values.nvdec_emulation.GetValue(global)),
1429 static_cast<u32>(Settings::values.nvdec_emulation.GetDefault()), 1427 static_cast<u32>(Settings::values.nvdec_emulation.GetDefault()),
1430 Settings::values.nvdec_emulation.UsingGlobal()); 1428 Settings::values.nvdec_emulation.UsingGlobal());
1431 WriteGlobalSetting(Settings::values.accelerate_astc); 1429 WriteSetting(QString::fromStdString(Settings::values.accelerate_astc.GetLabel()),
1432 WriteGlobalSetting(Settings::values.async_astc); 1430 static_cast<u32>(Settings::values.accelerate_astc.GetValue(global)),
1431 static_cast<u32>(Settings::values.accelerate_astc.GetDefault()),
1432 Settings::values.accelerate_astc.UsingGlobal());
1433 WriteSetting(QString::fromStdString(Settings::values.astc_recompression.GetLabel()), 1433 WriteSetting(QString::fromStdString(Settings::values.astc_recompression.GetLabel()),
1434 static_cast<u32>(Settings::values.astc_recompression.GetValue(global)), 1434 static_cast<u32>(Settings::values.astc_recompression.GetValue(global)),
1435 static_cast<u32>(Settings::values.astc_recompression.GetDefault()), 1435 static_cast<u32>(Settings::values.astc_recompression.GetDefault()),
1436 Settings::values.astc_recompression.UsingGlobal()); 1436 Settings::values.astc_recompression.UsingGlobal());
1437 WriteGlobalSetting(Settings::values.use_reactive_flushing); 1437 WriteGlobalSetting(Settings::values.use_reactive_flushing);
1438 WriteSetting(QString::fromStdString(Settings::values.accelerate_astc.GetLabel()),
1439 static_cast<u32>(Settings::values.accelerate_astc.GetValue(global)),
1440 static_cast<u32>(Settings::values.accelerate_astc.GetDefault()),
1441 Settings::values.shader_backend.UsingGlobal());
1438 WriteSetting(QString::fromStdString(Settings::values.shader_backend.GetLabel()), 1442 WriteSetting(QString::fromStdString(Settings::values.shader_backend.GetLabel()),
1439 static_cast<u32>(Settings::values.shader_backend.GetValue(global)), 1443 static_cast<u32>(Settings::values.shader_backend.GetValue(global)),
1440 static_cast<u32>(Settings::values.shader_backend.GetDefault()), 1444 static_cast<u32>(Settings::values.shader_backend.GetDefault()),
diff --git a/src/yuzu/configuration/config.h b/src/yuzu/configuration/config.h
index 1211389d2..e066f7552 100644
--- a/src/yuzu/configuration/config.h
+++ b/src/yuzu/configuration/config.h
@@ -218,3 +218,4 @@ Q_DECLARE_METATYPE(Settings::AntiAliasing);
218Q_DECLARE_METATYPE(Settings::RendererBackend); 218Q_DECLARE_METATYPE(Settings::RendererBackend);
219Q_DECLARE_METATYPE(Settings::ShaderBackend); 219Q_DECLARE_METATYPE(Settings::ShaderBackend);
220Q_DECLARE_METATYPE(Settings::AstcRecompression); 220Q_DECLARE_METATYPE(Settings::AstcRecompression);
221Q_DECLARE_METATYPE(Settings::AstcDecodeMode);
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp
index a4965524a..e70781357 100644
--- a/src/yuzu/configuration/configure_graphics.cpp
+++ b/src/yuzu/configuration/configure_graphics.cpp
@@ -194,14 +194,13 @@ void ConfigureGraphics::SetConfiguration() {
194 ui->use_disk_shader_cache->setEnabled(runtime_lock); 194 ui->use_disk_shader_cache->setEnabled(runtime_lock);
195 ui->nvdec_emulation_widget->setEnabled(runtime_lock); 195 ui->nvdec_emulation_widget->setEnabled(runtime_lock);
196 ui->resolution_combobox->setEnabled(runtime_lock); 196 ui->resolution_combobox->setEnabled(runtime_lock);
197 ui->accelerate_astc->setEnabled(runtime_lock); 197 ui->astc_decode_mode_combobox->setEnabled(runtime_lock);
198 ui->vsync_mode_layout->setEnabled(runtime_lock || 198 ui->vsync_mode_layout->setEnabled(runtime_lock ||
199 Settings::values.renderer_backend.GetValue() == 199 Settings::values.renderer_backend.GetValue() ==
200 Settings::RendererBackend::Vulkan); 200 Settings::RendererBackend::Vulkan);
201 ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); 201 ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue());
202 ui->use_asynchronous_gpu_emulation->setChecked( 202 ui->use_asynchronous_gpu_emulation->setChecked(
203 Settings::values.use_asynchronous_gpu_emulation.GetValue()); 203 Settings::values.use_asynchronous_gpu_emulation.GetValue());
204 ui->accelerate_astc->setChecked(Settings::values.accelerate_astc.GetValue());
205 204
206 if (Settings::IsConfiguringGlobal()) { 205 if (Settings::IsConfiguringGlobal()) {
207 ui->api->setCurrentIndex(static_cast<int>(Settings::values.renderer_backend.GetValue())); 206 ui->api->setCurrentIndex(static_cast<int>(Settings::values.renderer_backend.GetValue()));
@@ -222,6 +221,11 @@ void ConfigureGraphics::SetConfiguration() {
222 ConfigurationShared::SetHighlight(ui->api_widget, 221 ConfigurationShared::SetHighlight(ui->api_widget,
223 !Settings::values.renderer_backend.UsingGlobal()); 222 !Settings::values.renderer_backend.UsingGlobal());
224 223
224 ConfigurationShared::SetPerGameSetting(ui->astc_decode_mode_combobox,
225 &Settings::values.accelerate_astc);
226 ConfigurationShared::SetHighlight(ui->astc_decode_mode_layout,
227 !Settings::values.accelerate_astc.UsingGlobal());
228
225 ConfigurationShared::SetPerGameSetting(ui->nvdec_emulation, 229 ConfigurationShared::SetPerGameSetting(ui->nvdec_emulation,
226 &Settings::values.nvdec_emulation); 230 &Settings::values.nvdec_emulation);
227 ConfigurationShared::SetHighlight(ui->nvdec_emulation_widget, 231 ConfigurationShared::SetHighlight(ui->nvdec_emulation_widget,
@@ -337,8 +341,8 @@ void ConfigureGraphics::ApplyConfiguration() {
337 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, 341 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation,
338 ui->use_asynchronous_gpu_emulation, 342 ui->use_asynchronous_gpu_emulation,
339 use_asynchronous_gpu_emulation); 343 use_asynchronous_gpu_emulation);
340 ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc, ui->accelerate_astc, 344 ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc,
341 accelerate_astc); 345 ui->astc_decode_mode_combobox);
342 346
343 if (Settings::IsConfiguringGlobal()) { 347 if (Settings::IsConfiguringGlobal()) {
344 // Guard if during game and set to game-specific value 348 // Guard if during game and set to game-specific value
@@ -555,7 +559,7 @@ void ConfigureGraphics::SetupPerGameUI() {
555 ui->use_asynchronous_gpu_emulation->setEnabled( 559 ui->use_asynchronous_gpu_emulation->setEnabled(
556 Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); 560 Settings::values.use_asynchronous_gpu_emulation.UsingGlobal());
557 ui->nvdec_emulation->setEnabled(Settings::values.nvdec_emulation.UsingGlobal()); 561 ui->nvdec_emulation->setEnabled(Settings::values.nvdec_emulation.UsingGlobal());
558 ui->accelerate_astc->setEnabled(Settings::values.accelerate_astc.UsingGlobal()); 562 ui->astc_decode_mode_combobox->setEnabled(Settings::values.accelerate_astc.UsingGlobal());
559 ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal()); 563 ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal());
560 ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal()); 564 ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal());
561 ui->fsr_slider_layout->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); 565 ui->fsr_slider_layout->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal());
@@ -577,8 +581,6 @@ void ConfigureGraphics::SetupPerGameUI() {
577 581
578 ConfigurationShared::SetColoredTristate( 582 ConfigurationShared::SetColoredTristate(
579 ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, use_disk_shader_cache); 583 ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, use_disk_shader_cache);
580 ConfigurationShared::SetColoredTristate(ui->accelerate_astc, Settings::values.accelerate_astc,
581 accelerate_astc);
582 ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation, 584 ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation,
583 Settings::values.use_asynchronous_gpu_emulation, 585 Settings::values.use_asynchronous_gpu_emulation,
584 use_asynchronous_gpu_emulation); 586 use_asynchronous_gpu_emulation);
@@ -597,6 +599,9 @@ void ConfigureGraphics::SetupPerGameUI() {
597 ConfigurationShared::SetColoredComboBox( 599 ConfigurationShared::SetColoredComboBox(
598 ui->anti_aliasing_combobox, ui->anti_aliasing_label, 600 ui->anti_aliasing_combobox, ui->anti_aliasing_label,
599 static_cast<int>(Settings::values.anti_aliasing.GetValue(true))); 601 static_cast<int>(Settings::values.anti_aliasing.GetValue(true)));
602 ConfigurationShared::SetColoredComboBox(
603 ui->astc_decode_mode_combobox, ui->astc_decode_mode_label,
604 static_cast<int>(Settings::values.accelerate_astc.GetValue(true)));
600 ConfigurationShared::InsertGlobalItem( 605 ConfigurationShared::InsertGlobalItem(
601 ui->api, static_cast<int>(Settings::values.renderer_backend.GetValue(true))); 606 ui->api, static_cast<int>(Settings::values.renderer_backend.GetValue(true)));
602 ConfigurationShared::InsertGlobalItem( 607 ConfigurationShared::InsertGlobalItem(
diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui
index 39f70e406..91b09625b 100644
--- a/src/yuzu/configuration/configure_graphics.ui
+++ b/src/yuzu/configuration/configure_graphics.ui
@@ -182,13 +182,6 @@
182 </widget> 182 </widget>
183 </item> 183 </item>
184 <item> 184 <item>
185 <widget class="QCheckBox" name="accelerate_astc">
186 <property name="text">
187 <string>Accelerate ASTC texture decoding</string>
188 </property>
189 </widget>
190 </item>
191 <item>
192 <widget class="QWidget" name="vsync_mode_layout" native="true"> 185 <widget class="QWidget" name="vsync_mode_layout" native="true">
193 <layout class="QHBoxLayout" name="horizontalLayout_4"> 186 <layout class="QHBoxLayout" name="horizontalLayout_4">
194 <property name="leftMargin"> 187 <property name="leftMargin">
@@ -227,6 +220,50 @@ Immediate (no synchronization) just presents whatever is available and can exhib
227 </widget> 220 </widget>
228 </item> 221 </item>
229 <item> 222 <item>
223 <widget class="QWidget" name="astc_decode_mode_layout" native="true">
224 <layout class="QHBoxLayout" name="horizontalLayout_8">
225 <property name="leftMargin">
226 <number>0</number>
227 </property>
228 <property name="topMargin">
229 <number>0</number>
230 </property>
231 <property name="rightMargin">
232 <number>0</number>
233 </property>
234 <property name="bottomMargin">
235 <number>0</number>
236 </property>
237 <item>
238 <widget class="QLabel" name="astc_decode_mode_label">
239 <property name="text">
240 <string>ASTC Texture Decoding Method:</string>
241 </property>
242 </widget>
243 </item>
244 <item>
245 <widget class="QComboBox" name="astc_decode_mode_combobox">
246 <item>
247 <property name="text">
248 <string>CPU</string>
249 </property>
250 </item>
251 <item>
252 <property name="text">
253 <string>GPU Compute</string>
254 </property>
255 </item>
256 <item>
257 <property name="text">
258 <string>CPU Asynchronous (Hack)</string>
259 </property>
260 </item>
261 </widget>
262 </item>
263 </layout>
264 </widget>
265 </item>
266 <item>
230 <widget class="QWidget" name="nvdec_emulation_widget" native="true"> 267 <widget class="QWidget" name="nvdec_emulation_widget" native="true">
231 <layout class="QHBoxLayout" name="nvdec_emulation_layout"> 268 <layout class="QHBoxLayout" name="nvdec_emulation_layout">
232 <property name="leftMargin"> 269 <property name="leftMargin">
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp
index c0a044767..e5c99f742 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.cpp
+++ b/src/yuzu/configuration/configure_graphics_advanced.cpp
@@ -26,7 +26,6 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
26 ui->use_reactive_flushing->setEnabled(runtime_lock); 26 ui->use_reactive_flushing->setEnabled(runtime_lock);
27 ui->async_present->setEnabled(runtime_lock); 27 ui->async_present->setEnabled(runtime_lock);
28 ui->renderer_force_max_clock->setEnabled(runtime_lock); 28 ui->renderer_force_max_clock->setEnabled(runtime_lock);
29 ui->async_astc->setEnabled(runtime_lock);
30 ui->astc_recompression_combobox->setEnabled(runtime_lock); 29 ui->astc_recompression_combobox->setEnabled(runtime_lock);
31 ui->use_asynchronous_shaders->setEnabled(runtime_lock); 30 ui->use_asynchronous_shaders->setEnabled(runtime_lock);
32 ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); 31 ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
@@ -35,7 +34,6 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
35 ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); 34 ui->async_present->setChecked(Settings::values.async_presentation.GetValue());
36 ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); 35 ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue());
37 ui->use_reactive_flushing->setChecked(Settings::values.use_reactive_flushing.GetValue()); 36 ui->use_reactive_flushing->setChecked(Settings::values.use_reactive_flushing.GetValue());
38 ui->async_astc->setChecked(Settings::values.async_astc.GetValue());
39 ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); 37 ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue());
40 ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); 38 ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue());
41 ui->use_vulkan_driver_pipeline_cache->setChecked( 39 ui->use_vulkan_driver_pipeline_cache->setChecked(
@@ -79,8 +77,6 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
79 ui->anisotropic_filtering_combobox); 77 ui->anisotropic_filtering_combobox);
80 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_reactive_flushing, 78 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_reactive_flushing,
81 ui->use_reactive_flushing, use_reactive_flushing); 79 ui->use_reactive_flushing, use_reactive_flushing);
82 ConfigurationShared::ApplyPerGameSetting(&Settings::values.async_astc, ui->async_astc,
83 async_astc);
84 ConfigurationShared::ApplyPerGameSetting(&Settings::values.astc_recompression, 80 ConfigurationShared::ApplyPerGameSetting(&Settings::values.astc_recompression,
85 ui->astc_recompression_combobox); 81 ui->astc_recompression_combobox);
86 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, 82 ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders,
@@ -121,7 +117,6 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
121 ui->renderer_force_max_clock->setEnabled( 117 ui->renderer_force_max_clock->setEnabled(
122 Settings::values.renderer_force_max_clock.UsingGlobal()); 118 Settings::values.renderer_force_max_clock.UsingGlobal());
123 ui->use_reactive_flushing->setEnabled(Settings::values.use_reactive_flushing.UsingGlobal()); 119 ui->use_reactive_flushing->setEnabled(Settings::values.use_reactive_flushing.UsingGlobal());
124 ui->async_astc->setEnabled(Settings::values.async_astc.UsingGlobal());
125 ui->astc_recompression_combobox->setEnabled( 120 ui->astc_recompression_combobox->setEnabled(
126 Settings::values.astc_recompression.UsingGlobal()); 121 Settings::values.astc_recompression.UsingGlobal());
127 ui->use_asynchronous_shaders->setEnabled( 122 ui->use_asynchronous_shaders->setEnabled(
@@ -148,8 +143,6 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
148 renderer_force_max_clock); 143 renderer_force_max_clock);
149 ConfigurationShared::SetColoredTristate( 144 ConfigurationShared::SetColoredTristate(
150 ui->use_reactive_flushing, Settings::values.use_reactive_flushing, use_reactive_flushing); 145 ui->use_reactive_flushing, Settings::values.use_reactive_flushing, use_reactive_flushing);
151 ConfigurationShared::SetColoredTristate(ui->async_astc, Settings::values.async_astc,
152 async_astc);
153 ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders, 146 ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders,
154 Settings::values.use_asynchronous_shaders, 147 Settings::values.use_asynchronous_shaders,
155 use_asynchronous_shaders); 148 use_asynchronous_shaders);
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui
index d527a6f38..859ab9366 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.ui
+++ b/src/yuzu/configuration/configure_graphics_advanced.ui
@@ -131,16 +131,6 @@
131 </widget> 131 </widget>
132 </item> 132 </item>
133 <item> 133 <item>
134 <widget class="QCheckBox" name="async_astc">
135 <property name="toolTip">
136 <string>Enables asynchronous ASTC texture decoding, which may reduce load time stutter. This feature is experimental.</string>
137 </property>
138 <property name="text">
139 <string>Decode ASTC textures asynchronously (Hack)</string>
140 </property>
141 </widget>
142 </item>
143 <item>
144 <widget class="QCheckBox" name="use_reactive_flushing"> 134 <widget class="QCheckBox" name="use_reactive_flushing">
145 <property name="toolTip"> 135 <property name="toolTip">
146 <string>Uses reactive flushing instead of predictive flushing. Allowing a more accurate syncing of memory.</string> 136 <string>Uses reactive flushing instead of predictive flushing. Allowing a more accurate syncing of memory.</string>
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index c5bc472ca..b2049ae57 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -317,9 +317,7 @@ void Config::ReadValues() {
317 ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); 317 ReadSetting("Renderer", Settings::values.use_asynchronous_shaders);
318 ReadSetting("Renderer", Settings::values.nvdec_emulation); 318 ReadSetting("Renderer", Settings::values.nvdec_emulation);
319 ReadSetting("Renderer", Settings::values.accelerate_astc); 319 ReadSetting("Renderer", Settings::values.accelerate_astc);
320 ReadSetting("Renderer", Settings::values.async_astc);
321 ReadSetting("Renderer", Settings::values.astc_recompression); 320 ReadSetting("Renderer", Settings::values.astc_recompression);
322 ReadSetting("Renderer", Settings::values.use_fast_gpu_time);
323 ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); 321 ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache);
324 322
325 ReadSetting("Renderer", Settings::values.bg_red); 323 ReadSetting("Renderer", Settings::values.bg_red);