diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index e3fa9ce428..bfa9820939 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt @@ -85,6 +85,8 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { // GPU Logging GPU_LOG_VULKAN_CALLS("gpu_log_vulkan_calls"), GPU_LOG_SHADER_DUMPS("gpu_log_shader_dumps"), + DUMP_GUEST_SHADERS("dump_guest_shaders"), + DUMP_MACROS("dump_macros"), GPU_LOG_MEMORY_TRACKING("gpu_log_memory_tracking"), GPU_LOG_DRIVER_DEBUG("gpu_log_driver_debug"), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 4c13996954..f8653032d2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -940,6 +940,13 @@ abstract class SettingsItem( descriptionId = R.string.gpu_log_vulkan_calls_description ) ) + put( + SwitchSetting( + BooleanSetting.DUMP_GUEST_SHADERS, + titleId = R.string.dump_guest_shaders, + descriptionId = R.string.dump_guest_shaders_description + ) + ) put( SwitchSetting( BooleanSetting.GPU_LOG_SHADER_DUMPS, @@ -947,6 +954,13 @@ abstract class SettingsItem( descriptionId = R.string.gpu_log_shader_dumps_description ) ) + put( + SwitchSetting( + BooleanSetting.DUMP_MACROS, + titleId = R.string.dump_macros, + descriptionId = R.string.dump_macros_description + ) + ) put( SwitchSetting( BooleanSetting.GPU_LOG_MEMORY_TRACKING, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index ad81b494bf..0fcb4b4456 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -1291,7 +1291,9 @@ class SettingsFragmentPresenter( add(HeaderSetting(R.string.gpu_logging_header)) add(ByteSetting.GPU_LOG_LEVEL.key) add(BooleanSetting.GPU_LOG_VULKAN_CALLS.key) + add(BooleanSetting.DUMP_GUEST_SHADERS.key) add(BooleanSetting.GPU_LOG_SHADER_DUMPS.key) + add(BooleanSetting.DUMP_MACROS.key) add(BooleanSetting.GPU_LOG_MEMORY_TRACKING.key) add(BooleanSetting.GPU_LOG_DRIVER_DEBUG.key) add(IntSetting.GPU_LOG_RING_BUFFER_SIZE.key) diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 16cb1460d2..a4ed08a0a8 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -576,8 +576,12 @@ Detail level for GPU logs (higher = more detail, more overhead) Log Vulkan API Calls Track all Vulkan API calls in ring buffer - Dump Shaders - Save compiled shader SPIR-V to files + Dump SPIR-V Shaders + Save recompiled SPIR-V binaries to <dump>/<title_id>_<hash>.spv. Inspect with spirv-dis / spirv-cross / spirv-val. + Dump Guest (Maxwell) Shaders + Save original Maxwell guest shader bytecode to <dump>/<title_id>_<hash>_<stage>.ash. Inspect with nvdisasm. + Dump Maxwell Macros + Save Maxwell macro programs to <dump>/<title_id>_<hash>_raw.macro (and _jit.macro when the macro JIT compiles them). Track GPU Memory Monitor GPU memory allocations and deallocations Driver Debug Info