diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/settings.cpp | 2 | ||||
| -rw-r--r-- | src/common/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.cpp | 17 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 1 | ||||
| -rw-r--r-- | src/video_core/textures/astc.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.ui | 10 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 1 | ||||
| -rw-r--r-- | src/yuzu_cmd/default_ini.h | 4 |
12 files changed, 49 insertions, 8 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 49b41c158..70b02146b 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -59,6 +59,7 @@ void LogSettings() { | |||
| 59 | values.use_asynchronous_gpu_emulation.GetValue()); | 59 | values.use_asynchronous_gpu_emulation.GetValue()); |
| 60 | log_setting("Renderer_NvdecEmulation", values.nvdec_emulation.GetValue()); | 60 | log_setting("Renderer_NvdecEmulation", values.nvdec_emulation.GetValue()); |
| 61 | log_setting("Renderer_AccelerateASTC", values.accelerate_astc.GetValue()); | 61 | log_setting("Renderer_AccelerateASTC", values.accelerate_astc.GetValue()); |
| 62 | log_setting("Renderer_AsyncASTC", values.async_astc.GetValue()); | ||
| 62 | log_setting("Renderer_UseVsync", values.use_vsync.GetValue()); | 63 | log_setting("Renderer_UseVsync", values.use_vsync.GetValue()); |
| 63 | log_setting("Renderer_ShaderBackend", values.shader_backend.GetValue()); | 64 | log_setting("Renderer_ShaderBackend", values.shader_backend.GetValue()); |
| 64 | log_setting("Renderer_UseAsynchronousShaders", values.use_asynchronous_shaders.GetValue()); | 65 | log_setting("Renderer_UseAsynchronousShaders", values.use_asynchronous_shaders.GetValue()); |
| @@ -212,6 +213,7 @@ void RestoreGlobalState(bool is_powered_on) { | |||
| 212 | values.use_asynchronous_gpu_emulation.SetGlobal(true); | 213 | values.use_asynchronous_gpu_emulation.SetGlobal(true); |
| 213 | values.nvdec_emulation.SetGlobal(true); | 214 | values.nvdec_emulation.SetGlobal(true); |
| 214 | values.accelerate_astc.SetGlobal(true); | 215 | values.accelerate_astc.SetGlobal(true); |
| 216 | values.async_astc.SetGlobal(true); | ||
| 215 | values.use_vsync.SetGlobal(true); | 217 | values.use_vsync.SetGlobal(true); |
| 216 | values.shader_backend.SetGlobal(true); | 218 | values.shader_backend.SetGlobal(true); |
| 217 | values.use_asynchronous_shaders.SetGlobal(true); | 219 | values.use_asynchronous_shaders.SetGlobal(true); |
diff --git a/src/common/settings.h b/src/common/settings.h index 6d27dd5ee..512ecff69 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -453,6 +453,7 @@ struct Values { | |||
| 453 | SwitchableSetting<bool> use_asynchronous_gpu_emulation{true, "use_asynchronous_gpu_emulation"}; | 453 | SwitchableSetting<bool> use_asynchronous_gpu_emulation{true, "use_asynchronous_gpu_emulation"}; |
| 454 | SwitchableSetting<NvdecEmulation> nvdec_emulation{NvdecEmulation::GPU, "nvdec_emulation"}; | 454 | SwitchableSetting<NvdecEmulation> nvdec_emulation{NvdecEmulation::GPU, "nvdec_emulation"}; |
| 455 | SwitchableSetting<bool> accelerate_astc{true, "accelerate_astc"}; | 455 | SwitchableSetting<bool> accelerate_astc{true, "accelerate_astc"}; |
| 456 | SwitchableSetting<bool> async_astc{false, "async_astc"}; | ||
| 456 | SwitchableSetting<bool> use_vsync{true, "use_vsync"}; | 457 | SwitchableSetting<bool> use_vsync{true, "use_vsync"}; |
| 457 | SwitchableSetting<ShaderBackend, true> shader_backend{ShaderBackend::GLSL, ShaderBackend::GLSL, | 458 | SwitchableSetting<ShaderBackend, true> shader_backend{ShaderBackend::GLSL, ShaderBackend::GLSL, |
| 458 | ShaderBackend::SPIRV, "shader_backend"}; | 459 | ShaderBackend::SPIRV, "shader_backend"}; |
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index eb6e43a08..b047e7b3d 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp | |||
| @@ -228,8 +228,9 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4 | |||
| 228 | 228 | ||
| 229 | [[nodiscard]] bool CanBeAccelerated(const TextureCacheRuntime& runtime, | 229 | [[nodiscard]] bool CanBeAccelerated(const TextureCacheRuntime& runtime, |
| 230 | const VideoCommon::ImageInfo& info) { | 230 | const VideoCommon::ImageInfo& info) { |
| 231 | if (IsPixelFormatASTC(info.format)) { | 231 | if (IsPixelFormatASTC(info.format) && !runtime.HasNativeASTC()) { |
| 232 | return !runtime.HasNativeASTC() && Settings::values.accelerate_astc.GetValue(); | 232 | return Settings::values.accelerate_astc.GetValue() && |
| 233 | !Settings::values.async_astc.GetValue(); | ||
| 233 | } | 234 | } |
| 234 | // Disable other accelerated uploads for now as they don't implement swizzled uploads | 235 | // Disable other accelerated uploads for now as they don't implement swizzled uploads |
| 235 | return false; | 236 | return false; |
| @@ -258,6 +259,14 @@ void ApplySwizzle(GLuint handle, PixelFormat format, std::array<SwizzleSource, 4 | |||
| 258 | return format_info.compatibility_class == store_class; | 259 | return format_info.compatibility_class == store_class; |
| 259 | } | 260 | } |
| 260 | 261 | ||
| 262 | [[nodiscard]] bool CanBeDecodedAsync(const TextureCacheRuntime& runtime, | ||
| 263 | const VideoCommon::ImageInfo& info) { | ||
| 264 | if (IsPixelFormatASTC(info.format) && !runtime.HasNativeASTC()) { | ||
| 265 | return Settings::values.async_astc.GetValue(); | ||
| 266 | } | ||
| 267 | return false; | ||
| 268 | } | ||
| 269 | |||
| 261 | [[nodiscard]] CopyOrigin MakeCopyOrigin(VideoCommon::Offset3D offset, | 270 | [[nodiscard]] CopyOrigin MakeCopyOrigin(VideoCommon::Offset3D offset, |
| 262 | VideoCommon::SubresourceLayers subresource, GLenum target) { | 271 | VideoCommon::SubresourceLayers subresource, GLenum target) { |
| 263 | switch (target) { | 272 | switch (target) { |
| @@ -721,7 +730,9 @@ std::optional<size_t> TextureCacheRuntime::StagingBuffers::FindBuffer(size_t req | |||
| 721 | Image::Image(TextureCacheRuntime& runtime_, const VideoCommon::ImageInfo& info_, GPUVAddr gpu_addr_, | 730 | Image::Image(TextureCacheRuntime& runtime_, const VideoCommon::ImageInfo& info_, GPUVAddr gpu_addr_, |
| 722 | VAddr cpu_addr_) | 731 | VAddr cpu_addr_) |
| 723 | : VideoCommon::ImageBase(info_, gpu_addr_, cpu_addr_), runtime{&runtime_} { | 732 | : VideoCommon::ImageBase(info_, gpu_addr_, cpu_addr_), runtime{&runtime_} { |
| 724 | if (CanBeAccelerated(*runtime, info)) { | 733 | if (CanBeDecodedAsync(*runtime, info)) { |
| 734 | flags |= ImageFlagBits::AsynchronousDecode; | ||
| 735 | } else if (CanBeAccelerated(*runtime, info)) { | ||
| 725 | flags |= ImageFlagBits::AcceleratedUpload; | 736 | flags |= ImageFlagBits::AcceleratedUpload; |
| 726 | } | 737 | } |
| 727 | if (IsConverted(runtime->device, info.format, info.type)) { | 738 | if (IsConverted(runtime->device, info.format, 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 9b85dfb5e..80adb70eb 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -1256,11 +1256,12 @@ Image::Image(TextureCacheRuntime& runtime_, const ImageInfo& info_, GPUVAddr gpu | |||
| 1256 | commit(runtime_.memory_allocator.Commit(original_image, MemoryUsage::DeviceLocal)), | 1256 | commit(runtime_.memory_allocator.Commit(original_image, MemoryUsage::DeviceLocal)), |
| 1257 | aspect_mask(ImageAspectMask(info.format)) { | 1257 | aspect_mask(ImageAspectMask(info.format)) { |
| 1258 | if (IsPixelFormatASTC(info.format) && !runtime->device.IsOptimalAstcSupported()) { | 1258 | if (IsPixelFormatASTC(info.format) && !runtime->device.IsOptimalAstcSupported()) { |
| 1259 | if (Settings::values.accelerate_astc.GetValue()) { | 1259 | if (Settings::values.async_astc.GetValue()) { |
| 1260 | flags |= VideoCommon::ImageFlagBits::AsynchronousDecode; | ||
| 1261 | } else if (Settings::values.accelerate_astc.GetValue()) { | ||
| 1260 | flags |= VideoCommon::ImageFlagBits::AcceleratedUpload; | 1262 | flags |= VideoCommon::ImageFlagBits::AcceleratedUpload; |
| 1261 | } else { | ||
| 1262 | flags |= VideoCommon::ImageFlagBits::Converted; | ||
| 1263 | } | 1263 | } |
| 1264 | flags |= VideoCommon::ImageFlagBits::Converted; | ||
| 1264 | flags |= VideoCommon::ImageFlagBits::CostlyLoad; | 1265 | flags |= VideoCommon::ImageFlagBits::CostlyLoad; |
| 1265 | } | 1266 | } |
| 1266 | if (runtime->device.HasDebuggingToolAttached()) { | 1267 | if (runtime->device.HasDebuggingToolAttached()) { |
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 4159bc796..9dd152fbe 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h | |||
| @@ -1003,6 +1003,7 @@ u64 TextureCache<P>::GetScaledImageSizeBytes(const ImageBase& image) { | |||
| 1003 | template <class P> | 1003 | template <class P> |
| 1004 | void TextureCache<P>::QueueAsyncDecode(Image& image, ImageId image_id) { | 1004 | void TextureCache<P>::QueueAsyncDecode(Image& image, ImageId image_id) { |
| 1005 | UNIMPLEMENTED_IF(False(image.flags & ImageFlagBits::Converted)); | 1005 | UNIMPLEMENTED_IF(False(image.flags & ImageFlagBits::Converted)); |
| 1006 | LOG_INFO(HW_GPU, "Queuing async texture decode"); | ||
| 1006 | 1007 | ||
| 1007 | image.flags |= ImageFlagBits::IsDecoding; | 1008 | image.flags |= ImageFlagBits::IsDecoding; |
| 1008 | auto decode = std::make_unique<AsyncDecodeContext>(); | 1009 | auto decode = std::make_unique<AsyncDecodeContext>(); |
diff --git a/src/video_core/textures/astc.cpp b/src/video_core/textures/astc.cpp index e8d7c7863..4381eed1d 100644 --- a/src/video_core/textures/astc.cpp +++ b/src/video_core/textures/astc.cpp | |||
| @@ -1656,8 +1656,8 @@ void Decompress(std::span<const uint8_t> data, uint32_t width, uint32_t height, | |||
| 1656 | const u32 rows = Common::DivideUp(height, block_height); | 1656 | const u32 rows = Common::DivideUp(height, block_height); |
| 1657 | const u32 cols = Common::DivideUp(width, block_width); | 1657 | const u32 cols = Common::DivideUp(width, block_width); |
| 1658 | 1658 | ||
| 1659 | Common::ThreadWorker workers{std::max(std::thread::hardware_concurrency(), 2U) / 2, | 1659 | static Common::ThreadWorker workers{std::max(std::thread::hardware_concurrency(), 2U) / 2, |
| 1660 | "ASTCDecompress"}; | 1660 | "ASTCDecompress"}; |
| 1661 | 1661 | ||
| 1662 | for (u32 z = 0; z < depth; ++z) { | 1662 | for (u32 z = 0; z < depth; ++z) { |
| 1663 | const u32 depth_offset = z * height * width * 4; | 1663 | const u32 depth_offset = z * height * width * 4; |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index db68ed259..dd1c1e94a 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -707,6 +707,7 @@ void Config::ReadRendererValues() { | |||
| 707 | ReadGlobalSetting(Settings::values.use_asynchronous_gpu_emulation); | 707 | ReadGlobalSetting(Settings::values.use_asynchronous_gpu_emulation); |
| 708 | ReadGlobalSetting(Settings::values.nvdec_emulation); | 708 | ReadGlobalSetting(Settings::values.nvdec_emulation); |
| 709 | ReadGlobalSetting(Settings::values.accelerate_astc); | 709 | ReadGlobalSetting(Settings::values.accelerate_astc); |
| 710 | ReadGlobalSetting(Settings::values.async_astc); | ||
| 710 | ReadGlobalSetting(Settings::values.use_vsync); | 711 | ReadGlobalSetting(Settings::values.use_vsync); |
| 711 | ReadGlobalSetting(Settings::values.shader_backend); | 712 | ReadGlobalSetting(Settings::values.shader_backend); |
| 712 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); | 713 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); |
| @@ -1350,6 +1351,7 @@ void Config::SaveRendererValues() { | |||
| 1350 | static_cast<u32>(Settings::values.nvdec_emulation.GetDefault()), | 1351 | static_cast<u32>(Settings::values.nvdec_emulation.GetDefault()), |
| 1351 | Settings::values.nvdec_emulation.UsingGlobal()); | 1352 | Settings::values.nvdec_emulation.UsingGlobal()); |
| 1352 | WriteGlobalSetting(Settings::values.accelerate_astc); | 1353 | WriteGlobalSetting(Settings::values.accelerate_astc); |
| 1354 | WriteGlobalSetting(Settings::values.async_astc); | ||
| 1353 | WriteGlobalSetting(Settings::values.use_vsync); | 1355 | WriteGlobalSetting(Settings::values.use_vsync); |
| 1354 | WriteSetting(QString::fromStdString(Settings::values.shader_backend.GetLabel()), | 1356 | WriteSetting(QString::fromStdString(Settings::values.shader_backend.GetLabel()), |
| 1355 | static_cast<u32>(Settings::values.shader_backend.GetValue(global)), | 1357 | static_cast<u32>(Settings::values.shader_backend.GetValue(global)), |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index cc0155a2c..bbc363322 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp | |||
| @@ -23,11 +23,13 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 23 | const bool runtime_lock = !system.IsPoweredOn(); | 23 | const bool runtime_lock = !system.IsPoweredOn(); |
| 24 | ui->use_vsync->setEnabled(runtime_lock); | 24 | ui->use_vsync->setEnabled(runtime_lock); |
| 25 | ui->renderer_force_max_clock->setEnabled(runtime_lock); | 25 | ui->renderer_force_max_clock->setEnabled(runtime_lock); |
| 26 | ui->async_astc->setEnabled(runtime_lock); | ||
| 26 | ui->use_asynchronous_shaders->setEnabled(runtime_lock); | 27 | ui->use_asynchronous_shaders->setEnabled(runtime_lock); |
| 27 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); | 28 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); |
| 28 | 29 | ||
| 29 | ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); | 30 | ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); |
| 30 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); | 31 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); |
| 32 | ui->async_astc->setChecked(Settings::values.async_astc.GetValue()); | ||
| 31 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); | 33 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); |
| 32 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); | 34 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); |
| 33 | ui->use_pessimistic_flushes->setChecked(Settings::values.use_pessimistic_flushes.GetValue()); | 35 | ui->use_pessimistic_flushes->setChecked(Settings::values.use_pessimistic_flushes.GetValue()); |
| @@ -60,6 +62,8 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { | |||
| 60 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, | 62 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, |
| 61 | ui->anisotropic_filtering_combobox); | 63 | ui->anisotropic_filtering_combobox); |
| 62 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync); | 64 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, use_vsync); |
| 65 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.async_astc, ui->async_astc, | ||
| 66 | async_astc); | ||
| 63 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, | 67 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, |
| 64 | ui->use_asynchronous_shaders, | 68 | ui->use_asynchronous_shaders, |
| 65 | use_asynchronous_shaders); | 69 | use_asynchronous_shaders); |
| @@ -91,6 +95,7 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 91 | ui->renderer_force_max_clock->setEnabled( | 95 | ui->renderer_force_max_clock->setEnabled( |
| 92 | Settings::values.renderer_force_max_clock.UsingGlobal()); | 96 | Settings::values.renderer_force_max_clock.UsingGlobal()); |
| 93 | ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal()); | 97 | ui->use_vsync->setEnabled(Settings::values.use_vsync.UsingGlobal()); |
| 98 | ui->async_astc->setEnabled(Settings::values.async_astc.UsingGlobal()); | ||
| 94 | ui->use_asynchronous_shaders->setEnabled( | 99 | ui->use_asynchronous_shaders->setEnabled( |
| 95 | Settings::values.use_asynchronous_shaders.UsingGlobal()); | 100 | Settings::values.use_asynchronous_shaders.UsingGlobal()); |
| 96 | ui->use_fast_gpu_time->setEnabled(Settings::values.use_fast_gpu_time.UsingGlobal()); | 101 | ui->use_fast_gpu_time->setEnabled(Settings::values.use_fast_gpu_time.UsingGlobal()); |
| @@ -108,6 +113,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 108 | Settings::values.renderer_force_max_clock, | 113 | Settings::values.renderer_force_max_clock, |
| 109 | renderer_force_max_clock); | 114 | renderer_force_max_clock); |
| 110 | ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync); | 115 | ConfigurationShared::SetColoredTristate(ui->use_vsync, Settings::values.use_vsync, use_vsync); |
| 116 | ConfigurationShared::SetColoredTristate(ui->async_astc, Settings::values.async_astc, | ||
| 117 | async_astc); | ||
| 111 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders, | 118 | ConfigurationShared::SetColoredTristate(ui->use_asynchronous_shaders, |
| 112 | Settings::values.use_asynchronous_shaders, | 119 | Settings::values.use_asynchronous_shaders, |
| 113 | use_asynchronous_shaders); | 120 | use_asynchronous_shaders); |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h index df557d585..bf1b04749 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.h +++ b/src/yuzu/configuration/configure_graphics_advanced.h | |||
| @@ -38,6 +38,7 @@ private: | |||
| 38 | 38 | ||
| 39 | ConfigurationShared::CheckState renderer_force_max_clock; | 39 | ConfigurationShared::CheckState renderer_force_max_clock; |
| 40 | ConfigurationShared::CheckState use_vsync; | 40 | ConfigurationShared::CheckState use_vsync; |
| 41 | ConfigurationShared::CheckState async_astc; | ||
| 41 | ConfigurationShared::CheckState use_asynchronous_shaders; | 42 | ConfigurationShared::CheckState use_asynchronous_shaders; |
| 42 | ConfigurationShared::CheckState use_fast_gpu_time; | 43 | ConfigurationShared::CheckState use_fast_gpu_time; |
| 43 | ConfigurationShared::CheckState use_pessimistic_flushes; | 44 | ConfigurationShared::CheckState use_pessimistic_flushes; |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index 061885e30..a7dbdc18c 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui | |||
| @@ -90,6 +90,16 @@ | |||
| 90 | </widget> | 90 | </widget> |
| 91 | </item> | 91 | </item> |
| 92 | <item> | 92 | <item> |
| 93 | <widget class="QCheckBox" name="async_astc"> | ||
| 94 | <property name="toolTip"> | ||
| 95 | <string>Enables asynchronous ASTC texture decoding, which may reduce load time stutter. This feature is experimental.</string> | ||
| 96 | </property> | ||
| 97 | <property name="text"> | ||
| 98 | <string>Decode ASTC textures asynchronously (Hack)</string> | ||
| 99 | </property> | ||
| 100 | </widget> | ||
| 101 | </item> | ||
| 102 | <item> | ||
| 93 | <widget class="QCheckBox" name="use_asynchronous_shaders"> | 103 | <widget class="QCheckBox" name="use_asynchronous_shaders"> |
| 94 | <property name="toolTip"> | 104 | <property name="toolTip"> |
| 95 | <string>Enables asynchronous shader compilation, which may reduce shader stutter. This feature is experimental.</string> | 105 | <string>Enables asynchronous shader compilation, which may reduce shader stutter. This feature is experimental.</string> |
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 3b6dce296..464da3231 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -324,6 +324,7 @@ void Config::ReadValues() { | |||
| 324 | ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); | 324 | ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); |
| 325 | ReadSetting("Renderer", Settings::values.nvdec_emulation); | 325 | ReadSetting("Renderer", Settings::values.nvdec_emulation); |
| 326 | ReadSetting("Renderer", Settings::values.accelerate_astc); | 326 | ReadSetting("Renderer", Settings::values.accelerate_astc); |
| 327 | ReadSetting("Renderer", Settings::values.async_astc); | ||
| 327 | ReadSetting("Renderer", Settings::values.use_fast_gpu_time); | 328 | ReadSetting("Renderer", Settings::values.use_fast_gpu_time); |
| 328 | ReadSetting("Renderer", Settings::values.use_pessimistic_flushes); | 329 | ReadSetting("Renderer", Settings::values.use_pessimistic_flushes); |
| 329 | ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); | 330 | ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); |
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h index cf3cc4c4e..20e403400 100644 --- a/src/yuzu_cmd/default_ini.h +++ b/src/yuzu_cmd/default_ini.h | |||
| @@ -342,6 +342,10 @@ nvdec_emulation = | |||
| 342 | # 0: Off, 1 (default): On | 342 | # 0: Off, 1 (default): On |
| 343 | accelerate_astc = | 343 | accelerate_astc = |
| 344 | 344 | ||
| 345 | # Decode ASTC textures asynchronously. | ||
| 346 | # 0 (default): Off, 1: On | ||
| 347 | async_astc = | ||
| 348 | |||
| 345 | # Turns on the speed limiter, which will limit the emulation speed to the desired speed limit value | 349 | # Turns on the speed limiter, which will limit the emulation speed to the desired speed limit value |
| 346 | # 0: Off, 1: On (default) | 350 | # 0: Off, 1: On (default) |
| 347 | use_speed_limit = | 351 | use_speed_limit = |