This commit is contained in:
ShirosakiMio 2024-08-20 16:06:27 +08:00
parent c6c5a4ba5a
commit 02833d69ad
4 changed files with 31 additions and 35 deletions

View File

@ -47,8 +47,8 @@ public class FCLInput implements View.OnCapturedPointerListener, GamepadHandler
public static final HashMap<Integer, Integer> MOUSE_MAP = new HashMap<Integer, Integer>() { public static final HashMap<Integer, Integer> MOUSE_MAP = new HashMap<Integer, Integer>() {
{ {
put(MOUSE_LEFT, FCLBridge.Button1); put(MOUSE_LEFT, FCLBridge.Button1);
put(MOUSE_MIDDLE, FCLBridge.Button2); put(MOUSE_MIDDLE, FCLBridge.Button3);
put(MOUSE_RIGHT, FCLBridge.Button3); put(MOUSE_RIGHT, FCLBridge.Button2);
put(MOUSE_SCROLL_UP, FCLBridge.Button4); put(MOUSE_SCROLL_UP, FCLBridge.Button4);
put(MOUSE_SCROLL_DOWN, FCLBridge.Button5); put(MOUSE_SCROLL_DOWN, FCLBridge.Button5);
} }

View File

@ -172,7 +172,6 @@ public final class FCLGameLauncher extends DefaultLauncher {
@Override @Override
public FCLBridge launch() throws IOException, InterruptedException { public FCLBridge launch() throws IOException, InterruptedException {
FileUtils.deleteDirectoryQuietly(new File("/data/user_de/0/com.tungsten.fcl/code_cache"));
generateOptionsTxt(); generateOptionsTxt();
// Sodium // Sodium
modifyIfConfigDetected("sodium-mixins.properties", "", "mixin.features.chunk_rendering=false", false, FCLConfig.Renderer.RENDERER_GL4ES, FCLConfig.Renderer.RENDERER_VGPU); modifyIfConfigDetected("sodium-mixins.properties", "", "mixin.features.chunk_rendering=false", false, FCLConfig.Renderer.RENDERER_GL4ES, FCLConfig.Renderer.RENDERER_VGPU);

View File

@ -202,16 +202,12 @@ public class FCLauncher {
envMap.put("MESA_LOADER_DRIVER_OVERRIDE", "zink"); envMap.put("MESA_LOADER_DRIVER_OVERRIDE", "zink");
envMap.put("VTEST_SOCKET_NAME", new File(config.getContext().getCacheDir().getAbsolutePath(), ".virgl_test").getAbsolutePath()); envMap.put("VTEST_SOCKET_NAME", new File(config.getContext().getCacheDir().getAbsolutePath(), ".virgl_test").getAbsolutePath());
if (renderer == FCLConfig.Renderer.RENDERER_VIRGL) { if (renderer == FCLConfig.Renderer.RENDERER_VIRGL) {
envMap.put("GALLIUM_DRIVER", "virpipe");
envMap.put("OSMESA_NO_FLUSH_FRONTBUFFER", "1"); envMap.put("OSMESA_NO_FLUSH_FRONTBUFFER", "1");
envMap.put("POJAV_RENDERER","opengles3_virgl"); envMap.put("POJAV_RENDERER","gallium_virgl");
} else if (renderer == FCLConfig.Renderer.RENDERER_ZINK) { } else if (renderer == FCLConfig.Renderer.RENDERER_ZINK) {
envMap.put("GALLIUM_DRIVER", "zink");
envMap.put("POJAV_RENDERER","vulkan_zink"); envMap.put("POJAV_RENDERER","vulkan_zink");
} else if (renderer == FCLConfig.Renderer.RENDERER_FREEDRENO) { } else if (renderer == FCLConfig.Renderer.RENDERER_FREEDRENO) {
envMap.put("GALLIUM_DRIVER", "freedreno"); envMap.put("POJAV_RENDERER","gallium_freedreno");
envMap.put("MESA_LOADER_DRIVER_OVERRIDE", "kgsl");
envMap.put("POJAV_RENDERER","vulkan_zink");
} }
} }
} }

View File

@ -166,7 +166,7 @@ static void set_vulkan_ptr(void* ptr) {
} }
void load_vulkan() { void load_vulkan() {
if(getenv("VULKAN_DRIVER_SYSTEM") == NULL && if (getenv("VULKAN_DRIVER_SYSTEM") == NULL &&
android_get_device_api_level() >= 28) { // the loader does not support below that android_get_device_api_level() >= 28) { // the loader does not support below that
#ifdef ADRENO_POSSIBLE #ifdef ADRENO_POSSIBLE
void* result = load_turnip_vulkan(); void* result = load_turnip_vulkan();
@ -186,28 +186,35 @@ void load_vulkan() {
int pojavInitOpenGL() { int pojavInitOpenGL() {
// Only affects GL4ES as of now // Only affects GL4ES as of now
const char *forceVsync = getenv("FORCE_VSYNC"); const char *forceVsync = getenv("FORCE_VSYNC");
if (strcmp(forceVsync, "true") == 0) if (!strcmp(forceVsync, "true"))
pojav_environ->force_vsync = true; pojav_environ->force_vsync = true;
// NOTE: Override for now. // NOTE: Override for now.
const char *renderer = getenv("POJAV_RENDERER"); const char *renderer = getenv("POJAV_RENDERER");
if (strcmp(renderer, "opengles3_virgl") == 0) { if (!strncmp("opengles", renderer, 8)) {
pojav_environ->config_renderer = RENDERER_GL4ES;
set_gl_bridge_tbl();
} else if (!strcmp(renderer, "gallium_virgl")) {
pojav_environ->config_renderer = RENDERER_VIRGL; pojav_environ->config_renderer = RENDERER_VIRGL;
setenv("GALLIUM_DRIVER", "virpipe", 1);
loadSymbolsVirGL(); loadSymbolsVirGL();
virglInit(); virglInit();
return 0; return 0;
} else if (strncmp("opengles", renderer, 8) == 0) { } else if (!strcmp(renderer, "vulkan_zink")) {
pojav_environ->config_renderer = RENDERER_GL4ES;
set_gl_bridge_tbl();
} else if (strcmp(renderer, "vulkan_zink") == 0) {
pojav_environ->config_renderer = RENDERER_VK_ZINK; pojav_environ->config_renderer = RENDERER_VK_ZINK;
load_vulkan(); load_vulkan();
setenv("GALLIUM_DRIVER","zink",1); setenv("GALLIUM_DRIVER", "zink", 1);
set_osm_bridge_tbl();
} else if (!strcmp(renderer, "gallium_freedreno")) {
pojav_environ->config_renderer = RENDERER_VK_ZINK;
load_vulkan();
setenv("GALLIUM_DRIVER", "freedreno", 1);
setenv("MESA_LOADER_DRIVER_OVERRIDE", "kgsl", 1);
set_osm_bridge_tbl(); set_osm_bridge_tbl();
} }
if(br_init()) {
br_setup_window(); if(br_init()) br_setup_window();
}
return 0; return 0;
} }
@ -239,29 +246,25 @@ EXTERNAL_API void pojavSetWindowHint(int hint, int value) {
} }
EXTERNAL_API void pojavSwapBuffers() { EXTERNAL_API void pojavSwapBuffers() {
if (pojav_environ->config_renderer == RENDERER_VIRGL) { if (pojav_environ->config_renderer == RENDERER_VIRGL)
virglSwapBuffers(); virglSwapBuffers();
} else { else br_swap_buffers();
br_swap_buffers();
}
} }
EXTERNAL_API void pojavMakeCurrent(void* window) { EXTERNAL_API void pojavMakeCurrent(void* window) {
if (pojav_environ->config_renderer == RENDERER_VIRGL) if (pojav_environ->config_renderer == RENDERER_VIRGL)
{
virglMakeCurrent(window); virglMakeCurrent(window);
} else { else br_make_current((basic_render_window_t*)window);
br_make_current((basic_render_window_t*)window);
}
} }
EXTERNAL_API void* pojavCreateContext(void* contextSrc) { EXTERNAL_API void* pojavCreateContext(void* contextSrc) {
if (pojav_environ->config_renderer == RENDERER_VULKAN) { if (pojav_environ->config_renderer == RENDERER_VULKAN)
return (void *) pojav_environ->pojavWindow; return (void *) pojav_environ->pojavWindow;
} else if (pojav_environ->config_renderer == RENDERER_VIRGL) {
if (pojav_environ->config_renderer == RENDERER_VIRGL)
return virglCreateContext(contextSrc); return virglCreateContext(contextSrc);
}
return br_init_context((basic_render_window_t*)contextSrc); return br_init_context((basic_render_window_t*)contextSrc);
} }
@ -276,10 +279,8 @@ Java_org_lwjgl_vulkan_VK_getVulkanDriverHandle(ABI_COMPAT JNIEnv *env, ABI_COMPA
} }
EXTERNAL_API void pojavSwapInterval(int interval) { EXTERNAL_API void pojavSwapInterval(int interval) {
if (pojav_environ->config_renderer == RENDERER_VIRGL) { if (pojav_environ->config_renderer == RENDERER_VIRGL)
virglSwapInterval(interval); virglSwapInterval(interval);
} else { else br_swap_interval(interval);
br_swap_interval(interval);
}
} }