diff --git a/.gitignore b/.gitignore index 235cf03e66..7fe10873d0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,37 @@ local.properties app_pojavlauncher/.cxx/ .vs/ /curseforge_key.txt + +arc_dns_injector/bin/main/git/artdeell/arcdns/ArcDNSInjectorAgent.class +arc_dns_injector/bin/main/git/artdeell/arcdns/CacheUtil_J8.class +arc_dns_injector/bin/main/git/artdeell/arcdns/CacheUtil_J9.class +arc_dns_injector/bin/main/git/artdeell/arcdns/CacheUtilCommons.class +jre_lwjgl3glfw/bin/main/android/util/ArrayMap.class +jre_lwjgl3glfw/bin/main/android/util/ArrayMap$1.class +jre_lwjgl3glfw/bin/main/android/util/ContainerHelpers.class +jre_lwjgl3glfw/bin/main/android/util/EmptyArray.class +jre_lwjgl3glfw/bin/main/android/util/MapCollections.class +jre_lwjgl3glfw/bin/main/android/util/MapCollections$ArrayIterator.class +jre_lwjgl3glfw/bin/main/android/util/MapCollections$EntrySet.class +jre_lwjgl3glfw/bin/main/android/util/MapCollections$KeySet.class +jre_lwjgl3glfw/bin/main/android/util/MapCollections$MapIterator.class +jre_lwjgl3glfw/bin/main/android/util/MapCollections$ValuesCollection.class +jre_lwjgl3glfw/bin/main/android/util/Objects.class +jre_lwjgl3glfw/bin/main/net/java/openjdk/cacio/ctc/ExternalMouseReader.class +jre_lwjgl3glfw/bin/main/net/java/openjdk/cacio/ctc/InfdevGrabHandler.class +jre_lwjgl3glfw/bin/main/net/minecraft/client/ClientBrandRetriever.java.z +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/CallbackBridge.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/Callbacks.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFW.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFW$Functions.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeCocoa.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeEGL.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeNSGL.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeOSMesa.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeWayland.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeWGL.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeWin32.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWNativeX11.class +jre_lwjgl3glfw/bin/main/org/lwjgl/glfw/GLFWWindowProperties.class +jre_lwjgl3glfw/bin/main/org/lwjgl/input/InfdevMouse.class +jre_lwjgl3glfw/bin/main/org/lwjgl/opengl/GLCapabilities.class diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index bddacdfc18..3d89ca9f90 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -238,6 +238,9 @@ public static void setJavaEnvironment(Activity activity, String jreHome) throws if(LOCAL_RENDERER.equals("vulkan_zink_standard")) { envMap.put("POJAVEXEC_OSMESA", "libOSMesa_std.so"); } + if(LOCAL_RENDERER.equals("vulkan_zink_pojav")) { + envMap.put("POJAVEXEC_OSMESA", "libOSMesa_pjv.so"); + } } if(LauncherPreferences.PREF_BIG_CORE_AFFINITY) envMap.put("POJAV_BIG_CORE_AFFINITY", "1"); envMap.put("AWTSTUB_WIDTH", Integer.toString(CallbackBridge.windowWidth > 0 ? CallbackBridge.windowWidth : CallbackBridge.physicalWidth)); @@ -505,12 +508,16 @@ public static String loadGraphicsLibrary(){ case "vulkan_zink_standard": renderLibrary = "libOSMesa_std.so"; break; + case "vulkan_zink_standard": + renderLibrary = "libOSMesa_pjv.so"; + break; + case "swrast": + case "panfrost_neo": case "vulkan_zink": case "adrhw_freedreno": renderLibrary = "libOSMesa.so"; break; case "opengles3_desktopgl_angle_vulkan" : renderLibrary = "libtinywrapper.so"; break; - case "opengles3_desktopgl_angle_vulkan_new" : renderLibrary = "libtinywrapper_new_angle.so"; break; default: Log.w("RENDER_LIBRARY", "No renderer selected, defaulting to opengles2"); renderLibrary = "libgl4es_114.so"; diff --git a/app_pojavlauncher/src/main/jni/Android.mk b/app_pojavlauncher/src/main/jni/Android.mk index 4790b3e844..c7940ffc4f 100644 --- a/app_pojavlauncher/src/main/jni/Android.mk +++ b/app_pojavlauncher/src/main/jni/Android.mk @@ -20,18 +20,6 @@ LOCAL_SRC_FILES := tinywrapper/main.c tinywrapper/string_utils.c LOCAL_C_INCLUDES := $(LOCAL_PATH)/tinywrapper include $(BUILD_SHARED_LIBRARY) -include $(CLEAR_VARS) -LOCAL_MODULE := angle_gles2_new -LOCAL_SRC_FILES := tinywrapper_new_angle/angle-gles/$(TARGET_ARCH_ABI)/libGLESv2_angle.so -include $(PREBUILT_SHARED_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_MODULE := tinywrapper_new_angle -LOCAL_SHARED_LIBRARIES := angle_gles2_new -LOCAL_SRC_FILES := tinywrapper_new_angle/main.c tinywrapper_new_angle/string_utils.c -LOCAL_C_INCLUDES := $(LOCAL_PATH)/tinywrapper_new_angle -include $(BUILD_SHARED_LIBRARY) - include $(CLEAR_VARS) # Link GLESv2 for test LOCAL_LDLIBS := -ldl -llog -landroid diff --git a/app_pojavlauncher/src/main/jni/egl_bridge.c b/app_pojavlauncher/src/main/jni/egl_bridge.c index c851545607..3f8e5cd966 100644 --- a/app_pojavlauncher/src/main/jni/egl_bridge.c +++ b/app_pojavlauncher/src/main/jni/egl_bridge.c @@ -256,7 +256,7 @@ int pojavInitOpenGL() { } else if (strncmp("opengles", renderer, 8) == 0) { solcraft_environ->config_renderer = RENDERER_GL4ES; set_gl_bridge_tbl(); - } else if (strcmp(renderer, "vulkan_zink") == 0 || strcmp(renderer, "vulkan_zink_standard") == 0) { + } else if (strcmp(renderer, "vulkan_zink") == 0 || strcmp(renderer, "vulkan_zink_standard") == 0 || strcmp(renderer, "vulkan_zink_pojav") == 0) { solcraft_environ->config_renderer = RENDERER_VK_ZINK; load_vulkan(); setenv("MESA_LOADER_DRIVER_OVERRIDE","zink",1); @@ -271,9 +271,12 @@ int pojavInitOpenGL() { setenv("MESA_GL_VERSION_OVERRIDE", "3.2",false); setenv("MESA_GLSL_VERSION_OVERRIDE", "150",false); set_osm_bridge_tbl(); - } else if (strcmp(renderer, "malihw_panfrost") == 0) { + } else if (strcmp(renderer, "malihw_panfrost") == 0 || strcmp(renderer, "panfrost_neo") == 0) { solcraft_environ->config_renderer = RENDERER_VK_ZINK; setenv("GALLIUM_DRIVER", "panfrost", 1); + //if (strcmp(renderer, "panfrost_neo") == 0) + // setenv("MESA_LOADER_DRIVER_OVERRIDE","panfrost",1); + // May be needed setenv("PAN_DEBUG","gofaster",1); set_osm_bridge_tbl(); } else if (strcmp(renderer, "adrhw_freedreno") == 0) { @@ -281,6 +284,10 @@ int pojavInitOpenGL() { setenv("GALLIUM_DRIVER", "freedreno", 1); setenv("MESA_LOADER_DRIVER_OVERRIDE", "kgsl", 1); set_osm_bridge_tbl(); + } else if (strcmp(renderer, "swrast") == 0) { + solcraft_environ->config_renderer = RENDERER_VK_ZINK; + setenv("GALLIUM_DRIVER", "swrast", 1); + set_osm_bridge_tbl(); } if(solcraft_environ->config_renderer == RENDERER_VK_ZINK || solcraft_environ->config_renderer == RENDERER_GL4ES) { if(br_init()) { diff --git a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/arm64-v8a/libGLESv2_angle.so b/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/arm64-v8a/libGLESv2_angle.so deleted file mode 100644 index 90fe53900e..0000000000 Binary files a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/arm64-v8a/libGLESv2_angle.so and /dev/null differ diff --git a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/armeabi-v7a/libGLESv2_angle.so b/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/armeabi-v7a/libGLESv2_angle.so deleted file mode 100644 index c32c895522..0000000000 Binary files a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/armeabi-v7a/libGLESv2_angle.so and /dev/null differ diff --git a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/x86/libGLESv2_angle.so b/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/x86/libGLESv2_angle.so deleted file mode 100644 index 1c41c003e3..0000000000 Binary files a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/x86/libGLESv2_angle.so and /dev/null differ diff --git a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/x86_64/libGLESv2_angle.so b/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/x86_64/libGLESv2_angle.so deleted file mode 100644 index 69d0891bdd..0000000000 Binary files a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/angle-gles/x86_64/libGLESv2_angle.so and /dev/null differ diff --git a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/main.c b/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/main.c deleted file mode 100644 index 519533e231..0000000000 --- a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/main.c +++ /dev/null @@ -1,201 +0,0 @@ -//#import -#include -#include - -#include "GL/gl.h" -#include "GLES3/gl32.h" -#include "string_utils.h" - -#define LOOKUP_FUNC(func) \ - if (!gles_##func) { \ - gles_##func = dlsym(RTLD_NEXT, #func); \ - } if (!gles_##func) { \ - gles_##func = dlsym(RTLD_DEFAULT, #func); \ - } - -int proxy_width, proxy_height, proxy_intformat, maxTextureSize; - -void glBindFragDataLocationEXT(GLuint program, GLuint colorNumber, const char * name); - -void(*gles_glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params); -void(*gles_glShaderSource)(GLuint shader, GLsizei count, const GLchar * const *string, const GLint *length); -void(*gles_glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *data); - -void glBindFragDataLocation(GLuint program, GLuint colorNumber, const char * name) { - glBindFragDataLocationEXT(program, colorNumber, name); -} - -void glClearDepth(GLdouble depth) { - glClearDepthf(depth); -} - -void *glMapBuffer(GLenum target, GLenum access) { - // Use: GL_EXT_map_buffer_range - - GLenum access_range; - GLint length; - - switch (target) { - // GL 4.2 - case GL_ATOMIC_COUNTER_BUFFER: - - // GL 4.3 - case GL_DISPATCH_INDIRECT_BUFFER: - case GL_SHADER_STORAGE_BUFFER : - - // GL 4.4 - case GL_QUERY_BUFFER: - printf("ERROR: glMapBuffer unsupported target=0x%x", target); - break; // not supported for now - - case GL_DRAW_INDIRECT_BUFFER: - case GL_TEXTURE_BUFFER: - printf("ERROR: glMapBuffer unimplemented target=0x%x", target); - break; - } - - switch (access) { - case GL_READ_ONLY: - access_range = GL_MAP_READ_BIT; - break; - - case GL_WRITE_ONLY: - access_range = GL_MAP_WRITE_BIT; - break; - - case GL_READ_WRITE: - access_range = GL_MAP_READ_BIT | GL_MAP_WRITE_BIT; - break; - } - - glGetBufferParameteriv(target, GL_BUFFER_SIZE, &length); - return glMapBufferRange(target, 0, length, access_range); -} - -void glShaderSource(GLuint shader, GLsizei count, const GLchar * const *string, const GLint *length) { - LOOKUP_FUNC(glShaderSource) - - // DBG(printf("glShaderSource(%d, %d, %p, %p)\n", shader, count, string, length);) - char *source = NULL; - char *converted; - - // get the size of the shader sources and than concatenate in a single string - int l = 0; - for (int i=0; i= 0)?length[i]:strlen(string[i]); - if (source) free(source); - source = calloc(1, l+1); - if(length) { - for (int i=0; i= 0) - strncat(source, string[i], length[i]); - else - strcat(source, string[i]); - } - } else { - for (int i=0; i 120 - converted[10] = '2'; - } else if (converted[10] - '0' < 6) { - // 130, 140, 150 -> 330 - converted[9] = converted[10] = '3'; - } - } - // remove "core", is it safe? - if (!strncmp(&converted[13], "core", 4)) { - strncpy(&converted[13], "\n//c", 4); - } - } else { - converted = calloc(1, strlen(source) + 13); - strcpy(converted, "#version 120\n"); - strcpy(&converted[13], strdup(source)); - } - - int convertedLen = strlen(converted); - -#ifdef __APPLE__ - // patch OptiFine 1.17.x - if (FindString(converted, "\nuniform mat4 textureMatrix = mat4(1.0);")) { - InplaceReplace(converted, &convertedLen, "\nuniform mat4 textureMatrix = mat4(1.0);", "\n#define textureMatrix mat4(1.0)"); - } -#endif - - // some needed exts - const char* extensions = - "#extension GL_EXT_blend_func_extended : enable\n" - // For OptiFine (see patch above) - "#extension GL_EXT_shader_non_constant_global_initializers : enable\n"; - converted = InplaceInsert(GetLine(converted, 1), extensions, converted, &convertedLen); - - gles_glShaderSource(shader, 1, (const GLchar * const*)((converted)?(&converted):(&source)), NULL); - - free(source); - free(converted); -} - -int isProxyTexture(GLenum target) { - switch (target) { - case GL_PROXY_TEXTURE_1D: - case GL_PROXY_TEXTURE_2D: - case GL_PROXY_TEXTURE_3D: - case GL_PROXY_TEXTURE_RECTANGLE_ARB: - return 1; - } - return 0; -} - -static int inline nlevel(int size, int level) { - if(size) { - size>>=level; - if(!size) size=1; - } - return size; -} - -void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) { - LOOKUP_FUNC(glGetTexLevelParameteriv) - // NSLog("glGetTexLevelParameteriv(%x, %d, %x, %p)", target, level, pname, params); - if (isProxyTexture(target)) { - switch (pname) { - case GL_TEXTURE_WIDTH: - (*params) = nlevel(proxy_width,level); - break; - case GL_TEXTURE_HEIGHT: - (*params) = nlevel(proxy_height,level); - break; - case GL_TEXTURE_INTERNAL_FORMAT: - (*params) = proxy_intformat; - break; - } - } else { - gles_glGetTexLevelParameteriv(target, level, pname, params); - } -} - -void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *data) { - LOOKUP_FUNC(glTexImage2D) - if (isProxyTexture(target)) { - if (!maxTextureSize) { - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); - // maxTextureSize = 16384; - // NSLog(@"Maximum texture size: %d", maxTextureSize); - } - proxy_width = ((width<maxTextureSize)?0:width; - proxy_height = ((height<maxTextureSize)?0:height; - proxy_intformat = internalformat; - // swizzle_internalformat((GLenum *) &internalformat, format, type); - } else { - gles_glTexImage2D(target, level, internalformat, width, height, border, format, type, data); - } -} diff --git a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/string_utils.c b/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/string_utils.c deleted file mode 100644 index 9925739458..0000000000 --- a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/string_utils.c +++ /dev/null @@ -1,234 +0,0 @@ -#include -#include -#include - -#include "string_utils.h" - -const char* AllSeparators = " \t\n\r.,;()[]{}-<>+*/%&\\\"'^$=!:?"; - -char* ResizeIfNeeded(char* pBuffer, int *size, int addsize); - -char* InplaceReplace(char* pBuffer, int* size, const char* S, const char* D) -{ - int lS = strlen(S), lD = strlen(D); - pBuffer = ResizeIfNeeded(pBuffer, size, (lD-lS)*CountString(pBuffer, S)); - char* p = pBuffer; - while((p = strstr(p, S))) - { - // found an occurence of S - // check if good to replace, strchr also found '\0' :) - if(strchr(AllSeparators, p[lS])!=NULL && (p==pBuffer || strchr(AllSeparators, p[-1])!=NULL)) { - // move out rest of string - memmove(p+lD, p+lS, strlen(p)-lS+1); - // replace - memcpy(p, D, strlen(D)); - // next - p+=lD; - } else p+=lS; - } - - return pBuffer; -} - -char* InplaceInsert(char* pBuffer, const char* S, char* master, int* size) -{ - char* m = ResizeIfNeeded(master, size, strlen(S)); - if(m!=master) { - pBuffer += (m-master); - master = m; - } - char* p = pBuffer; - int lS = strlen(S), ll = strlen(pBuffer); - memmove(p+lS, p, ll+1); - memcpy(p, S, lS); - - return master; -} - -char* GetLine(char* pBuffer, int num) -{ - char *p = pBuffer; - while(num-- && (p=strstr(p, "\n"))) p+=strlen("\n"); - return (p)?p:pBuffer; -} - -int CountLine(const char* pBuffer) -{ - int n=0; - const char* p = pBuffer; - while((p=strstr(p, "\n"))) { - p+=strlen("\n"); - n++; - } - return n; -} - -int GetLineFor(const char* pBuffer, const char* S) -{ - int n=0; - const char* p = pBuffer; - const char* end = FindString(pBuffer, S); - if(!end) - return 0; - while((p=strstr(p, "\n"))) { - p+=strlen("\n"); - n++; - if(p>=end) - return n; - } - return n; -} - -int CountString(const char* pBuffer, const char* S) -{ - const char* p = pBuffer; - int lS = strlen(S); - int n = 0; - while((p = strstr(p, S))) - { - // found an occurence of S - // check if good to count, strchr also found '\0' :) - if(strchr(AllSeparators, p[lS])!=NULL && (p==pBuffer || strchr(AllSeparators, p[-1])!=NULL)) - n++; - p+=lS; - } - return n; -} - -const char* FindString(const char* pBuffer, const char* S) -{ - const char* p = pBuffer; - int lS = strlen(S); - while((p = strstr(p, S))) - { - // found an occurence of S - // check if good to count, strchr also found '\0' :) - if(strchr(AllSeparators, p[lS])!=NULL && (p==pBuffer || strchr(AllSeparators, p[-1])!=NULL)) - return p; - p+=lS; - } - return NULL; -} - -char* FindStringNC(char* pBuffer, const char* S) -{ - char* p = pBuffer; - int lS = strlen(S); - while((p = strstr(p, S))) - { - // found an occurence of S - // check if good to count, strchr also found '\0' :) - if(strchr(AllSeparators, p[lS])!=NULL && (p==pBuffer || strchr(AllSeparators, p[-1])!=NULL)) - return p; - p+=lS; - } - return NULL; -} - -char* ResizeIfNeeded(char* pBuffer, int *size, int addsize) { - char* p = pBuffer; - int newsize = strlen(pBuffer)+addsize+1; - if (newsize>*size) { - newsize += 100; - p = (char*)realloc(pBuffer, newsize); - *size=newsize; - } - return p; -} - -char* Append(char* pBuffer, int* size, const char* S) { - char* p =pBuffer; - p = ResizeIfNeeded(pBuffer, size, strlen(S)); - strcat(p, S); - return p; -} - -int isBlank(char c) { - switch(c) { - case ' ': - case '\t': - case '\n': - case '\r': - case ':': - case ',': - case ';': - case '/': - return 1; - default: - return 0; - } -} -char* StrNext(char *pBuffer, const char* S) { - if(!pBuffer) return NULL; - char *p = strstr(pBuffer, S); - return (p)?p:(p+strlen(S)); -} - -char* NextStr(char* pBuffer) { - if(!pBuffer) return NULL; - while(isBlank(*pBuffer)) - ++pBuffer; - return pBuffer; -} - -char* NextBlank(char* pBuffer) { - if(!pBuffer) return NULL; - while(!isBlank(*pBuffer)) - ++pBuffer; - return pBuffer; -} - -char* NextLine(char* pBuffer) { - if(!pBuffer) return NULL; - while(*pBuffer && *pBuffer!='\n') - ++pBuffer; - return pBuffer; -} - -const char* GetNextStr(char* pBuffer) { - static char buff[100] = {0}; - buff[0] = '\0'; - if(!pBuffer) return NULL; - char* p1 = NextStr(pBuffer); - if(!p1) return buff; - char* p2 = NextBlank(p1); - if(!p2) return buff; - int i=0; - while(p1!=p2 && i<99) - buff[i++] = *(p1++); - buff[i] = '\0'; - return buff; -} - -int CountStringSimple(char* pBuffer, const char* S) -{ - char* p = pBuffer; - int lS = strlen(S); - int n = 0; - while((p = strstr(p, S))) - { - // found an occurence of S - n++; - p+=lS; - } - return n; -} - -char* InplaceReplaceSimple(char* pBuffer, int* size, const char* S, const char* D) -{ - int lS = strlen(S), lD = strlen(D); - pBuffer = ResizeIfNeeded(pBuffer, size, (lD-lS)*CountStringSimple(pBuffer, S)); - char* p = pBuffer; - while((p = strstr(p, S))) - { - // found an occurence of S - // move out rest of string - memmove(p+lD, p+lS, strlen(p)-lS+1); - // replace - memcpy(p, D, strlen(D)); - // next - p+=lD; - } - - return pBuffer; -} \ No newline at end of file diff --git a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/string_utils.h b/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/string_utils.h deleted file mode 100644 index c0431806a1..0000000000 --- a/app_pojavlauncher/src/main/jni/tinywrapper_new_angle/string_utils.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _GL4ES_STRING_UTILS_H_ -#define _GL4ES_STRING_UTILS_H_ - -extern const char* AllSeparators; - -const char* FindString(const char* pBuffer, const char* S); -char* FindStringNC(char* pBuffer, const char* S); -int CountString(const char* pBuffer, const char* S); -char* ResizeIfNeeded(char* pBuffer, int *size, int addsize); -char* InplaceReplace(char* pBuffer, int* size, const char* S, const char* D); -char* Append(char* pBuffer, int* size, const char* S); -char* InplaceInsert(char* pBuffer, const char* S, char* master, int* size); -char* GetLine(char* pBuffer, int num); -int CountLine(const char* pBuffer); -int GetLineFor(const char* pBuffer, const char* S); // get the line number for 1st occurent of S in pBuffer -char* StrNext(char *pBuffer, const char* S); // mostly as strstr, but go after the substring if found -//"blank" (space, tab, cr, lf,":", ",", ";", ".", "/") -char* NextStr(char* pBuffer); // go to next non "blank" -char* NextBlank(char* pBuffer); // go to next "blank" -char* NextLine(char* pBuffer); // go to next new line (crlf not included) - -const char* GetNextStr(char* pBuffer); // get a (static) copy of next str (until next separator), can be a simple number or separator also - -// those function don't try to be smart with separators... -int CountStringSimple(char* pBuffer, const char* S); -char* InplaceReplaceSimple(char* pBuffer, int* size, const char* S, const char* D); - - -#endif // _GL4ES_STRING_UTILS_H_ \ No newline at end of file diff --git a/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libOSMesa_pjv.so b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libOSMesa_pjv.so new file mode 100644 index 0000000000..d124703232 Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libOSMesa_pjv.so differ diff --git a/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libOSMesa_pjv.so b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libOSMesa_pjv.so new file mode 100644 index 0000000000..3e61720c31 Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libOSMesa_pjv.so differ diff --git a/app_pojavlauncher/src/main/jniLibs/x86_64/libOSMesa_pjv.so b/app_pojavlauncher/src/main/jniLibs/x86_64/libOSMesa_pjv.so new file mode 100644 index 0000000000..e197e109bc Binary files /dev/null and b/app_pojavlauncher/src/main/jniLibs/x86_64/libOSMesa_pjv.so differ diff --git a/app_pojavlauncher/src/main/res/values/headings_array.xml b/app_pojavlauncher/src/main/res/values/headings_array.xml index f83f86d7f1..69f56e037a 100644 --- a/app_pojavlauncher/src/main/res/values/headings_array.xml +++ b/app_pojavlauncher/src/main/res/values/headings_array.xml @@ -5,11 +5,14 @@ @string/mcl_setting_renderer_vulkan_zink @string/mcl_setting_renderer_vulkan_zink_standard @string/mcl_setting_renderer_vulkan_zink_legacy + @string/mcl_setting_renderer_vulkan_zink_pojav @string/mcl_setting_renderer_angle - + @string/mcl_setting_renderer_virgl @string/mcl_setting_renderer_panfrost + @string/mcl_setting_renderer_panfrost_neo @string/mcl_setting_renderer_freedreno + @string/mcl_setting_renderer_swrast @@ -46,11 +49,14 @@ vulkan_zink vulkan_zink_standard vulkan_zink_legacy + vulkan_zink_pojav opengles3_desktopgl_angle_vulkan - + virgl malihw_panfrost + panfrost_neo adrhw_freedreno + swrast @string/global_default diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 9a299ae125..90405249cd 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -67,11 +67,14 @@ Holy GL4ES - (all versions, fast) UMP Zink (Vulkan) - (all versions, mid) ANGLE (Vulkan) - (1.17+ only, fast) - Updated ANGLE (Vulkan, currently same as regular ANGLE for some reason) - (1.17+ only, mid) Panfrost (64bit, Mali Gx10 only) - (all versions, mid) + Panfrost Neo UMP (currently broken) - (all versions, mid) Freedreno (Adreno 5xx and 6xx only) - (all versions, mid) Zink (Vulkan) - (all versions, mid) Legacy Zink (Vulkan) - (all versions, slow) + Upstream Zink (Vulkan) - (all versions, mid, compatibility issues) + swrast (CPU) - (all versions, very slow) + llvmpipe (CPU) - (all versions, slow) virglrenderer - (1.7+ only, mid) Release Snapshot