Feat[Zink]: Allow Zink to use System Vulkan driver (#434)
* Feat[Zink]: Allow use of system Vulkan driver * Update strings.xml * Feat[Zink]: Allow use of system Vulkan driver * Feat[Zink]: Allow Zink to use System Vulkan driver * Feat[Zink]: Allow Zink to use System Vulkan driver * Feat[Zink]: Allow Zink to use System Vulkan driver * Feat[Zink]: Allow Zink to use System Vulkan driver * Feat[Zink]: Allow Zink to use System Vulkan driver * Update LaunchOptions.java
This commit is contained in:
parent
cf49426f4d
commit
cba98f12b0
|
@ -348,6 +348,7 @@ public class FCLGameRepository extends DefaultGameRepository {
|
||||||
.setServerIp(vs.getServerIp())
|
.setServerIp(vs.getServerIp())
|
||||||
.setJavaAgents(javaAgents)
|
.setJavaAgents(javaAgents)
|
||||||
.setBEGesture(vs.isBeGesture())
|
.setBEGesture(vs.isBeGesture())
|
||||||
|
.setVkDriverSystem(vs.isVKDriverSystem())
|
||||||
.setRenderer(vs.getRenderer());
|
.setRenderer(vs.getRenderer());
|
||||||
|
|
||||||
File json = getModpackConfiguration(version);
|
File json = getModpackConfiguration(version);
|
||||||
|
|
|
@ -296,6 +296,20 @@ public final class VersionSetting implements Cloneable {
|
||||||
beGestureProperty.set(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");
|
private final StringProperty controllerProperty = new SimpleStringProperty(this, "controller", "Default");
|
||||||
|
|
||||||
public StringProperty controllerProperty() {
|
public StringProperty controllerProperty() {
|
||||||
|
@ -370,6 +384,7 @@ public final class VersionSetting implements Cloneable {
|
||||||
scaleFactorProperty.addListener(listener);
|
scaleFactorProperty.addListener(listener);
|
||||||
isolateGameDirProperty.addListener(listener);
|
isolateGameDirProperty.addListener(listener);
|
||||||
beGestureProperty.addListener(listener);
|
beGestureProperty.addListener(listener);
|
||||||
|
VKDriverSystemProperty.addListener(listener);
|
||||||
controllerProperty.addListener(listener);
|
controllerProperty.addListener(listener);
|
||||||
rendererProperty.addListener(listener);
|
rendererProperty.addListener(listener);
|
||||||
}
|
}
|
||||||
|
@ -391,6 +406,7 @@ public final class VersionSetting implements Cloneable {
|
||||||
versionSetting.setScaleFactor(getScaleFactor());
|
versionSetting.setScaleFactor(getScaleFactor());
|
||||||
versionSetting.setIsolateGameDir(isIsolateGameDir());
|
versionSetting.setIsolateGameDir(isIsolateGameDir());
|
||||||
versionSetting.setBeGesture(isBeGesture());
|
versionSetting.setBeGesture(isBeGesture());
|
||||||
|
versionSetting.setVKDriverSystem(isVKDriverSystem());
|
||||||
versionSetting.setController(getController());
|
versionSetting.setController(getController());
|
||||||
versionSetting.setRenderer(getRenderer());
|
versionSetting.setRenderer(getRenderer());
|
||||||
return versionSetting;
|
return versionSetting;
|
||||||
|
@ -415,6 +431,7 @@ public final class VersionSetting implements Cloneable {
|
||||||
obj.addProperty("notCheckGame", src.isNotCheckGame());
|
obj.addProperty("notCheckGame", src.isNotCheckGame());
|
||||||
obj.addProperty("notCheckJVM", src.isNotCheckJVM());
|
obj.addProperty("notCheckJVM", src.isNotCheckJVM());
|
||||||
obj.addProperty("beGesture", src.isBeGesture());
|
obj.addProperty("beGesture", src.isBeGesture());
|
||||||
|
obj.addProperty("vulkanDriverSystem", src.isVKDriverSystem());
|
||||||
obj.addProperty("controller", src.getController());
|
obj.addProperty("controller", src.getController());
|
||||||
obj.addProperty("renderer", src.getRenderer().ordinal());
|
obj.addProperty("renderer", src.getRenderer().ordinal());
|
||||||
obj.addProperty("isolateGameDir", src.isIsolateGameDir());
|
obj.addProperty("isolateGameDir", src.isIsolateGameDir());
|
||||||
|
@ -446,6 +463,7 @@ public final class VersionSetting implements Cloneable {
|
||||||
vs.setNotCheckGame(Optional.ofNullable(obj.get("notCheckGame")).map(JsonElement::getAsBoolean).orElse(false));
|
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.setNotCheckJVM(Optional.ofNullable(obj.get("notCheckJVM")).map(JsonElement::getAsBoolean).orElse(false));
|
||||||
vs.setBeGesture(Optional.ofNullable(obj.get("beGesture")).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.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.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));
|
vs.setIsolateGameDir(Optional.ofNullable(obj.get("isolateGameDir")).map(JsonElement::getAsBoolean).orElse(false));
|
||||||
|
|
|
@ -75,6 +75,7 @@ public class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio
|
||||||
|
|
||||||
private FCLSwitch isolateWorkingDirSwitch;
|
private FCLSwitch isolateWorkingDirSwitch;
|
||||||
private FCLSwitch beGestureSwitch;
|
private FCLSwitch beGestureSwitch;
|
||||||
|
private FCLSwitch vulkanDriverSystemSwitch;
|
||||||
private FCLSwitch noGameCheckSwitch;
|
private FCLSwitch noGameCheckSwitch;
|
||||||
private FCLSwitch noJVMCheckSwitch;
|
private FCLSwitch noJVMCheckSwitch;
|
||||||
|
|
||||||
|
@ -119,6 +120,7 @@ public class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio
|
||||||
specialSettingSwitch.addCheckedChangeListener();
|
specialSettingSwitch.addCheckedChangeListener();
|
||||||
isolateWorkingDirSwitch = findViewById(R.id.edit_game_dir);
|
isolateWorkingDirSwitch = findViewById(R.id.edit_game_dir);
|
||||||
beGestureSwitch = findViewById(R.id.edit_controller_injector);
|
beGestureSwitch = findViewById(R.id.edit_controller_injector);
|
||||||
|
vulkanDriverSystemSwitch = findViewById(R.id.vulkan_driver_system);
|
||||||
noGameCheckSwitch = findViewById(R.id.edit_not_check_game);
|
noGameCheckSwitch = findViewById(R.id.edit_not_check_game);
|
||||||
noJVMCheckSwitch = findViewById(R.id.edit_not_check_java);
|
noJVMCheckSwitch = findViewById(R.id.edit_not_check_java);
|
||||||
|
|
||||||
|
@ -286,6 +288,7 @@ public class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio
|
||||||
FXUtils.unbindBoolean(noGameCheckSwitch, lastVersionSetting.notCheckGameProperty());
|
FXUtils.unbindBoolean(noGameCheckSwitch, lastVersionSetting.notCheckGameProperty());
|
||||||
FXUtils.unbindBoolean(noJVMCheckSwitch, lastVersionSetting.notCheckJVMProperty());
|
FXUtils.unbindBoolean(noJVMCheckSwitch, lastVersionSetting.notCheckJVMProperty());
|
||||||
FXUtils.unbindBoolean(beGestureSwitch, lastVersionSetting.beGestureProperty());
|
FXUtils.unbindBoolean(beGestureSwitch, lastVersionSetting.beGestureProperty());
|
||||||
|
FXUtils.unbindBoolean(vulkanDriverSystemSwitch, lastVersionSetting.VKDriverSystemProperty());
|
||||||
FXUtils.unbindSelection(javaSpinner, lastVersionSetting.javaProperty());
|
FXUtils.unbindSelection(javaSpinner, lastVersionSetting.javaProperty());
|
||||||
FXUtils.unbindSelection(rendererSpinner, lastVersionSetting.rendererProperty());
|
FXUtils.unbindSelection(rendererSpinner, lastVersionSetting.rendererProperty());
|
||||||
scaleFactorSeekbar.percentProgressProperty().unbindBidirectional(lastVersionSetting.scaleFactorProperty());
|
scaleFactorSeekbar.percentProgressProperty().unbindBidirectional(lastVersionSetting.scaleFactorProperty());
|
||||||
|
@ -307,6 +310,7 @@ public class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio
|
||||||
FXUtils.bindBoolean(noGameCheckSwitch, versionSetting.notCheckGameProperty());
|
FXUtils.bindBoolean(noGameCheckSwitch, versionSetting.notCheckGameProperty());
|
||||||
FXUtils.bindBoolean(noJVMCheckSwitch, versionSetting.notCheckJVMProperty());
|
FXUtils.bindBoolean(noJVMCheckSwitch, versionSetting.notCheckJVMProperty());
|
||||||
FXUtils.bindBoolean(beGestureSwitch, versionSetting.beGestureProperty());
|
FXUtils.bindBoolean(beGestureSwitch, versionSetting.beGestureProperty());
|
||||||
|
FXUtils.bindBoolean(vulkanDriverSystemSwitch, versionSetting.VKDriverSystemProperty());
|
||||||
FXUtils.bindSelection(javaSpinner, versionSetting.javaProperty());
|
FXUtils.bindSelection(javaSpinner, versionSetting.javaProperty());
|
||||||
FXUtils.bindSelection(rendererSpinner, versionSetting.rendererProperty());
|
FXUtils.bindSelection(rendererSpinner, versionSetting.rendererProperty());
|
||||||
scaleFactorSeekbar.percentProgressProperty().bindBidirectional(versionSetting.scaleFactorProperty());
|
scaleFactorSeekbar.percentProgressProperty().bindBidirectional(versionSetting.scaleFactorProperty());
|
||||||
|
|
|
@ -449,6 +449,42 @@
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="@android:color/darker_gray"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:minHeight="48dp"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:paddingBottom="8dp">
|
||||||
|
|
||||||
|
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:auto_text_tint="true"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="@string/settings_fcl_vulkan_driver_system"/>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
|
||||||
|
<com.tungsten.fcllibrary.component.view.FCLSwitch
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:id="@+id/vulkan_driver_system"/>
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
|
|
|
@ -751,6 +751,7 @@
|
||||||
|
|
||||||
<string name="settings_fcl_controller">Controller</string>
|
<string name="settings_fcl_controller">Controller</string>
|
||||||
<string name="settings_fcl_controller_injector">BE Gesture</string>
|
<string name="settings_fcl_controller_injector">BE Gesture</string>
|
||||||
|
<string name="settings_fcl_vulkan_driver_system">Allow zink to use System Vulkan driver</string>
|
||||||
<string name="settings_fcl_renderer">Renderer</string>
|
<string name="settings_fcl_renderer">Renderer</string>
|
||||||
<string name="settings_fcl_renderer_gl4es" translatable="false">Holy GL4ES (OpenGL 2.1)</string>
|
<string name="settings_fcl_renderer_gl4es" translatable="false">Holy GL4ES (OpenGL 2.1)</string>
|
||||||
<string name="settings_fcl_renderer_virgl" translatable="false">VirGLRenderer (OpenGL 4.3)</string>
|
<string name="settings_fcl_renderer_virgl" translatable="false">VirGLRenderer (OpenGL 4.3)</string>
|
||||||
|
|
|
@ -46,6 +46,7 @@ public class LaunchOptions implements Serializable {
|
||||||
private Integer height;
|
private Integer height;
|
||||||
private String serverIp;
|
private String serverIp;
|
||||||
private boolean beGesture;
|
private boolean beGesture;
|
||||||
|
private boolean vulkanDriverSystem;
|
||||||
private FCLConfig.Renderer renderer;
|
private FCLConfig.Renderer renderer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,6 +166,13 @@ public class LaunchOptions implements Serializable {
|
||||||
return beGesture;
|
return beGesture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* vulkan Driver System
|
||||||
|
*/
|
||||||
|
public boolean isVKDriverSystem() {
|
||||||
|
return vulkanDriverSystem;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renderer
|
* Renderer
|
||||||
*/
|
*/
|
||||||
|
@ -293,6 +301,13 @@ public class LaunchOptions implements Serializable {
|
||||||
return options.beGesture;
|
return options.beGesture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* vulkanDriverSystem
|
||||||
|
*/
|
||||||
|
public boolean isVKDriverSystem() {
|
||||||
|
return options.vulkanDriverSystem;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renderer
|
* Renderer
|
||||||
*/
|
*/
|
||||||
|
@ -384,6 +399,11 @@ public class LaunchOptions implements Serializable {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder setVkDriverSystem(boolean vulkanDriverSystem) {
|
||||||
|
options.vulkanDriverSystem = vulkanDriverSystem;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder setRenderer(FCLConfig.Renderer renderer) {
|
public Builder setRenderer(FCLConfig.Renderer renderer) {
|
||||||
options.renderer = renderer;
|
options.renderer = renderer;
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -12,6 +12,7 @@ import com.jaredrummler.android.device.DeviceName;
|
||||||
import com.tungsten.fclauncher.bridge.FCLBridge;
|
import com.tungsten.fclauncher.bridge.FCLBridge;
|
||||||
import com.tungsten.fclauncher.plugins.FFmpegPlugin;
|
import com.tungsten.fclauncher.plugins.FFmpegPlugin;
|
||||||
import com.tungsten.fclauncher.utils.Architecture;
|
import com.tungsten.fclauncher.utils.Architecture;
|
||||||
|
import com.tungsten.fclcore.game.LaunchOptions;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -139,6 +140,9 @@ public class FCLauncher {
|
||||||
envMap.put("PATH", FFmpegPlugin.libraryPath + ":" + envMap.get("PATH"));
|
envMap.put("PATH", FFmpegPlugin.libraryPath + ":" + envMap.get("PATH"));
|
||||||
envMap.put("LD_LIBRARY_PATH", FFmpegPlugin.libraryPath);
|
envMap.put("LD_LIBRARY_PATH", FFmpegPlugin.libraryPath);
|
||||||
}
|
}
|
||||||
|
if (options.isVKDriverSystem()) {
|
||||||
|
envMap.put("VULKAN_DRIVER_SYSTEM", "1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addRendererEnv(FCLConfig config, HashMap<String, String> envMap) {
|
private static void addRendererEnv(FCLConfig config, HashMap<String, String> envMap) {
|
||||||
|
|
|
@ -165,6 +165,7 @@ static void set_vulkan_ptr(void* ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void load_vulkan() {
|
void load_vulkan() {
|
||||||
|
if(getenv("VULKAN_DRIVER_SYSTEM") == NULL && android_get_device_api_level() >= 28) {
|
||||||
#ifdef ADRENO_POSSIBLE
|
#ifdef ADRENO_POSSIBLE
|
||||||
void* result = load_turnip_vulkan();
|
void* result = load_turnip_vulkan();
|
||||||
if(result != NULL) {
|
if(result != NULL) {
|
||||||
|
@ -173,6 +174,7 @@ void load_vulkan() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
printf("OSMDroid: loading vulkan regularly...\n");
|
printf("OSMDroid: loading vulkan regularly...\n");
|
||||||
void* vulkan_ptr = dlopen("libvulkan.so", RTLD_LAZY | RTLD_LOCAL);
|
void* vulkan_ptr = dlopen("libvulkan.so", RTLD_LAZY | RTLD_LOCAL);
|
||||||
printf("OSMDroid: loaded vulkan, ptr=%p\n", vulkan_ptr);
|
printf("OSMDroid: loaded vulkan, ptr=%p\n", vulkan_ptr);
|
||||||
|
|
Loading…
Reference in New Issue