diff options
| author | 2023-02-20 14:55:33 -0800 | |
|---|---|---|
| committer | 2023-06-03 00:05:32 -0700 | |
| commit | 4769d716fccc6a17ac321f46a6002465ef3491d5 (patch) | |
| tree | 9a92d77233ac1b29ce12cb51251fd0e77b208751 /src/android | |
| parent | android: jni: Ensure system is only initialized once. (diff) | |
| download | yuzu-4769d716fccc6a17ac321f46a6002465ef3491d5.tar.gz yuzu-4769d716fccc6a17ac321f46a6002465ef3491d5.tar.xz yuzu-4769d716fccc6a17ac321f46a6002465ef3491d5.zip | |
android: frontend: settings: Add graphics debugging.
Diffstat (limited to 'src/android')
4 files changed, 18 insertions, 6 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java index f924a167d..49447e606 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java | |||
| @@ -162,6 +162,7 @@ public final class SettingsFragmentPresenter { | |||
| 162 | Setting rendererAspectRation = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASPECT_RATIO); | 162 | Setting rendererAspectRation = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASPECT_RATIO); |
| 163 | Setting rendererForceMaxClocks = rendererSection.getSetting(SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK); | 163 | Setting rendererForceMaxClocks = rendererSection.getSetting(SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK); |
| 164 | Setting rendererAsynchronousShaders = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS); | 164 | Setting rendererAsynchronousShaders = rendererSection.getSetting(SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS); |
| 165 | Setting rendererDebug = rendererSection.getSetting(SettingsFile.KEY_RENDERER_DEBUG); | ||
| 165 | 166 | ||
| 166 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_BACKEND, Settings.SECTION_RENDERER, R.string.renderer_api, 0, R.array.rendererApiNames, R.array.rendererApiValues, 1, rendererBackend)); | 167 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_BACKEND, Settings.SECTION_RENDERER, R.string.renderer_api, 0, R.array.rendererApiNames, R.array.rendererApiValues, 1, rendererBackend)); |
| 167 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_ACCURACY, Settings.SECTION_RENDERER, R.string.renderer_accuracy, 0, R.array.rendererAccuracyNames, R.array.rendererAccuracyValues, 1, rendererAccuracy)); | 168 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_ACCURACY, Settings.SECTION_RENDERER, R.string.renderer_accuracy, 0, R.array.rendererAccuracyNames, R.array.rendererAccuracyValues, 1, rendererAccuracy)); |
| @@ -169,6 +170,7 @@ public final class SettingsFragmentPresenter { | |||
| 169 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_ASPECT_RATIO, Settings.SECTION_RENDERER, R.string.renderer_aspect_ratio, 0, R.array.rendererAspectRatioNames, R.array.rendererAspectRatioValues, 0, rendererAspectRation)); | 170 | sl.add(new SingleChoiceSetting(SettingsFile.KEY_RENDERER_ASPECT_RATIO, Settings.SECTION_RENDERER, R.string.renderer_aspect_ratio, 0, R.array.rendererAspectRatioNames, R.array.rendererAspectRatioValues, 0, rendererAspectRation)); |
| 170 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK, Settings.SECTION_RENDERER, R.string.renderer_force_max_clock, R.string.renderer_force_max_clock_description, true, rendererForceMaxClocks)); | 171 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_FORCE_MAX_CLOCK, Settings.SECTION_RENDERER, R.string.renderer_force_max_clock, R.string.renderer_force_max_clock_description, true, rendererForceMaxClocks)); |
| 171 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS, Settings.SECTION_RENDERER, R.string.renderer_asynchronous_shaders, R.string.renderer_asynchronous_shaders_description, false, rendererAsynchronousShaders)); | 172 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_ASYNCHRONOUS_SHADERS, Settings.SECTION_RENDERER, R.string.renderer_asynchronous_shaders, R.string.renderer_asynchronous_shaders_description, false, rendererAsynchronousShaders)); |
| 173 | sl.add(new CheckBoxSetting(SettingsFile.KEY_RENDERER_DEBUG, Settings.SECTION_RENDERER, R.string.renderer_debug, R.string.renderer_debug_description, false, rendererDebug)); | ||
| 172 | } | 174 | } |
| 173 | 175 | ||
| 174 | private void addAudioSettings(ArrayList<SettingsItem> sl) { | 176 | private void addAudioSettings(ArrayList<SettingsItem> sl) { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java index 12bc03ffa..2b3d257a3 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java | |||
| @@ -49,6 +49,7 @@ public final class SettingsFile { | |||
| 49 | public static final String KEY_RENDERER_ASYNCHRONOUS_SHADERS = "use_asynchronous_shaders"; | 49 | public static final String KEY_RENDERER_ASYNCHRONOUS_SHADERS = "use_asynchronous_shaders"; |
| 50 | public static final String KEY_RENDERER_FORCE_MAX_CLOCK = "force_max_clock"; | 50 | public static final String KEY_RENDERER_FORCE_MAX_CLOCK = "force_max_clock"; |
| 51 | public static final String KEY_RENDERER_USE_SPEED_LIMIT = "use_speed_limit"; | 51 | public static final String KEY_RENDERER_USE_SPEED_LIMIT = "use_speed_limit"; |
| 52 | public static final String KEY_RENDERER_DEBUG = "debug"; | ||
| 52 | public static final String KEY_RENDERER_SPEED_LIMIT = "speed_limit"; | 53 | public static final String KEY_RENDERER_SPEED_LIMIT = "speed_limit"; |
| 53 | // Audio | 54 | // Audio |
| 54 | public static final String KEY_AUDIO_VOLUME = "volume"; | 55 | public static final String KEY_AUDIO_VOLUME = "volume"; |
diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 505ae1176..3cfbec87c 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp | |||
| @@ -77,20 +77,27 @@ public: | |||
| 77 | const std::string& custom_driver_name, | 77 | const std::string& custom_driver_name, |
| 78 | const std::string& file_redirect_dir) { | 78 | const std::string& file_redirect_dir) { |
| 79 | void* handle{}; | 79 | void* handle{}; |
| 80 | const char* file_redirect_dir_{}; | ||
| 81 | int featureFlags{}; | ||
| 82 | |||
| 83 | // Enable driver file redirection when renderer debugging is enabled. | ||
| 84 | if (Settings::values.renderer_debug && file_redirect_dir.size()) { | ||
| 85 | featureFlags |= ADRENOTOOLS_DRIVER_FILE_REDIRECT; | ||
| 86 | file_redirect_dir_ = file_redirect_dir.c_str(); | ||
| 87 | } | ||
| 80 | 88 | ||
| 81 | // Try to load a custom driver. | 89 | // Try to load a custom driver. |
| 82 | if (custom_driver_name.size()) { | 90 | if (custom_driver_name.size()) { |
| 83 | handle = adrenotools_open_libvulkan( | 91 | handle = adrenotools_open_libvulkan( |
| 84 | RTLD_NOW, ADRENOTOOLS_DRIVER_CUSTOM | ADRENOTOOLS_DRIVER_FILE_REDIRECT, nullptr, | 92 | RTLD_NOW, featureFlags | ADRENOTOOLS_DRIVER_CUSTOM, nullptr, hook_lib_dir.c_str(), |
| 85 | hook_lib_dir.c_str(), custom_driver_dir.c_str(), custom_driver_name.c_str(), | 93 | custom_driver_dir.c_str(), custom_driver_name.c_str(), file_redirect_dir_, nullptr); |
| 86 | file_redirect_dir.c_str(), nullptr); | ||
| 87 | } | 94 | } |
| 88 | 95 | ||
| 89 | // Try to load the system driver. | 96 | // Try to load the system driver. |
| 90 | if (!handle) { | 97 | if (!handle) { |
| 91 | handle = adrenotools_open_libvulkan(RTLD_NOW, ADRENOTOOLS_DRIVER_FILE_REDIRECT, nullptr, | 98 | handle = |
| 92 | hook_lib_dir.c_str(), nullptr, nullptr, | 99 | adrenotools_open_libvulkan(RTLD_NOW, featureFlags, nullptr, hook_lib_dir.c_str(), |
| 93 | file_redirect_dir.c_str(), nullptr); | 100 | nullptr, nullptr, file_redirect_dir_, nullptr); |
| 94 | } | 101 | } |
| 95 | 102 | ||
| 96 | m_vulkan_library = std::make_shared<Common::DynamicLibrary>(handle); | 103 | m_vulkan_library = std::make_shared<Common::DynamicLibrary>(handle); |
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index bdaaa7650..c5e6a4e27 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml | |||
| @@ -33,6 +33,8 @@ | |||
| 33 | <string name="renderer_force_max_clock_description">Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied).</string> | 33 | <string name="renderer_force_max_clock_description">Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied).</string> |
| 34 | <string name="renderer_asynchronous_shaders">Use asynchronous shaders</string> | 34 | <string name="renderer_asynchronous_shaders">Use asynchronous shaders</string> |
| 35 | <string name="renderer_asynchronous_shaders_description">Compiles shaders asynchronously, which will reduce stutter but may introduce glitches.</string> | 35 | <string name="renderer_asynchronous_shaders_description">Compiles shaders asynchronously, which will reduce stutter but may introduce glitches.</string> |
| 36 | <string name="renderer_debug">Enable graphics debugging</string> | ||
| 37 | <string name="renderer_debug_description">When checked, the graphics API enters a slower debugging mode.</string> | ||
| 36 | 38 | ||
| 37 | <!-- Audio settings strings --> | 39 | <!-- Audio settings strings --> |
| 38 | <string name="audio_volume">Volume</string> | 40 | <string name="audio_volume">Volume</string> |