summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/common/settings.cpp2
-rw-r--r--src/common/settings.h1
-rw-r--r--src/core/telemetry_session.cpp1
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp6
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp7
-rw-r--r--src/yuzu/configuration/config.cpp2
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp7
-rw-r--r--src/yuzu/configuration/configure_graphics.h1
-rw-r--r--src/yuzu/configuration/configure_graphics.ui7
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">