VirGL: more changes for Android 7.0 support

This commit is contained in:
Duy Tran Khanh 2021-11-22 06:10:16 +07:00
parent 3ee46f49c4
commit 401e092eee
3 changed files with 19 additions and 7 deletions

View File

@ -201,6 +201,7 @@ public class JREUtils {
public static void setJavaEnvironment(LoggableActivity ctx) throws Throwable { public static void setJavaEnvironment(LoggableActivity ctx) throws Throwable {
Map<String, String> envMap = new ArrayMap<>(); Map<String, String> envMap = new ArrayMap<>();
envMap.put("POJAV_NATIVEDIR", ctx.getApplicationInfo().nativeLibraryDir);
envMap.put("JAVA_HOME", Tools.DIR_HOME_JRE); envMap.put("JAVA_HOME", Tools.DIR_HOME_JRE);
envMap.put("HOME", Tools.DIR_GAME_NEW); envMap.put("HOME", Tools.DIR_GAME_NEW);
envMap.put("TMPDIR", ctx.getCacheDir().getAbsolutePath()); envMap.put("TMPDIR", ctx.getCacheDir().getAbsolutePath());

View File

@ -719,17 +719,19 @@ void dlsym_OSMesa(void* dl_handle) {
} }
bool loadSymbols() { bool loadSymbols() {
char* fileName; char* fileName = calloc(1, 1024);
char* fileNameExt; char* fileNameExt = calloc(1, 1024);
switch (config_renderer) { switch (config_renderer) {
case RENDERER_VK_ZINK: case RENDERER_VK_ZINK:
fileName = "libOSMesa_8.so"; sprintf(fileName, "%s/libOSMesa_8.so", getenv("POJAV_NATIVEDIR"));
fileNameExt = "libOSMesa.so.8"; sprintf(fileNameExt, "%s/libOSMesa.so.8", getenv("POJAV_NATIVEDIR"));
break; break;
case RENDERER_GL4ES: case RENDERER_GL4ES:
fileName = "libEGL.so"; sprintf(fileName, "libEGL.so");
char* eglLib = getenv("POJAVEXEC_EGL"); char* eglLib = getenv("POJAVEXEC_EGL");
fileNameExt = eglLib == NULL?"":eglLib; if (eglLib) {
sprintf(fileNameExt, eglLib);
}
break; break;
} }
void* dl_handle = dlopen(fileNameExt,RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE); void* dl_handle = dlopen(fileNameExt,RTLD_NOW|RTLD_GLOBAL|RTLD_NODELETE);
@ -758,6 +760,9 @@ bool loadSymbols() {
dlsym_EGL(dl_handle); dlsym_EGL(dl_handle);
break; break;
} }
free(fileName);
free(fileNameExt);
} }
bool loadSymbolsVirGL() { bool loadSymbolsVirGL() {
@ -766,13 +771,19 @@ bool loadSymbolsVirGL() {
config_renderer = RENDERER_VK_ZINK; config_renderer = RENDERER_VK_ZINK;
loadSymbols(); loadSymbols();
config_renderer = RENDERER_VIRGL; config_renderer = RENDERER_VIRGL;
void *handle = dlopen("libvirgl_test_server.so", RTLD_LAZY);
char* fileName = calloc(1, 1024);
sprintf(fileName, "%s/libvirgl_test_server.so", getenv("POJAV_NATIVEDIR"));
void *handle = dlopen(fileName, RTLD_LAZY);
printf("VirGL: libvirgl_test_server = %p\n", handle); printf("VirGL: libvirgl_test_server = %p\n", handle);
if (!handle) { if (!handle) {
printf("VirGL: %s\n", dlerror()); printf("VirGL: %s\n", dlerror());
} }
vtest_main_p = dlsym(handle, "vtest_main"); vtest_main_p = dlsym(handle, "vtest_main");
vtest_swap_buffers_p = dlsym(handle, "vtest_swap_buffers"); vtest_swap_buffers_p = dlsym(handle, "vtest_swap_buffers");
free(fileName);
} }
int pojavInit() { int pojavInit() {