From 6dcf86ee9b58e8283d41b32d9b17cf74aa54cfbc Mon Sep 17 00:00:00 2001 From: artdeell Date: Sun, 17 Sep 2023 21:39:56 +0300 Subject: [PATCH] Feat[ui]: hide the system driver option when Vulkan is not available --- .../src/main/assets/components/lwjgl3/version | 2 +- .../main/java/net/kdt/pojavlaunch/Tools.java | 18 +++++++++--------- ...auncherPreferenceMiscellaneousFragment.java | 7 +++++++ .../src/main/res/values/strings.xml | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app_pojavlauncher/src/main/assets/components/lwjgl3/version b/app_pojavlauncher/src/main/assets/components/lwjgl3/version index 4244770f8..1a312aaae 100644 --- a/app_pojavlauncher/src/main/assets/components/lwjgl3/version +++ b/app_pojavlauncher/src/main/assets/components/lwjgl3/version @@ -1 +1 @@ -1694961457757 \ No newline at end of file +1694975384776 \ No newline at end of file diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index 21e3f9514..a2487ec18 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -41,7 +41,6 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.NotificationManagerCompat; -import androidx.core.content.res.TypedArrayUtils; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentTransaction; @@ -1091,20 +1090,21 @@ public final class Tools { } } + public static boolean checkVulkanSupport(PackageManager packageManager) { + if(SDK_INT >= Build.VERSION_CODES.N) { + return packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_LEVEL) && + packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION); + } + return false; + } + /** Return the renderers that are compatible with this device */ public static RenderersList getCompatibleRenderers(Context context) { if(sCompatibleRenderers != null) return sCompatibleRenderers; Resources resources = context.getResources(); String[] defaultRenderers = resources.getStringArray(R.array.renderer_values); String[] defaultRendererNames = resources.getStringArray(R.array.renderer); - PackageManager packageManager = context.getPackageManager(); - boolean deviceHasVulkan; - if (SDK_INT >= Build.VERSION_CODES.N) { - deviceHasVulkan = packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_LEVEL) && - packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION); - }else{ - deviceHasVulkan = false; - } + boolean deviceHasVulkan = checkVulkanSupport(context.getPackageManager()); // Currently, only 32-bit x86 does not have the Zink binary boolean deviceHasZinkBinary = !(Architecture.is32BitsDevice() && Architecture.isx86Device()); List rendererIds = new ArrayList<>(defaultRenderers.length); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceMiscellaneousFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceMiscellaneousFragment.java index ebb665b9a..bde8e7609 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceMiscellaneousFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceMiscellaneousFragment.java @@ -2,11 +2,18 @@ package net.kdt.pojavlaunch.prefs.screens; import android.os.Bundle; +import androidx.preference.Preference; + import net.kdt.pojavlaunch.R; +import net.kdt.pojavlaunch.Tools; public class LauncherPreferenceMiscellaneousFragment extends LauncherPreferenceFragment { @Override public void onCreatePreferences(Bundle b, String str) { addPreferencesFromResource(R.xml.pref_misc); + Preference driverPreference = findPreference("zinkPreferSystemDriver"); + if(!Tools.checkVulkanSupport(driverPreference.getContext().getPackageManager())) { + driverPreference.setVisible(false); + } } } diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 98904cd64..2a96298ff 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -410,7 +410,7 @@ Search for modpacks Use system Vulkan driver - Force the launcher to use the system Vulkan driver instead of Turnip on Adreno GPUs. Only affects Zink. + Force the launcher to use the system Vulkan driver instead of Turnip on Adreno GPUs. Only affects Zink and mods that use Vulkan. Install Apply