diff options
| author | Charles Lombardo <clombardo169@gmail.com> | 2023-06-20 16:48:20 -0400 | 
|---|---|---|
| committer | Charles Lombardo <clombardo169@gmail.com> | 2023-06-20 20:06:36 -0400 | 
| commit | e6845155782eb05b45c2574d6a363a8ccfbf9a38 (patch) | |
| tree | 27a39e91ae028e1bc646445c8c93a5b6b6d3dfe3 | |
| parent | a67bdeb2c244419c5b50fc3975d4efefcdfcc855 (diff) | |
android: Don't show custom driver button on mali and x86
3 files changed, 123 insertions, 71 deletions
| diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt index 6f8adbba5..5a36ffad4 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt @@ -68,79 +68,109 @@ class HomeSettingsFragment : Fragment() {      override fun onViewCreated(view: View, savedInstanceState: Bundle?) {          mainActivity = requireActivity() as MainActivity -        val optionsList: MutableList<HomeSetting> = mutableListOf( -            HomeSetting( -                R.string.advanced_settings, -                R.string.settings_description, -                R.drawable.ic_settings -            ) { SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") }, -            HomeSetting( -                R.string.open_user_folder, -                R.string.open_user_folder_description, -                R.drawable.ic_folder_open -            ) { openFileManager() }, -            HomeSetting( -                R.string.preferences_theme, -                R.string.theme_and_color_description, -                R.drawable.ic_palette -            ) { SettingsActivity.launch(requireContext(), Settings.SECTION_THEME, "") }, -            HomeSetting( -                R.string.install_gpu_driver, -                R.string.install_gpu_driver_description, -                R.drawable.ic_exit -            ) { driverInstaller() }, -            HomeSetting( -                R.string.install_amiibo_keys, -                R.string.install_amiibo_keys_description, -                R.drawable.ic_nfc -            ) { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) }, -            HomeSetting( -                R.string.install_game_content, -                R.string.install_game_content_description, -                R.drawable.ic_system_update_alt -            ) { mainActivity.installGameUpdate.launch(arrayOf("*/*")) }, -            HomeSetting( -                R.string.select_games_folder, -                R.string.select_games_folder_description, -                R.drawable.ic_add -            ) { -                mainActivity.getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) -            }, -            HomeSetting( -                R.string.manage_save_data, -                R.string.import_export_saves_description, -                R.drawable.ic_save -            ) { -                ImportExportSavesFragment().show( -                    parentFragmentManager, -                    ImportExportSavesFragment.TAG +        val optionsList: MutableList<HomeSetting> = mutableListOf<HomeSetting>().apply { +            add( +                HomeSetting( +                    R.string.advanced_settings, +                    R.string.settings_description, +                    R.drawable.ic_settings +                ) { SettingsActivity.launch(requireContext(), SettingsFile.FILE_NAME_CONFIG, "") } +            ) +            add( +                HomeSetting( +                    R.string.open_user_folder, +                    R.string.open_user_folder_description, +                    R.drawable.ic_folder_open +                ) { openFileManager() } +            ) +            add( +                HomeSetting( +                    R.string.preferences_theme, +                    R.string.theme_and_color_description, +                    R.drawable.ic_palette +                ) { SettingsActivity.launch(requireContext(), Settings.SECTION_THEME, "") } +            ) + +            if (GpuDriverHelper.supportsCustomDriverLoading()) { +                add( +                    HomeSetting( +                        R.string.install_gpu_driver, +                        R.string.install_gpu_driver_description, +                        R.drawable.ic_exit +                    ) { driverInstaller() }                  ) -            }, -            HomeSetting( -                R.string.install_prod_keys, -                R.string.install_prod_keys_description, -                R.drawable.ic_unlock -            ) { mainActivity.getProdKey.launch(arrayOf("*/*")) }, -            HomeSetting( -                R.string.install_firmware, -                R.string.install_firmware_description, -                R.drawable.ic_firmware -            ) { mainActivity.getFirmware.launch(arrayOf("application/zip")) }, -            HomeSetting( -                R.string.share_log, -                R.string.share_log_description, -                R.drawable.ic_log -            ) { shareLog() }, -            HomeSetting( -                R.string.about, -                R.string.about_description, -                R.drawable.ic_info_outline -            ) { -                exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) -                parentFragmentManager.primaryNavigationFragment?.findNavController() -                    ?.navigate(R.id.action_homeSettingsFragment_to_aboutFragment)              } -        ) + +            add( +                HomeSetting( +                    R.string.install_amiibo_keys, +                    R.string.install_amiibo_keys_description, +                    R.drawable.ic_nfc +                ) { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) } +            ) +            add( +                HomeSetting( +                    R.string.install_game_content, +                    R.string.install_game_content_description, +                    R.drawable.ic_system_update_alt +                ) { mainActivity.installGameUpdate.launch(arrayOf("*/*")) } +            ) +            add( +                HomeSetting( +                    R.string.select_games_folder, +                    R.string.select_games_folder_description, +                    R.drawable.ic_add +                ) { +                    mainActivity.getGamesDirectory.launch( +                        Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data +                    ) +                } +            ) +            add( +                HomeSetting( +                    R.string.manage_save_data, +                    R.string.import_export_saves_description, +                    R.drawable.ic_save +                ) { +                    ImportExportSavesFragment().show( +                        parentFragmentManager, +                        ImportExportSavesFragment.TAG +                    ) +                } +            ) +            add( +                HomeSetting( +                    R.string.install_prod_keys, +                    R.string.install_prod_keys_description, +                    R.drawable.ic_unlock +                ) { mainActivity.getProdKey.launch(arrayOf("*/*")) } +            ) +            add( +                HomeSetting( +                    R.string.install_firmware, +                    R.string.install_firmware_description, +                    R.drawable.ic_firmware +                ) { mainActivity.getFirmware.launch(arrayOf("application/zip")) } +            ) +            add( +                HomeSetting( +                    R.string.share_log, +                    R.string.share_log_description, +                    R.drawable.ic_log +                ) { shareLog() } +            ) +            add( +                HomeSetting( +                    R.string.about, +                    R.string.about_description, +                    R.drawable.ic_info_outline +                ) { +                    exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) +                    parentFragmentManager.primaryNavigationFragment?.findNavController() +                        ?.navigate(R.id.action_homeSettingsFragment_to_aboutFragment) +                } +            ) +        }          if (!BuildConfig.PREMIUM) {              optionsList.add( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt index dad159481..1d4695a2a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt @@ -113,6 +113,8 @@ object GpuDriverHelper {          initializeDriverParameters(context)      } +    external fun supportsCustomDriverLoading(): Boolean +      // Parse the custom driver metadata to retrieve the name.      val customDriverName: String?          get() { diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index f9617202b..632aa50b3 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -560,6 +560,26 @@ void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeGpuDriver(          GetJString(env, custom_driver_name), GetJString(env, file_redirect_dir));  } +[[maybe_unused]] static bool CheckKgslPresent() { +    constexpr auto KgslPath{"/dev/kgsl-3d0"}; + +    return access(KgslPath, F_OK) == 0; +} + +[[maybe_unused]] bool SupportsCustomDriver() { +    return android_get_device_api_level() >= 28 && CheckKgslPresent(); +} + +jboolean JNICALL Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_supportsCustomDriverLoading( +    [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject instance) { +#ifdef ARCHITECTURE_arm64 +    // If the KGSL device exists custom drivers can be loaded using adrenotools +    return SupportsCustomDriver(); +#else +    return false; +#endif +} +  jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadKeys(JNIEnv* env,                                                            [[maybe_unused]] jclass clazz) {      Core::Crypto::KeyManager::Instance().ReloadKeys(); | 
