mirror of
https://github.com/2009scape/2009Scape-mobile.git
synced 2025-12-21 09:01:56 -07:00
Merge Zink renderer to upstream (#1585)
* OSMesa EGLBridge * It renders a gray screen with Zink! * Image * Added missing file: gl/glext.h * Added jniLibs/arm64-v8a/libOSMesa_8.so * Load built-in libOSMesa when dev lib not available * Added jniLibs/x86_64/libOSMesa_8.so * Start trying to use Android's internal APIs to manage framebuffers * Automatic stride to un-broke the image * DMA * Update lwjgl3 version * Update LauncherPreferences.java Temporary force set, to fix #1121 * Remove ndk.abiFilters * Re-add ndk.abiFilters but for 64bit archs only * Fixed x86_64 libOSMesa_8.so * Fix buffer size * [WIP] Force enable VK ext for GL 3.0 * WIP force ext * Attempt get Zink GL 3.0 by force enable some exts * Just missing ;; * Mesa3D: set OpenGL version to 4.6 * Added Zink to renderer list * Fixed the renderer check * Maybe correct the switch between gl4es and zink * Update JREUtils.java fixes from https://github.com/sp614x/optifine/issues/420 * also set glsl version * [NOT TESTED] (DO NOT TRY DEVS ONLY) upstream mesa to staging mesa branch * upstream mesa once again * Revert "upstream mesa once again" This reverts commit ccb0f429b707c6fed1376809bb978e7eb8230222. * add arm32 * Enable building for arm32 * Attempt fix auto change to libname libOSMesa * Attempt fix (2/2)? * Added missed `break`, should fix gl4es crashes * Update JREUtils.java * Support OpenJDK 17 runtime environment (internal) * Update JREUtils.java * [zink] use RGBA instead of RGB Some mobile GPUs does not support RGB format, so switching to RGBA is necessary. However, native window is set to RGBX to ignore alpha channel. * Move jreReleaseList to here * Update BaseMainActivity.java * Fixes (#1525) * import java.util.Map * fix: String cannot be converted to boolean * Fixes * Put readJREReleaseProperties to try catch * Remove loading libtinyiconv.so (statically linked) * lets do this * upsteam to the staging branch of 21.0 * [zink] exports OpenGL 4.6 again Limit OpenGL version does nothing other than deny the game to use it, so limiting is probably useless. Also, this is a lie that user see "export OpenGL 4.6" in renderer list but see "OpenGL 3.2" when enter game. Therefore, change back to OpenGL 4.6. * New string: mcn_check_fail_vulkan_support * [not yet finish] error if GPU doesn’t have Vulkan * [not yet finished] error if vulkan is unsupported * Additional checks for Vulkan support state * Changes about gl4es renderers * Define new renderer: opengles2_5 g4es 1.1.4 Also, change how gl4es renderers works * Filter out "_5" * Don’t allow custom OpenGL libname from jvm args * Update strings.xml * Update headings_array.xml * Update headings_array.xml * Update strings.xml * Unreachable code * Enable build for 32-bit x86 (zink not added!) * Changes from upstream and security changes (#1575) * import java.util.Map * fix: String cannot be converted to boolean * Fixes * Put readJREReleaseProperties to try catch * Attempt to redirect signal handler to JVM * @artdeell: missed \n in printf * Missed include errno.h * Comment out last changes * try and optimise gl4es with flags * corect format * dont shrink textures * does notting * Fix issue #1199 * Filter out Session ID on new log pipe * int index * Debug: print all env vars to latestlog.txt Co-authored-by: artdeell Co-authored-by: rhjdvsgsgks Co-authored-by: LegacyGamerHD Co-authored-by: Boulay Mathias
This commit is contained in:
parent
76b185e3b5
commit
4a90c8f124
17 changed files with 16217 additions and 177 deletions
|
|
@ -1 +1 @@
|
||||||
20210131
|
20210328
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package net.kdt.pojavlaunch;
|
||||||
|
|
||||||
import android.app.*;
|
import android.app.*;
|
||||||
import android.content.*;
|
import android.content.*;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.*;
|
import android.graphics.*;
|
||||||
import android.os.*;
|
import android.os.*;
|
||||||
import android.util.*;
|
import android.util.*;
|
||||||
|
|
@ -65,6 +66,7 @@ public class BaseMainActivity extends LoggableActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private MinecraftGLView minecraftGLView;
|
private MinecraftGLView minecraftGLView;
|
||||||
private int guiScale;
|
private int guiScale;
|
||||||
private DisplayMetrics displayMetrics;
|
private DisplayMetrics displayMetrics;
|
||||||
|
|
@ -893,6 +895,10 @@ public class BaseMainActivity extends LoggableActivity {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
appendlnToLog("--------- beggining with launcher debug");
|
appendlnToLog("--------- beggining with launcher debug");
|
||||||
|
appendlnToLog("Info: Launcher version: " + BuildConfig.VERSION_NAME);
|
||||||
|
if (LauncherPreferences.PREF_RENDERER.equals("vulkan_zink")) {
|
||||||
|
checkVulkanZinkIsSupported();
|
||||||
|
}
|
||||||
checkLWJGL3Installed();
|
checkLWJGL3Installed();
|
||||||
|
|
||||||
jreReleaseList = JREUtils.readJREReleaseProperties();
|
jreReleaseList = JREUtils.readJREReleaseProperties();
|
||||||
|
|
@ -953,6 +959,16 @@ public class BaseMainActivity extends LoggableActivity {
|
||||||
appendlnToLog("Info: LWJGL3 directory: " + Arrays.toString(lwjgl3dir.list()));
|
appendlnToLog("Info: LWJGL3 directory: " + Arrays.toString(lwjgl3dir.list()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkVulkanZinkIsSupported() {
|
||||||
|
if (Tools.CURRENT_ARCHITECTURE.equals("x86")
|
||||||
|
|| Build.VERSION.SDK_INT < 25
|
||||||
|
|| !getPackageManager().hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_LEVEL)
|
||||||
|
|| !getPackageManager().hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION)) {
|
||||||
|
appendlnToLog("Error: Vulkan Zink renderer is not supported!");
|
||||||
|
throw new RuntimeException(getString(R.string. mcn_check_fail_vulkan_support));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void printStream(InputStream stream) {
|
public void printStream(InputStream stream) {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import androidx.appcompat.app.*;
|
||||||
import android.util.*;
|
import android.util.*;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
|
||||||
public class FatalErrorActivity extends BaseActivity
|
public class FatalErrorActivity extends AppCompatActivity
|
||||||
{
|
{
|
||||||
public static void showError(Context ctx, String savePath, boolean storageAllow, /* boolean isFatalErr, */ Throwable th) {
|
public static void showError(Context ctx, String savePath, boolean storageAllow, /* boolean isFatalErr, */ Throwable th) {
|
||||||
Intent ferrorIntent = new Intent(ctx, FatalErrorActivity.class);
|
Intent ferrorIntent = new Intent(ctx, FatalErrorActivity.class);
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,8 @@ public class PojavApplication extends Application
|
||||||
crashStream.append(" - Time: " + DateFormat.getDateTimeInstance().format(new Date()) + "\n");
|
crashStream.append(" - Time: " + DateFormat.getDateTimeInstance().format(new Date()) + "\n");
|
||||||
crashStream.append(" - Device: " + Build.PRODUCT + " " + Build.MODEL + "\n");
|
crashStream.append(" - Device: " + Build.PRODUCT + " " + Build.MODEL + "\n");
|
||||||
crashStream.append(" - Android version: " + Build.VERSION.RELEASE + "\n");
|
crashStream.append(" - Android version: " + Build.VERSION.RELEASE + "\n");
|
||||||
crashStream.append(" - Crash stack trace:\n");
|
crashStream.append(" - Crash stack trace:\n");
|
||||||
|
crashStream.append(" - Launcher version: " + BuildConfig.VERSION_NAME + "\n");
|
||||||
crashStream.append(Log.getStackTraceString(th));
|
crashStream.append(Log.getStackTraceString(th));
|
||||||
crashStream.close();
|
crashStream.close();
|
||||||
} catch (Throwable th2) {
|
} catch (Throwable th2) {
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ public final class Tools
|
||||||
// javaArgList.add("-Dorg.lwjgl.libname=liblwjgl3.so");
|
// javaArgList.add("-Dorg.lwjgl.libname=liblwjgl3.so");
|
||||||
// javaArgList.add("-Dorg.lwjgl.system.jemalloc.libname=libjemalloc.so");
|
// javaArgList.add("-Dorg.lwjgl.system.jemalloc.libname=libjemalloc.so");
|
||||||
|
|
||||||
overrideableArgList.add("-Dorg.lwjgl.opengl.libname=libgl4es_114.so");
|
overrideableArgList.add("-Dorg.lwjgl.opengl.libname=" + LauncherPreferences.PREF_CUSTOM_OPENGL_LIBNAME);
|
||||||
// overrideableArgList.add("-Dorg.lwjgl.opengl.libname=libgl4es_115.so");
|
// overrideableArgList.add("-Dorg.lwjgl.opengl.libname=libgl4es_115.so");
|
||||||
|
|
||||||
// javaArgList.add("-Dorg.lwjgl.opengl.libname=libRegal.so");
|
// javaArgList.add("-Dorg.lwjgl.opengl.libname=libRegal.so");
|
||||||
|
|
|
||||||
|
|
@ -57,8 +57,8 @@ public class LauncherPreferences
|
||||||
String DEFAULT_JAVA_ARGS =
|
String DEFAULT_JAVA_ARGS =
|
||||||
"-Xms" + (androidHeap > 800 ? 800 : androidHeap) + "m " +
|
"-Xms" + (androidHeap > 800 ? 800 : androidHeap) + "m " +
|
||||||
// (32bit) More than 800mb may make JVM not allocateable and crash
|
// (32bit) More than 800mb may make JVM not allocateable and crash
|
||||||
"-Xmx" + (doubleAndroidHeap > 800 ? 800 : doubleAndroidHeap) + "m"; /* "m " +
|
"-Xmx" + (doubleAndroidHeap > 800 ? 800 : doubleAndroidHeap) + "m";
|
||||||
|
/* "m " +
|
||||||
"-XX:+UseG1GC " +
|
"-XX:+UseG1GC " +
|
||||||
"-XX:+ParallelRefProcEnabled " +
|
"-XX:+ParallelRefProcEnabled " +
|
||||||
"-XX:MaxGCPauseMillis=200 " +
|
"-XX:MaxGCPauseMillis=200 " +
|
||||||
|
|
@ -81,11 +81,28 @@ public class LauncherPreferences
|
||||||
PREF_CUSTOM_JAVA_ARGS = DEFAULT_JAVA_ARGS;
|
PREF_CUSTOM_JAVA_ARGS = DEFAULT_JAVA_ARGS;
|
||||||
DEFAULT_PREF.edit().putString("javaArgs", DEFAULT_JAVA_ARGS).commit();
|
DEFAULT_PREF.edit().putString("javaArgs", DEFAULT_JAVA_ARGS).commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (PREF_RENDERER) {
|
||||||
|
case "opengles2":
|
||||||
|
case "opengles2_5":
|
||||||
|
PREF_CUSTOM_OPENGL_LIBNAME = "libgl4es_114.so";
|
||||||
|
break;
|
||||||
|
case "opengles3":
|
||||||
|
PREF_CUSTOM_OPENGL_LIBNAME = "libgl4es_115.so";
|
||||||
|
break;
|
||||||
|
case "vulkan_zink":
|
||||||
|
PREF_CUSTOM_OPENGL_LIBNAME = "libOSMesa_8.so";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("Undefined renderer: " + PREF_RENDERER);
|
||||||
|
}
|
||||||
|
|
||||||
String argLwjglLibname = "-Dorg.lwjgl.opengl.libname=";
|
String argLwjglLibname = "-Dorg.lwjgl.opengl.libname=";
|
||||||
for (String arg : PREF_CUSTOM_JAVA_ARGS.split(" ")) {
|
for (String arg : PREF_CUSTOM_JAVA_ARGS.split(" ")) {
|
||||||
if (arg.startsWith(argLwjglLibname)) {
|
if (arg.startsWith(argLwjglLibname)) {
|
||||||
PREF_CUSTOM_OPENGL_LIBNAME = arg.substring(argLwjglLibname.length());
|
// purge arg
|
||||||
|
DEFAULT_PREF.edit().putString("javaArgs",
|
||||||
|
PREF_CUSTOM_JAVA_ARGS.replace(arg, "")).commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ public class JREUtils
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
public static void initJavaRuntime() {
|
public static void initJavaRuntime() {
|
||||||
dlopen(findInLdLibPath("libtinyiconv.so"));
|
|
||||||
dlopen(findInLdLibPath("libjli.so"));
|
dlopen(findInLdLibPath("libjli.so"));
|
||||||
dlopen(findInLdLibPath("libjvm.so"));
|
dlopen(findInLdLibPath("libjvm.so"));
|
||||||
dlopen(findInLdLibPath("libverify.so"));
|
dlopen(findInLdLibPath("libverify.so"));
|
||||||
|
|
@ -221,12 +220,21 @@ public class JREUtils
|
||||||
envMap.put("LIBGL_NOTEXMAT", "1");
|
envMap.put("LIBGL_NOTEXMAT", "1");
|
||||||
|
|
||||||
envMap.put("MESA_GLSL_CACHE_DIR", ctx.getCacheDir().getAbsolutePath());
|
envMap.put("MESA_GLSL_CACHE_DIR", ctx.getCacheDir().getAbsolutePath());
|
||||||
|
envMap.put("MESA_GL_VERSION_OVERRIDE", "4.6");
|
||||||
|
envMap.put("MESA_GLSL_VERSION_OVERRIDE", "460");
|
||||||
|
envMap.put("force_glsl_extensions_warn", "true");
|
||||||
|
envMap.put("allow_higher_compat_version", "true");
|
||||||
|
envMap.put("allow_glsl_extension_directive_midshader", "true");
|
||||||
|
envMap.put("MESA_LOADER_DRIVER_OVERRIDE", "zink");
|
||||||
|
|
||||||
envMap.put("LD_LIBRARY_PATH", LD_LIBRARY_PATH);
|
envMap.put("LD_LIBRARY_PATH", LD_LIBRARY_PATH);
|
||||||
envMap.put("PATH", Tools.DIR_HOME_JRE + "/bin:" + Os.getenv("PATH"));
|
envMap.put("PATH", Tools.DIR_HOME_JRE + "/bin:" + Os.getenv("PATH"));
|
||||||
|
|
||||||
envMap.put("REGAL_GL_VENDOR", "Android");
|
envMap.put("REGAL_GL_VENDOR", "Android");
|
||||||
envMap.put("REGAL_GL_RENDERER", "Regal");
|
envMap.put("REGAL_GL_RENDERER", "Regal");
|
||||||
envMap.put("REGAL_GL_VERSION", "4.5");
|
envMap.put("REGAL_GL_VERSION", "4.5");
|
||||||
|
|
||||||
|
envMap.put("POJAV_RENDERER", LauncherPreferences.PREF_RENDERER);
|
||||||
|
|
||||||
envMap.put("AWTSTUB_WIDTH", Integer.toString(CallbackBridge.windowWidth > 0 ? CallbackBridge.windowWidth : CallbackBridge.physicalWidth));
|
envMap.put("AWTSTUB_WIDTH", Integer.toString(CallbackBridge.windowWidth > 0 ? CallbackBridge.windowWidth : CallbackBridge.physicalWidth));
|
||||||
envMap.put("AWTSTUB_HEIGHT", Integer.toString(CallbackBridge.windowHeight > 0 ? CallbackBridge.windowHeight : CallbackBridge.physicalHeight));
|
envMap.put("AWTSTUB_HEIGHT", Integer.toString(CallbackBridge.windowHeight > 0 ? CallbackBridge.windowHeight : CallbackBridge.physicalHeight));
|
||||||
|
|
@ -245,11 +253,12 @@ public class JREUtils
|
||||||
if(!envMap.containsKey("LIBGL_ES")) {
|
if(!envMap.containsKey("LIBGL_ES")) {
|
||||||
int glesMajor = getDetectedVersion();
|
int glesMajor = getDetectedVersion();
|
||||||
Log.i("glesDetect","GLES version detected: "+glesMajor);
|
Log.i("glesDetect","GLES version detected: "+glesMajor);
|
||||||
|
|
||||||
if (glesMajor < 3) {
|
if (glesMajor < 3) {
|
||||||
//fallback to 2 since it's the minimum for the entire app
|
//fallback to 2 since it's the minimum for the entire app
|
||||||
envMap.put("LIBGL_ES","2");
|
envMap.put("LIBGL_ES","2");
|
||||||
} else if (LauncherPreferences.PREF_RENDERER.startsWith("opengles")) {
|
} else if (LauncherPreferences.PREF_RENDERER.startsWith("opengles")) {
|
||||||
envMap.put("LIBGL_ES", LauncherPreferences.PREF_RENDERER.replace("opengles", ""));
|
envMap.put("LIBGL_ES", LauncherPreferences.PREF_RENDERER.replace("opengles", "").replace("_5", ""));
|
||||||
} else {
|
} else {
|
||||||
// TODO if can: other backends such as Vulkan.
|
// TODO if can: other backends such as Vulkan.
|
||||||
// Sure, they should provide GLES 3 support.
|
// Sure, they should provide GLES 3 support.
|
||||||
|
|
@ -257,6 +266,7 @@ public class JREUtils
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Map.Entry<String, String> env : envMap.entrySet()) {
|
for (Map.Entry<String, String> env : envMap.entrySet()) {
|
||||||
|
ctx.appendlnToLog("Added custom env: " + env.getKey() + "=" + env.getValue());
|
||||||
Os.setenv(env.getKey(), env.getValue(), true);
|
Os.setenv(env.getKey(), env.getValue(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
2102
app_pojavlauncher/src/main/jni/GL/gl.h
Normal file
2102
app_pojavlauncher/src/main/jni/GL/gl.h
Normal file
File diff suppressed because it is too large
Load diff
12832
app_pojavlauncher/src/main/jni/GL/glext.h
Normal file
12832
app_pojavlauncher/src/main/jni/GL/glext.h
Normal file
File diff suppressed because it is too large
Load diff
332
app_pojavlauncher/src/main/jni/GL/osmesa.h
Normal file
332
app_pojavlauncher/src/main/jni/GL/osmesa.h
Normal file
|
|
@ -0,0 +1,332 @@
|
||||||
|
/*
|
||||||
|
* Mesa 3-D graphics library
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mesa Off-Screen rendering interface.
|
||||||
|
*
|
||||||
|
* This is an operating system and window system independent interface to
|
||||||
|
* Mesa which allows one to render images into a client-supplied buffer in
|
||||||
|
* main memory. Such images may manipulated or saved in whatever way the
|
||||||
|
* client wants.
|
||||||
|
*
|
||||||
|
* These are the API functions:
|
||||||
|
* OSMesaCreateContext - create a new Off-Screen Mesa rendering context
|
||||||
|
* OSMesaMakeCurrent - bind an OSMesaContext to a client's image buffer
|
||||||
|
* and make the specified context the current one.
|
||||||
|
* OSMesaDestroyContext - destroy an OSMesaContext
|
||||||
|
* OSMesaGetCurrentContext - return thread's current context ID
|
||||||
|
* OSMesaPixelStore - controls how pixels are stored in image buffer
|
||||||
|
* OSMesaGetIntegerv - return OSMesa state parameters
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* The limits on the width and height of an image buffer can be retrieved
|
||||||
|
* via OSMesaGetIntegerv(OSMESA_MAX_WIDTH/OSMESA_MAX_HEIGHT).
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef OSMESA_H
|
||||||
|
#define OSMESA_H
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include <GL/gl.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define OSMESA_MAJOR_VERSION 11
|
||||||
|
#define OSMESA_MINOR_VERSION 2
|
||||||
|
#define OSMESA_PATCH_VERSION 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Values for the format parameter of OSMesaCreateContext()
|
||||||
|
* New in version 2.0.
|
||||||
|
*/
|
||||||
|
#define OSMESA_COLOR_INDEX GL_COLOR_INDEX
|
||||||
|
#define OSMESA_RGBA GL_RGBA
|
||||||
|
#define OSMESA_BGRA 0x1
|
||||||
|
#define OSMESA_ARGB 0x2
|
||||||
|
#define OSMESA_RGB GL_RGB
|
||||||
|
#define OSMESA_BGR 0x4
|
||||||
|
#define OSMESA_RGB_565 0x5
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* OSMesaPixelStore() parameters:
|
||||||
|
* New in version 2.0.
|
||||||
|
*/
|
||||||
|
#define OSMESA_ROW_LENGTH 0x10
|
||||||
|
#define OSMESA_Y_UP 0x11
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Accepted by OSMesaGetIntegerv:
|
||||||
|
*/
|
||||||
|
#define OSMESA_WIDTH 0x20
|
||||||
|
#define OSMESA_HEIGHT 0x21
|
||||||
|
#define OSMESA_FORMAT 0x22
|
||||||
|
#define OSMESA_TYPE 0x23
|
||||||
|
#define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */
|
||||||
|
#define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Accepted in OSMesaCreateContextAttrib's attribute list.
|
||||||
|
*/
|
||||||
|
#define OSMESA_DEPTH_BITS 0x30
|
||||||
|
#define OSMESA_STENCIL_BITS 0x31
|
||||||
|
#define OSMESA_ACCUM_BITS 0x32
|
||||||
|
#define OSMESA_PROFILE 0x33
|
||||||
|
#define OSMESA_CORE_PROFILE 0x34
|
||||||
|
#define OSMESA_COMPAT_PROFILE 0x35
|
||||||
|
#define OSMESA_CONTEXT_MAJOR_VERSION 0x36
|
||||||
|
#define OSMESA_CONTEXT_MINOR_VERSION 0x37
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct osmesa_context *OSMesaContext;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create an Off-Screen Mesa rendering context. The only attribute needed is
|
||||||
|
* an RGBA vs Color-Index mode flag.
|
||||||
|
*
|
||||||
|
* Input: format - one of OSMESA_COLOR_INDEX, OSMESA_RGBA, OSMESA_BGRA,
|
||||||
|
* OSMESA_ARGB, OSMESA_RGB, or OSMESA_BGR.
|
||||||
|
* sharelist - specifies another OSMesaContext with which to share
|
||||||
|
* display lists. NULL indicates no sharing.
|
||||||
|
* Return: an OSMesaContext or 0 if error
|
||||||
|
*/
|
||||||
|
GLAPI OSMesaContext GLAPIENTRY
|
||||||
|
OSMesaCreateContext( GLenum format, OSMesaContext sharelist );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create an Off-Screen Mesa rendering context and specify desired
|
||||||
|
* size of depth buffer, stencil buffer and accumulation buffer.
|
||||||
|
* If you specify zero for depthBits, stencilBits, accumBits you
|
||||||
|
* can save some memory.
|
||||||
|
*
|
||||||
|
* New in Mesa 3.5
|
||||||
|
*/
|
||||||
|
GLAPI OSMesaContext GLAPIENTRY
|
||||||
|
OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
|
||||||
|
GLint accumBits, OSMesaContext sharelist);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create an Off-Screen Mesa rendering context with attribute list.
|
||||||
|
* The list is composed of (attribute, value) pairs and terminated with
|
||||||
|
* attribute==0. Supported Attributes:
|
||||||
|
*
|
||||||
|
* Attributes Values
|
||||||
|
* --------------------------------------------------------------------------
|
||||||
|
* OSMESA_FORMAT OSMESA_RGBA*, OSMESA_BGRA, OSMESA_ARGB, etc.
|
||||||
|
* OSMESA_DEPTH_BITS 0*, 16, 24, 32
|
||||||
|
* OSMESA_STENCIL_BITS 0*, 8
|
||||||
|
* OSMESA_ACCUM_BITS 0*, 16
|
||||||
|
* OSMESA_PROFILE OSMESA_COMPAT_PROFILE*, OSMESA_CORE_PROFILE
|
||||||
|
* OSMESA_CONTEXT_MAJOR_VERSION 1*, 2, 3
|
||||||
|
* OSMESA_CONTEXT_MINOR_VERSION 0+
|
||||||
|
*
|
||||||
|
* Note: * = default value
|
||||||
|
*
|
||||||
|
* We return a context version >= what's specified by OSMESA_CONTEXT_MAJOR/
|
||||||
|
* MINOR_VERSION for the given profile. For example, if you request a GL 1.4
|
||||||
|
* compat profile, you might get a GL 3.0 compat profile.
|
||||||
|
* Otherwise, null is returned if the version/profile is not supported.
|
||||||
|
*
|
||||||
|
* New in Mesa 11.2
|
||||||
|
*/
|
||||||
|
GLAPI OSMesaContext GLAPIENTRY
|
||||||
|
OSMesaCreateContextAttribs( const int *attribList, OSMesaContext sharelist );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Destroy an Off-Screen Mesa rendering context.
|
||||||
|
*
|
||||||
|
* Input: ctx - the context to destroy
|
||||||
|
*/
|
||||||
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaDestroyContext( OSMesaContext ctx );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Bind an OSMesaContext to an image buffer. The image buffer is just a
|
||||||
|
* block of memory which the client provides. Its size must be at least
|
||||||
|
* as large as width*height*sizeof(type). Its address should be a multiple
|
||||||
|
* of 4 if using RGBA mode.
|
||||||
|
*
|
||||||
|
* Image data is stored in the order of glDrawPixels: row-major order
|
||||||
|
* with the lower-left image pixel stored in the first array position
|
||||||
|
* (ie. bottom-to-top).
|
||||||
|
*
|
||||||
|
* Since the only type initially supported is GL_UNSIGNED_BYTE, if the
|
||||||
|
* context is in RGBA mode, each pixel will be stored as a 4-byte RGBA
|
||||||
|
* value. If the context is in color indexed mode, each pixel will be
|
||||||
|
* stored as a 1-byte value.
|
||||||
|
*
|
||||||
|
* If the context's viewport hasn't been initialized yet, it will now be
|
||||||
|
* initialized to (0,0,width,height).
|
||||||
|
*
|
||||||
|
* Input: ctx - the rendering context
|
||||||
|
* buffer - the image buffer memory
|
||||||
|
* type - data type for pixel components, only GL_UNSIGNED_BYTE
|
||||||
|
* supported now
|
||||||
|
* width, height - size of image buffer in pixels, at least 1
|
||||||
|
* Return: GL_TRUE if success, GL_FALSE if error because of invalid ctx,
|
||||||
|
* invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
|
||||||
|
* width>internal limit or height>internal limit.
|
||||||
|
*/
|
||||||
|
GLAPI GLboolean GLAPIENTRY
|
||||||
|
OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
|
||||||
|
GLsizei width, GLsizei height );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the current Off-Screen Mesa rendering context handle.
|
||||||
|
*/
|
||||||
|
GLAPI OSMesaContext GLAPIENTRY
|
||||||
|
OSMesaGetCurrentContext( void );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set pixel store/packing parameters for the current context.
|
||||||
|
* This is similar to glPixelStore.
|
||||||
|
* Input: pname - OSMESA_ROW_LENGTH
|
||||||
|
* specify actual pixels per row in image buffer
|
||||||
|
* 0 = same as image width (default)
|
||||||
|
* OSMESA_Y_UP
|
||||||
|
* zero = Y coordinates increase downward
|
||||||
|
* non-zero = Y coordinates increase upward (default)
|
||||||
|
* value - the value for the parameter pname
|
||||||
|
*
|
||||||
|
* New in version 2.0.
|
||||||
|
*/
|
||||||
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaPixelStore( GLint pname, GLint value );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return an integer value like glGetIntegerv.
|
||||||
|
* Input: pname -
|
||||||
|
* OSMESA_WIDTH return current image width
|
||||||
|
* OSMESA_HEIGHT return current image height
|
||||||
|
* OSMESA_FORMAT return image format
|
||||||
|
* OSMESA_TYPE return color component data type
|
||||||
|
* OSMESA_ROW_LENGTH return row length in pixels
|
||||||
|
* OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction
|
||||||
|
* value - pointer to integer in which to return result.
|
||||||
|
*/
|
||||||
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaGetIntegerv( GLint pname, GLint *value );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the depth buffer associated with an OSMesa context.
|
||||||
|
* Input: c - the OSMesa context
|
||||||
|
* Output: width, height - size of buffer in pixels
|
||||||
|
* bytesPerValue - bytes per depth value (2 or 4)
|
||||||
|
* buffer - pointer to depth buffer values
|
||||||
|
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
|
||||||
|
*
|
||||||
|
* New in Mesa 2.4.
|
||||||
|
*/
|
||||||
|
GLAPI GLboolean GLAPIENTRY
|
||||||
|
OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height,
|
||||||
|
GLint *bytesPerValue, void **buffer );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the color buffer associated with an OSMesa context.
|
||||||
|
* Input: c - the OSMesa context
|
||||||
|
* Output: width, height - size of buffer in pixels
|
||||||
|
* format - buffer format (OSMESA_FORMAT)
|
||||||
|
* buffer - pointer to depth buffer values
|
||||||
|
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
|
||||||
|
*
|
||||||
|
* New in Mesa 3.3.
|
||||||
|
*/
|
||||||
|
GLAPI GLboolean GLAPIENTRY
|
||||||
|
OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height,
|
||||||
|
GLint *format, void **buffer );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This typedef is new in Mesa 6.3.
|
||||||
|
*/
|
||||||
|
typedef void (*OSMESAproc)();
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return pointer to the named function.
|
||||||
|
* New in Mesa 4.1
|
||||||
|
* Return OSMESAproc in 6.3.
|
||||||
|
*/
|
||||||
|
GLAPI OSMESAproc GLAPIENTRY
|
||||||
|
OSMesaGetProcAddress( const char *funcName );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable/disable color clamping, off by default.
|
||||||
|
* New in Mesa 6.4.2
|
||||||
|
*/
|
||||||
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaColorClamp(GLboolean enable);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable/disable Gallium post-process filters.
|
||||||
|
* This should be called after a context is created, but before it is
|
||||||
|
* made current for the first time. After a context has been made
|
||||||
|
* current, this function has no effect.
|
||||||
|
* If the enable_value param is zero, the filter is disabled. Otherwise
|
||||||
|
* the filter is enabled, and the value may control the filter's quality.
|
||||||
|
* New in Mesa 10.0
|
||||||
|
*/
|
||||||
|
GLAPI void GLAPIENTRY
|
||||||
|
OSMesaPostprocess(OSMesaContext osmesa, const char *filter,
|
||||||
|
unsigned enable_value);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
File diff suppressed because it is too large
Load diff
BIN
app_pojavlauncher/src/main/jniLibs/arm64-v8a/libOSMesa_8.so
Normal file
BIN
app_pojavlauncher/src/main/jniLibs/arm64-v8a/libOSMesa_8.so
Normal file
Binary file not shown.
BIN
app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libOSMesa_8.so
Normal file
BIN
app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libOSMesa_8.so
Normal file
Binary file not shown.
BIN
app_pojavlauncher/src/main/jniLibs/x86_64/libOSMesa_8.so
Normal file
BIN
app_pojavlauncher/src/main/jniLibs/x86_64/libOSMesa_8.so
Normal file
Binary file not shown.
|
|
@ -8,12 +8,16 @@
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="renderer">
|
<string-array name="renderer">
|
||||||
<item name="2">@string/mcl_setting_renderer_gles2</item>
|
<item name="2">@string/mcl_setting_renderer_gles2_4</item>
|
||||||
<item name="3">@string/mcl_setting_renderer_gles3</item>
|
<item name="3">@string/mcl_setting_renderer_gles2_5</item>
|
||||||
|
<item name="3">@string/mcl_setting_renderer_gles3_5</item>
|
||||||
|
<item name="4">@string/mcl_setting_renderer_vulkan_zink</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="renderer_values">
|
<string-array name="renderer_values">
|
||||||
<item>opengles2</item>
|
<item>opengles2</item> <!-- gl4es 1.1.4 with OpenGL ES 2 -->
|
||||||
<item>opengles3</item>
|
<item>opengles2_5</item> <!-- gl4es 1.1.5 with OpenGL ES 2 -->
|
||||||
|
<item>opengles3</item> <!-- gl4es 1.1.5 with OpenGL ES 3 -->
|
||||||
|
<item>vulkan_zink</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -99,8 +99,10 @@
|
||||||
<string name="mcl_setting_category_general">General settings</string>
|
<string name="mcl_setting_category_general">General settings</string>
|
||||||
<string name="mcl_setting_category_scaling">Scaling settings</string>
|
<string name="mcl_setting_category_scaling">Scaling settings</string>
|
||||||
<string name="mcl_setting_category_renderer">Renderer</string>
|
<string name="mcl_setting_category_renderer">Renderer</string>
|
||||||
<string name="mcl_setting_renderer_gles2">OpenGL ES 2</string>
|
<string name="mcl_setting_renderer_gles2_4">gl4es 1.1.4 (OpenGL ES 2): exports OpenGL 2.1</string>
|
||||||
<string name="mcl_setting_renderer_gles3">OpenGL ES 3</string>
|
<string name="mcl_setting_renderer_gles2_5">gl4es 1.1.5 (OpenGL ES 2): exports OpenGL 2.1</string>
|
||||||
|
<string name="mcl_setting_renderer_gles3_5">gl4es 1.1.5 (OpenGL ES 3): exports OpenGL 2.1 + partial 3.2 (no 1.17 supported yet)</string>
|
||||||
|
<string name="mcl_setting_renderer_vulkan_zink">zink (Vulkan): exports OpenGL 4.6</string>
|
||||||
<string name="mcl_setting_category_veroption">Version type will be in version list</string>
|
<string name="mcl_setting_category_veroption">Version type will be in version list</string>
|
||||||
<string name="mcl_setting_veroption_release">Release</string>
|
<string name="mcl_setting_veroption_release">Release</string>
|
||||||
<string name="mcl_setting_veroption_snapshot">Snapshot</string>
|
<string name="mcl_setting_veroption_snapshot">Snapshot</string>
|
||||||
|
|
@ -121,30 +123,13 @@
|
||||||
<string name="global_error_field_empty">This field can\'t be empty</string>
|
<string name="global_error_field_empty">This field can\'t be empty</string>
|
||||||
<string name="global_waiting">Wait</string>
|
<string name="global_waiting">Wait</string>
|
||||||
|
|
||||||
<!--
|
|
||||||
<string name="mcl_about">
|
|
||||||
%1$s BETA (Minecraft Java launcher for Android), version " + PathTools.usingVerName + "\n" +
|
|
||||||
" - by Khanh Duy Tran (based from \"Boardwalk\" app)\n" +
|
|
||||||
"Using libraries:\n" +
|
|
||||||
" • LWJGL " + org.lwjgl.Sys.getVersion() + "\n" +
|
|
||||||
//" • Boardwalk memory manager (not used now).\n" +
|
|
||||||
" • gl4es: OpenGL for OpenGL ES devices by lunixbochs and ptitSeb.\n" +
|
|
||||||
" • OpenJDK" +
|
|
||||||
"\n" +
|
|
||||||
"* Notes:\n" +
|
|
||||||
" - This app is currently BETA, it will not be stable.\n" +
|
|
||||||
//"* This app will unstable on Android 7.0 or higher devices.\n" +
|
|
||||||
" - This app only use LWJGL2 and don't have a JRE8 desugar, so doesn't support 1.13 or higher versions.\n" +
|
|
||||||
" - This app is not affiliated with Minecraft, Mojang or Microsoft.\n")
|
|
||||||
</string>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- MainActivity: strings -->
|
<!-- MainActivity: strings -->
|
||||||
<string name="mcn_exit_title">Application/Game exited with code %d</string>
|
<string name="mcn_exit_title">Application/Game exited with code %d</string>
|
||||||
<string name="mcn_exit_call">Exit</string>
|
<string name="mcn_exit_call">Exit</string>
|
||||||
<string name="mcn_exit_confirm">Are you sure want to force close?</string>
|
<string name="mcn_exit_confirm">Are you sure want to force close?</string>
|
||||||
<string name="mcn_check_fail_lwjgl">LWJGL3 was not installed!</string>
|
<string name="mcn_check_fail_lwjgl">LWJGL3 was not installed!</string>
|
||||||
<string name="mcn_check_fail_incompatiblearch">Architecture %1$s is incompatible with Java Runtime %2$s.</string>
|
<string name="mcn_check_fail_incompatiblearch">Architecture %1$s is incompatible with Java Runtime %2$s.</string>
|
||||||
|
<string name="mcn_check_fail_vulkan_support">Vulkan Zink renderer is not supported on this device!</string>
|
||||||
|
|
||||||
<!-- MainActivity: Control buttons -->
|
<!-- MainActivity: Control buttons -->
|
||||||
<string name="control_toggle">GUI</string>
|
<string name="control_toggle">GUI</string>
|
||||||
|
|
|
||||||
|
|
@ -330,7 +330,8 @@ public final class GL {
|
||||||
public static GLCapabilities createCapabilities() {
|
public static GLCapabilities createCapabilities() {
|
||||||
return createCapabilities(false);
|
return createCapabilities(false);
|
||||||
}
|
}
|
||||||
|
private static native long getGraphicsBufferAddr();
|
||||||
|
private static native int[] getNativeWidthHeight();
|
||||||
/**
|
/**
|
||||||
* Creates a new {@link GLCapabilities} instance for the OpenGL context that is current in the current thread.
|
* Creates a new {@link GLCapabilities} instance for the OpenGL context that is current in the current thread.
|
||||||
*
|
*
|
||||||
|
|
@ -345,12 +346,6 @@ public final class GL {
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("AssignmentToMethodParameter")
|
@SuppressWarnings("AssignmentToMethodParameter")
|
||||||
public static GLCapabilities createCapabilities(boolean forwardCompatible) {
|
public static GLCapabilities createCapabilities(boolean forwardCompatible) {
|
||||||
// This fixed framebuffer issue on 1.13+ 64-bit by another making current
|
|
||||||
GLFW.nativeEglMakeCurrent(GLFW.mainContext);
|
|
||||||
|
|
||||||
if (isUsingRegal /* && Long.parseLong(System.getProperty("glfwstub.internal.glthreadid", "-1")) != Thread.currentThread().getId() */) {
|
|
||||||
nativeRegalMakeCurrent();
|
|
||||||
}
|
|
||||||
// System.setProperty("glfwstub.internal.glthreadid", Long.toString(Thread.currentThread().getId()));
|
// System.setProperty("glfwstub.internal.glthreadid", Long.toString(Thread.currentThread().getId()));
|
||||||
|
|
||||||
FunctionProvider functionProvider = GL.functionProvider;
|
FunctionProvider functionProvider = GL.functionProvider;
|
||||||
|
|
@ -361,6 +356,17 @@ public final class GL {
|
||||||
GLCapabilities caps = null;
|
GLCapabilities caps = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (System.getenv("POJAV_RENDERER").startsWith("opengles")) {
|
||||||
|
// This fixed framebuffer issue on 1.13+ 64-bit by another making current
|
||||||
|
GLFW.nativeEglMakeCurrent(GLFW.mainContext);
|
||||||
|
if (isUsingRegal /* && Long.parseLong(System.getProperty("glfwstub.internal.glthreadid", "-1")) != Thread.currentThread().getId() */) {
|
||||||
|
nativeRegalMakeCurrent();
|
||||||
|
}
|
||||||
|
} else if (System.getenv("POJAV_RENDERER").equals("vulkan_zink")) {
|
||||||
|
int[] dims = getNativeWidthHeight();
|
||||||
|
callJPI(GLFW.glfwGetCurrentContext(),getGraphicsBufferAddr(),GL_UNSIGNED_BYTE,dims[0],dims[1],functionProvider.getFunctionAddress("OSMesaMakeCurrent"));
|
||||||
|
}
|
||||||
|
|
||||||
// We don't have a current ContextCapabilities when this method is called
|
// We don't have a current ContextCapabilities when this method is called
|
||||||
// so we have to use the native bindings directly.
|
// so we have to use the native bindings directly.
|
||||||
long GetError = functionProvider.getFunctionAddress("glGetError");
|
long GetError = functionProvider.getFunctionAddress("glGetError");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue