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())
|
||||
.setJavaAgents(javaAgents)
|
||||
.setBEGesture(vs.isBeGesture())
|
||||
.setVkDriverSystem(vs.isVKDriverSystem())
|
||||
.setRenderer(vs.getRenderer());
|
||||
|
||||
File json = getModpackConfiguration(version);
|
||||
|
|
|
@ -296,6 +296,20 @@ public final class VersionSetting implements Cloneable {
|
|||
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 final class VersionSetting implements Cloneable {
|
|||
scaleFactorProperty.addListener(listener);
|
||||
isolateGameDirProperty.addListener(listener);
|
||||
beGestureProperty.addListener(listener);
|
||||
VKDriverSystemProperty.addListener(listener);
|
||||
controllerProperty.addListener(listener);
|
||||
rendererProperty.addListener(listener);
|
||||
}
|
||||
|
@ -391,6 +406,7 @@ public final class VersionSetting implements Cloneable {
|
|||
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 final class VersionSetting implements Cloneable {
|
|||
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 final class VersionSetting implements Cloneable {
|
|||
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));
|
||||
|
|
|
@ -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 @@ public class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio
|
|||
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 class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio
|
|||
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 class VersionSettingPage extends FCLCommonPage implements ManageUI.Versio
|
|||
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());
|
||||
|
|
|
@ -449,6 +449,42 @@
|
|||
|
||||
</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
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
|
|
|
@ -751,6 +751,7 @@
|
|||
|
||||
<string name="settings_fcl_controller">Controller</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_gl4es" translatable="false">Holy GL4ES (OpenGL 2.1)</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 String serverIp;
|
||||
private boolean beGesture;
|
||||
private boolean vulkanDriverSystem;
|
||||
private FCLConfig.Renderer renderer;
|
||||
|
||||
/**
|
||||
|
@ -165,6 +166,13 @@ public class LaunchOptions implements Serializable {
|
|||
return beGesture;
|
||||
}
|
||||
|
||||
/**
|
||||
* vulkan Driver System
|
||||
*/
|
||||
public boolean isVKDriverSystem() {
|
||||
return vulkanDriverSystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renderer
|
||||
*/
|
||||
|
@ -293,6 +301,13 @@ public class LaunchOptions implements Serializable {
|
|||
return options.beGesture;
|
||||
}
|
||||
|
||||
/**
|
||||
* vulkanDriverSystem
|
||||
*/
|
||||
public boolean isVKDriverSystem() {
|
||||
return options.vulkanDriverSystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renderer
|
||||
*/
|
||||
|
@ -384,6 +399,11 @@ public class LaunchOptions implements Serializable {
|
|||
return this;
|
||||
}
|
||||
|
||||
public Builder setVkDriverSystem(boolean vulkanDriverSystem) {
|
||||
options.vulkanDriverSystem = vulkanDriverSystem;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setRenderer(FCLConfig.Renderer renderer) {
|
||||
options.renderer = renderer;
|
||||
return this;
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.jaredrummler.android.device.DeviceName;
|
|||
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 @@ public class FCLauncher {
|
|||
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<String, String> envMap) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue