From 707616c59c8a9ab723d6b033b46696973012ee01 Mon Sep 17 00:00:00 2001 From: Vera-Firefly <87926662+Vera-Firefly@users.noreply.github.com> Date: Wed, 10 Apr 2024 19:03:35 +0800 Subject: [PATCH] Use perhaps a better form of access --- FCLauncher/src/main/jni/glfw/osmesa_context.c | 29 +++++++------------ FCLauncher/src/main/jni/glfw/window.c | 4 +-- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/FCLauncher/src/main/jni/glfw/osmesa_context.c b/FCLauncher/src/main/jni/glfw/osmesa_context.c index 329cbad4..a29d30e0 100644 --- a/FCLauncher/src/main/jni/glfw/osmesa_context.c +++ b/FCLauncher/src/main/jni/glfw/osmesa_context.c @@ -125,7 +125,7 @@ static void swapBuffersOSMesa(_GLFWwindow* window) if (strcmp(getenv("LIBGL_STRING"), "VirGLRenderer") == 0) { window->context.Finish(); vtest_swap_buffers(); - } else if (strcmp(getenv("LIBGL_STRING"), "Zink") == 0 || strcmp(getenv("LIBGL_STRING"), "Freedreno") == 0) { + } else { OSMesaContext context = OSMesaGetCurrentContext(); if (context == NULL) { printf("OSMesa: attempted to swap buffers without context!"); @@ -165,17 +165,14 @@ static void set_vulkan_ptr(void* ptr) { } void load_vulkan() { - if(getenv("FCL_ZINK_PREFER_SYSTEM_DRIVER") == NULL && android_get_device_api_level() >= 28) { - // the loader does not support below that #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; - } -#endif + 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); @@ -186,17 +183,13 @@ GLFWbool _glfwInitOSMesa(void) { if (_glfw.osmesa.handle) return GLFW_TRUE; - + + _glfw.osmesa.handle = _glfw_dlopen(getenv("LIBGL_NAME")); + const char *renderer = getenv("LIBGL_STRING"); - if (strcmp(renderer, "VirGLRenderer") == 0) { - _glfw.osmesa.handle = _glfw_dlopen("libOSMesa_81.so"); - } else if (strcmp(renderer, "Zink") == 0) { + if (strcmp(renderer, "Zink") == 0) load_vulkan(); - _glfw.osmesa.handle = _glfw_dlopen("libOSMesa_8.so"); - } else if (strcmp(renderer, "Freedreno") == 0) { - _glfw.osmesa.handle = _glfw_dlopen("libOSMesa_8.so"); - } if (!_glfw.osmesa.handle) { diff --git a/FCLauncher/src/main/jni/glfw/window.c b/FCLauncher/src/main/jni/glfw/window.c index 83714d6b..99705b25 100644 --- a/FCLauncher/src/main/jni/glfw/window.c +++ b/FCLauncher/src/main/jni/glfw/window.c @@ -229,7 +229,7 @@ void glfwDefaultWindowHints(void) // The default is OpenGL with minimum version 1.0 memset(&_glfw.hints.context, 0, sizeof(_glfw.hints.context)); _glfw.hints.context.client = GLFW_OPENGL_API; - _glfw.hints.context.source = (strcmp(getenv("LIBGL_NAME"), "libOSMesa_8.so") == 0 || strcmp(getenv("LIBGL_NAME"), "libOSMesa_81.so") == 0) ? GLFW_OSMESA_CONTEXT_API : GLFW_NATIVE_CONTEXT_API; + _glfw.hints.context.source = (strncmp(getenv("LIBGL_NAME"), "libOSMesa", 9) == 0) ? GLFW_OSMESA_CONTEXT_API : GLFW_NATIVE_CONTEXT_API; _glfw.hints.context.major = 1; _glfw.hints.context.minor = 0; @@ -355,7 +355,7 @@ GLFWAPI void glfwWindowHint(int hint, int value) _glfw.hints.context.client = value; return; case GLFW_CONTEXT_CREATION_API: - _glfw.hints.context.source = (strcmp(getenv("LIBGL_NAME"), "libOSMesa_8.so") == 0 || strcmp(getenv("LIBGL_NAME"), "libOSMesa_81.so") == 0) ? GLFW_OSMESA_CONTEXT_API : value; + _glfw.hints.context.source = (strncmp(getenv("LIBGL_NAME"), "libOSMesa", 9) == 0) ? GLFW_OSMESA_CONTEXT_API : value; return; case GLFW_CONTEXT_VERSION_MAJOR: _glfw.hints.context.major = value;