diff --git a/app/libraries/shader-compiler b/app/libraries/shader-compiler index ffcaed48..8e1d729d 160000 --- a/app/libraries/shader-compiler +++ b/app/libraries/shader-compiler @@ -1 +1 @@ -Subproject commit ffcaed48cd067a4e720740c09578641d29043c0d +Subproject commit 8e1d729db9f47b139ded28f74c6c9967c8412152 diff --git a/app/src/main/cpp/skyline/common/android_settings.h b/app/src/main/cpp/skyline/common/android_settings.h index ec2b7df3..470c4615 100644 --- a/app/src/main/cpp/skyline/common/android_settings.h +++ b/app/src/main/cpp/skyline/common/android_settings.h @@ -44,8 +44,9 @@ namespace skyline { executorFlushThreshold = ktSettings.GetInt("executorFlushThreshold"); useDirectMemoryImport = ktSettings.GetBool("useDirectMemoryImport"); forceMaxGpuClocks = ktSettings.GetBool("forceMaxGpuClocks"); - enableFastGpuReadbackHack = ktSettings.GetBool("enableFastGpuReadbackHack"); disableShaderCache = ktSettings.GetBool("disableShaderCache"); + enableFastGpuReadbackHack = ktSettings.GetBool("enableFastGpuReadbackHack"); + disableSubgroupShuffle = ktSettings.GetBool("disableSubgroupShuffle"); isAudioOutputDisabled = ktSettings.GetBool("isAudioOutputDisabled"); validationLayer = ktSettings.GetBool("validationLayer"); }; diff --git a/app/src/main/cpp/skyline/common/settings.h b/app/src/main/cpp/skyline/common/settings.h index 0d07a39c..cbad8199 100644 --- a/app/src/main/cpp/skyline/common/settings.h +++ b/app/src/main/cpp/skyline/common/settings.h @@ -80,6 +80,7 @@ namespace skyline { // Hacks Setting enableFastGpuReadbackHack; //!< If the CPU texture readback skipping hack should be used + Setting disableSubgroupShuffle; //!< If shader subgroup suffle operations should be ignored // Audio Setting isAudioOutputDisabled; //!< Disables audio output diff --git a/app/src/main/cpp/skyline/gpu/shader_manager.cpp b/app/src/main/cpp/skyline/gpu/shader_manager.cpp index 88135b82..554478b7 100644 --- a/app/src/main/cpp/skyline/gpu/shader_manager.cpp +++ b/app/src/main/cpp/skyline/gpu/shader_manager.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -122,6 +123,7 @@ namespace skyline::gpu { .has_broken_spirv_subgroup_mask_vector_extract_dynamic = traits.quirks.brokenSubgroupMaskExtractDynamic, .has_broken_spirv_subgroup_shuffle = traits.quirks.brokenSubgroupShuffle, .max_subgroup_size = traits.subgroupSize, + .disable_subgroup_shuffle = *state.settings->disableSubgroupShuffle }; Shader::Settings::values = { diff --git a/app/src/main/java/emu/skyline/utils/NativeSettings.kt b/app/src/main/java/emu/skyline/utils/NativeSettings.kt index da6a39c8..beaabc7d 100644 --- a/app/src/main/java/emu/skyline/utils/NativeSettings.kt +++ b/app/src/main/java/emu/skyline/utils/NativeSettings.kt @@ -34,6 +34,7 @@ class NativeSettings(context : Context, pref : PreferenceSettings) { // Hacks var enableFastGpuReadbackHack : Boolean = pref.enableFastGpuReadbackHack + var disableSubgroupShuffle : Boolean = pref.disableSubgroupShuffle // Audio var isAudioOutputDisabled : Boolean = pref.isAudioOutputDisabled diff --git a/app/src/main/java/emu/skyline/utils/PreferenceSettings.kt b/app/src/main/java/emu/skyline/utils/PreferenceSettings.kt index d5acda2d..69ff74d8 100644 --- a/app/src/main/java/emu/skyline/utils/PreferenceSettings.kt +++ b/app/src/main/java/emu/skyline/utils/PreferenceSettings.kt @@ -49,6 +49,7 @@ class PreferenceSettings @Inject constructor(@ApplicationContext private val con // Hacks var enableFastGpuReadbackHack by sharedPreferences(context, false) + var disableSubgroupShuffle by sharedPreferences(context, false) // Audio var isAudioOutputDisabled by sharedPreferences(context, false) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 075102e5..50f6f484 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -96,6 +96,10 @@ Enable fast GPU readback Fast GPU readback is enabled (Will break some games but others will have higher performance) Fast GPU readback is disabled (Ensures highest accuracy) + Disable GPU subgroup shuffle + Shader subgroup shuffle operations are disabled, may cause severe graphical issues + Shader subgroup shuffle operations are enabled, ensures maximum accuracy + Audio Disable Audio Output diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 26326216..ed72de01 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -186,6 +186,12 @@ android:summaryOn="@string/enable_fast_gpu_readback_enabled" app:key="enable_fast_gpu_readback_hack" app:title="@string/enable_fast_gpu_readback" /> +