From 6a0339c87405380ce500a9de0a06f9e060d28613 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:36:52 +0800 Subject: [PATCH 1/9] Feat[Zink]: Allow use of system Vulkan driver --- .../main/res/layout/page_version_setting.xml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/FCL/src/main/res/layout/page_version_setting.xml b/FCL/src/main/res/layout/page_version_setting.xml index 6012ab5a0..561f2eaf9 100644 --- a/FCL/src/main/res/layout/page_version_setting.xml +++ b/FCL/src/main/res/layout/page_version_setting.xml @@ -449,6 +449,42 @@ + + + + + + + + + + + + Date: Thu, 4 Jul 2024 20:42:54 +0800 Subject: [PATCH 2/9] Update strings.xml --- FCL/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/FCL/src/main/res/values/strings.xml b/FCL/src/main/res/values/strings.xml index 3f646f6b1..84b407265 100644 --- a/FCL/src/main/res/values/strings.xml +++ b/FCL/src/main/res/values/strings.xml @@ -751,6 +751,7 @@ Controller BE Gesture + Allow zink to use System Vulkan driver Renderer Holy GL4ES (OpenGL 2.1) VirGLRenderer (OpenGL 4.3) From 09cecdbbf34eed52197cbbed011f7d33da401176 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:44:08 +0800 Subject: [PATCH 3/9] Feat[Zink]: Allow use of system Vulkan driver --- .../tungsten/fcl/setting/VersionSetting.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/FCL/src/main/java/com/tungsten/fcl/setting/VersionSetting.java b/FCL/src/main/java/com/tungsten/fcl/setting/VersionSetting.java index a53b63878..4bc245e94 100644 --- a/FCL/src/main/java/com/tungsten/fcl/setting/VersionSetting.java +++ b/FCL/src/main/java/com/tungsten/fcl/setting/VersionSetting.java @@ -296,6 +296,20 @@ public void setBeGesture(boolean beGesture) { beGestureProperty.set(beGesture); } + private final BooleanProperty VKDriverSystemProperty = new SimpleBooleanProperty(this, "vulkanDriverSystem", true); + + public BooleanProperty VKDriverSystemProperty() { + return VKDriverSystemProperty; + } + + public boolean isVKDriverSystem() { + return VKDriverSystemProperty.get(); + } + + public void setVKDriverSystem(boolean vulkanDriverSystem) { + VKDriverSystemProperty.set(vulkanDriverSystem); + } + private final StringProperty controllerProperty = new SimpleStringProperty(this, "controller", "Default"); public StringProperty controllerProperty() { @@ -370,6 +384,7 @@ public void addPropertyChangedListener(InvalidationListener listener) { scaleFactorProperty.addListener(listener); isolateGameDirProperty.addListener(listener); beGestureProperty.addListener(listener); + VKDriverSystemProperty.addListener(listener); controllerProperty.addListener(listener); rendererProperty.addListener(listener); } @@ -391,6 +406,7 @@ public VersionSetting clone() { versionSetting.setScaleFactor(getScaleFactor()); versionSetting.setIsolateGameDir(isIsolateGameDir()); versionSetting.setBeGesture(isBeGesture()); + versionSetting.setVKDriverSystem(isVKDriverSystem()); versionSetting.setController(getController()); versionSetting.setRenderer(getRenderer()); return versionSetting; @@ -415,6 +431,7 @@ public JsonElement serialize(VersionSetting src, Type typeOfSrc, JsonSerializati obj.addProperty("notCheckGame", src.isNotCheckGame()); obj.addProperty("notCheckJVM", src.isNotCheckJVM()); obj.addProperty("beGesture", src.isBeGesture()); + obj.addProperty("vulkanDriverSystem", src.isVKDriverSystem()); obj.addProperty("controller", src.getController()); obj.addProperty("renderer", src.getRenderer().ordinal()); obj.addProperty("isolateGameDir", src.isIsolateGameDir()); @@ -446,6 +463,7 @@ public VersionSetting deserialize(JsonElement json, Type typeOfT, JsonDeserializ vs.setNotCheckGame(Optional.ofNullable(obj.get("notCheckGame")).map(JsonElement::getAsBoolean).orElse(false)); vs.setNotCheckJVM(Optional.ofNullable(obj.get("notCheckJVM")).map(JsonElement::getAsBoolean).orElse(false)); vs.setBeGesture(Optional.ofNullable(obj.get("beGesture")).map(JsonElement::getAsBoolean).orElse(false)); + vs.setVKDriverSystem(Optional.ofNullable(obj.get("vulkanDriverSystem")).map(JsonElement::getAsBoolean).orElse(false)); vs.setController(Optional.ofNullable(obj.get("controller")).map(JsonElement::getAsString).orElse("Default")); vs.setRenderer(FCLConfig.Renderer.values()[Optional.ofNullable(obj.get("renderer")).map(JsonElement::getAsInt).orElse(FCLConfig.Renderer.RENDERER_GL4ES.ordinal())]); vs.setIsolateGameDir(Optional.ofNullable(obj.get("isolateGameDir")).map(JsonElement::getAsBoolean).orElse(false)); From da7d5fbadeef8017bd25bd79ccbf16fd666c25a1 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:45:12 +0800 Subject: [PATCH 4/9] Feat[Zink]: Allow Zink to use System Vulkan driver --- .../java/com/tungsten/fcl/ui/manage/VersionSettingPage.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/FCL/src/main/java/com/tungsten/fcl/ui/manage/VersionSettingPage.java b/FCL/src/main/java/com/tungsten/fcl/ui/manage/VersionSettingPage.java index 8ab6b5b74..63fa1882b 100644 --- a/FCL/src/main/java/com/tungsten/fcl/ui/manage/VersionSettingPage.java +++ b/FCL/src/main/java/com/tungsten/fcl/ui/manage/VersionSettingPage.java @@ -75,6 +75,7 @@ public class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio private FCLSwitch isolateWorkingDirSwitch; private FCLSwitch beGestureSwitch; + private FCLSwitch vulkanDriverSystemSwitch; private FCLSwitch noGameCheckSwitch; private FCLSwitch noJVMCheckSwitch; @@ -119,6 +120,7 @@ private void create() { specialSettingSwitch.addCheckedChangeListener(); isolateWorkingDirSwitch = findViewById(R.id.edit_game_dir); beGestureSwitch = findViewById(R.id.edit_controller_injector); + vulkanDriverSystemSwitch = findViewById(R.id.vulkan_driver_system); noGameCheckSwitch = findViewById(R.id.edit_not_check_game); noJVMCheckSwitch = findViewById(R.id.edit_not_check_java); @@ -286,6 +288,7 @@ public void loadVersion(Profile profile, String versionId) { FXUtils.unbindBoolean(noGameCheckSwitch, lastVersionSetting.notCheckGameProperty()); FXUtils.unbindBoolean(noJVMCheckSwitch, lastVersionSetting.notCheckJVMProperty()); FXUtils.unbindBoolean(beGestureSwitch, lastVersionSetting.beGestureProperty()); + FXUtils.unbindBoolean(vulkanDriverSystemSwitch, lastVersionSetting.VKDriverSystemProperty()); FXUtils.unbindSelection(javaSpinner, lastVersionSetting.javaProperty()); FXUtils.unbindSelection(rendererSpinner, lastVersionSetting.rendererProperty()); scaleFactorSeekbar.percentProgressProperty().unbindBidirectional(lastVersionSetting.scaleFactorProperty()); @@ -307,6 +310,7 @@ public void loadVersion(Profile profile, String versionId) { FXUtils.bindBoolean(noGameCheckSwitch, versionSetting.notCheckGameProperty()); FXUtils.bindBoolean(noJVMCheckSwitch, versionSetting.notCheckJVMProperty()); FXUtils.bindBoolean(beGestureSwitch, versionSetting.beGestureProperty()); + FXUtils.bindBoolean(vulkanDriverSystemSwitch, versionSetting.VKDriverSystemProperty()); FXUtils.bindSelection(javaSpinner, versionSetting.javaProperty()); FXUtils.bindSelection(rendererSpinner, versionSetting.rendererProperty()); scaleFactorSeekbar.percentProgressProperty().bindBidirectional(versionSetting.scaleFactorProperty()); From 404e4618c6d1f0de0418a71c628d4da672e86958 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:45:39 +0800 Subject: [PATCH 5/9] Feat[Zink]: Allow Zink to use System Vulkan driver --- FCL/src/main/java/com/tungsten/fcl/game/FCLGameRepository.java | 1 + 1 file changed, 1 insertion(+) diff --git a/FCL/src/main/java/com/tungsten/fcl/game/FCLGameRepository.java b/FCL/src/main/java/com/tungsten/fcl/game/FCLGameRepository.java index be85d43cb..27d28ea2a 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/FCLGameRepository.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/FCLGameRepository.java @@ -348,6 +348,7 @@ public LaunchOptions getLaunchOptions(String version, JavaVersion javaVersion, F .setServerIp(vs.getServerIp()) .setJavaAgents(javaAgents) .setBEGesture(vs.isBeGesture()) + .setVkDriverSystem(vs.isVKDriverSystem()) .setRenderer(vs.getRenderer()); File json = getModpackConfiguration(version); From 84a5ef42d731ce15ef1d3a8cf3cfda6c0dae1e0e Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:54:32 +0800 Subject: [PATCH 6/9] Feat[Zink]: Allow Zink to use System Vulkan driver --- .../tungsten/fclcore/game/LaunchOptions.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java b/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java index 35951f29f..b5ffb3584 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java @@ -46,6 +46,7 @@ public class LaunchOptions implements Serializable { private Integer height; private String serverIp; private boolean beGesture; + private boolean vulkanDriverSystem; private FCLConfig.Renderer renderer; /** @@ -165,6 +166,13 @@ public boolean isBeGesture() { return beGesture; } + /** + * vulkan Driver System + */ + public boolean isVKDriverSystem() { + return vulkanDriverSystem; + } + /** * Renderer */ @@ -293,6 +301,13 @@ public boolean isBeGesture() { return options.beGesture; } + /** + * vulkanDriverSystem + */ + public boolean isVKDriverSystem() { + return options.vulkanDriverSystem; + } + /** * Renderer */ @@ -384,6 +399,11 @@ public Builder setBEGesture(boolean beGesture) { return this; } + public Builder setVkDriverSystem(boolean beGesture) { + options.vulkanDriverSystem = vulkanDriverSystem; + return this; + } + public Builder setRenderer(FCLConfig.Renderer renderer) { options.renderer = renderer; return this; From 01f3539949ddd67f697180e505d842c71c3fdf92 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Thu, 4 Jul 2024 21:04:17 +0800 Subject: [PATCH 7/9] Feat[Zink]: Allow Zink to use System Vulkan driver --- .../src/main/java/com/tungsten/fclauncher/FCLauncher.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/FCLauncher/src/main/java/com/tungsten/fclauncher/FCLauncher.java b/FCLauncher/src/main/java/com/tungsten/fclauncher/FCLauncher.java index 8ed3941b8..5380173ef 100644 --- a/FCLauncher/src/main/java/com/tungsten/fclauncher/FCLauncher.java +++ b/FCLauncher/src/main/java/com/tungsten/fclauncher/FCLauncher.java @@ -12,6 +12,7 @@ import com.tungsten.fclauncher.bridge.FCLBridge; import com.tungsten.fclauncher.plugins.FFmpegPlugin; import com.tungsten.fclauncher.utils.Architecture; +import com.tungsten.fclcore.game.LaunchOptions; import java.io.BufferedReader; import java.io.File; @@ -139,6 +140,9 @@ private static void addCommonEnv(FCLConfig config, HashMap envMa envMap.put("PATH", FFmpegPlugin.libraryPath + ":" + envMap.get("PATH")); envMap.put("LD_LIBRARY_PATH", FFmpegPlugin.libraryPath); } + if (options.isVKDriverSystem()) { + envMap.put("VULKAN_DRIVER_SYSTEM", "1"); + } } private static void addRendererEnv(FCLConfig config, HashMap envMap) { From 3c427e2a12e1f65d25f0b545f564439880d20437 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Thu, 4 Jul 2024 21:08:00 +0800 Subject: [PATCH 8/9] Feat[Zink]: Allow Zink to use System Vulkan driver --- FCLauncher/src/main/jni/glfw/osmesa_context.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/FCLauncher/src/main/jni/glfw/osmesa_context.c b/FCLauncher/src/main/jni/glfw/osmesa_context.c index a29d30e00..41b1eeaac 100644 --- a/FCLauncher/src/main/jni/glfw/osmesa_context.c +++ b/FCLauncher/src/main/jni/glfw/osmesa_context.c @@ -165,14 +165,16 @@ static void set_vulkan_ptr(void* ptr) { } void load_vulkan() { + if(getenv("VULKAN_DRIVER_SYSTEM") == NULL && android_get_device_api_level() >= 28) { #ifdef ADRENO_POSSIBLE - void* result = load_turnip_vulkan(); - if(result != NULL) { - printf("AdrenoSupp: Loaded Turnip, loader address: %p\n", result); - set_vulkan_ptr(result); - return; - } + void* result = load_turnip_vulkan(); + if(result != NULL) { + printf("AdrenoSupp: Loaded Turnip, loader address: %p\n", result); + set_vulkan_ptr(result); + return; + } #endif + } printf("OSMDroid: loading vulkan regularly...\n"); void* vulkan_ptr = dlopen("libvulkan.so", RTLD_LAZY | RTLD_LOCAL); printf("OSMDroid: loaded vulkan, ptr=%p\n", vulkan_ptr); From 035f1e1245d276ebe7e256b82c6fd7ffa55e1480 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Fri, 5 Jul 2024 10:50:33 +0800 Subject: [PATCH 9/9] Update LaunchOptions.java --- .../src/main/java/com/tungsten/fclcore/game/LaunchOptions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java b/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java index b5ffb3584..0e1bf72f3 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/game/LaunchOptions.java @@ -399,7 +399,7 @@ public Builder setBEGesture(boolean beGesture) { return this; } - public Builder setVkDriverSystem(boolean beGesture) { + public Builder setVkDriverSystem(boolean vulkanDriverSystem) { options.vulkanDriverSystem = vulkanDriverSystem; return this; }