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;
}