summaryrefslogtreecommitdiff
path: root/src/android
diff options
context:
space:
mode:
authorGravatar bunnei2023-02-20 14:55:33 -0800
committerGravatar bunnei2023-06-03 00:05:32 -0700
commit4769d716fccc6a17ac321f46a6002465ef3491d5 (patch)
tree9a92d77233ac1b29ce12cb51251fd0e77b208751 /src/android
parentandroid: jni: Ensure system is only initialized once. (diff)
downloadyuzu-4769d716fccc6a17ac321f46a6002465ef3491d5.tar.gz
yuzu-4769d716fccc6a17ac321f46a6002465ef3491d5.tar.xz
yuzu-4769d716fccc6a17ac321f46a6002465ef3491d5.zip
android: frontend: settings: Add graphics debugging.
Diffstat (limited to 'src/android')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java1
-rw-r--r--src/android/app/src/main/jni/native.cpp19
-rw-r--r--src/android/app/src/main/res/values/strings.xml2
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>