Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91f564da authored by Orion Hodson's avatar Orion Hodson
Browse files

glgen: sync generator with manual changes

Syncs generator to accomodate manual changes to checked-in sources.

Adds note to EGL15.cpp that file is automatically generated.

Bug: 126352534
Bug: 124064285

Test: gen and diff based on generated command lines.
Change-Id: I31909de4c077679dec0323761fb06f388d128a14
parent b8ecc059
Loading
Loading
Loading
Loading
+29 −7
Original line number Diff line number Diff line
@@ -775,6 +775,19 @@ public class JniCodeEmitter {
        }
    }

    String getJniDefaultReturn(JType jType) {
        if (jType.isPrimitive()) {
            String baseType = jType.getBaseType();
            if (baseType.equals("boolean")) {
                return "JNI_FALSE";
            } else {
                return "(" + getJniType(jType) + ")0";
            }
        } else {
            return "nullptr";
        }
    }

    String getJniMangledName(String name) {
        name = name.replaceAll("_", "_1");
        name = name.replaceAll(";", "_2");
@@ -943,15 +956,15 @@ public class JniCodeEmitter {
                        "jniThrowException(_env, \"java/lang/UnsupportedOperationException\",");
            out.println(indent +
                        "    \"" + cfunc.getName() + "\");");
            if (!isVoid) {
                String retval = getErrorReturnValue(cfunc);
            if (isVoid) {
                out.println(indent + "return;");
            } else {
                if (cfunc.getType().isEGLHandle()) {
                    String baseType = cfunc.getType().getBaseType().toLowerCase();
                    out.println(indent +
                                "return toEGLHandle(_env, " + baseType + "Class, " +
                                baseType + "Constructor, " + retval + ");");
                    out.println(indent + indent + "return nullptr;");
                } else {
                    out.println(indent + "return " + retval + ";");
                    out.println(indent + indent + "return " +
                                getJniDefaultReturn(jfunc.getType()) + ";");
                }
            }
            out.println("}");
@@ -1595,8 +1608,17 @@ public class JniCodeEmitter {
            out.println(indent + "if (_exception) {");
            out.println(indent + indent +
                        "jniThrowException(_env, _exceptionType, _exceptionMessage);");
            out.println(indent + "}");
            if (!isVoid) {
                if (cfunc.getType().isEGLHandle()) {
                    String baseType = cfunc.getType().getBaseType().toLowerCase();
                    out.println(indent + indent + "return nullptr;");
                } else {
                    out.println(indent + indent + "return " +
                                getJniDefaultReturn(jfunc.getType()) + ";");
                }
            }

            out.println(indent + "}");
        }


+1 −2
Original line number Diff line number Diff line
@@ -35,8 +35,6 @@

#include <ui/ANativeObjectBase.h>

static int initialized = 0;

static jclass egldisplayClass;
static jclass eglcontextClass;
static jclass eglsurfaceClass;
@@ -107,6 +105,7 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {
    if (obj == NULL){
        jniThrowException(_env, "java/lang/IllegalArgumentException",
                          "Object is set to null.");
        return nullptr;
    }

    jlong handle = _env->CallLongMethod(obj, mid);
+55 −51
Original line number Diff line number Diff line
@@ -14,21 +14,21 @@
** limitations under the License.
*/

// This source file is automatically generated

#pragma GCC diagnostic ignored "-Wunused-variable"
#pragma GCC diagnostic ignored "-Wunused-function"

#include <android_runtime/AndroidRuntime.h>
#include "jni.h"
#include <nativehelper/JNIHelp.h>
#include <android_runtime/AndroidRuntime.h>
#include <utils/misc.h>
#include "jni.h"

#include <EGL/egl.h>
#include <assert.h>
#include <EGL/egl.h>

#include <ui/ANativeObjectBase.h>

static int initialized = 0;

// classes from EGL 1.4
static jclass egldisplayClass;
static jclass eglsurfaceClass;
@@ -74,7 +74,9 @@ static jobject eglNoSyncObject;

/* Cache method IDs each time the class is loaded. */

static void nativeClassInit(JNIEnv *_env, jclass glImplClass) {
static void
nativeClassInit(JNIEnv *_env, jclass glImplClass)
{
    // EGL 1.4 Init
    jclass eglconfigClassLocal = _env->FindClass("android/opengl/EGLConfig");
    eglconfigClass = (jclass) _env->NewGlobalRef(eglconfigClassLocal);
@@ -95,27 +97,21 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) {
    egldisplayConstructor = _env->GetMethodID(egldisplayClass, "<init>", "(J)V");
    eglsurfaceConstructor = _env->GetMethodID(eglsurfaceClass, "<init>", "(J)V");

    jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor,
                                                      reinterpret_cast<jlong>(EGL_NO_CONTEXT));
    jobject localeglNoContextObject = _env->NewObject(eglcontextClass, eglcontextConstructor, reinterpret_cast<jlong>(EGL_NO_CONTEXT));
    eglNoContextObject = _env->NewGlobalRef(localeglNoContextObject);
    jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor,
                                                      reinterpret_cast<jlong>(EGL_NO_DISPLAY));
    jobject localeglNoDisplayObject = _env->NewObject(egldisplayClass, egldisplayConstructor, reinterpret_cast<jlong>(EGL_NO_DISPLAY));
    eglNoDisplayObject = _env->NewGlobalRef(localeglNoDisplayObject);
    jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor,
                                                      reinterpret_cast<jlong>(EGL_NO_SURFACE));
    jobject localeglNoSurfaceObject = _env->NewObject(eglsurfaceClass, eglsurfaceConstructor, reinterpret_cast<jlong>(EGL_NO_SURFACE));
    eglNoSurfaceObject = _env->NewGlobalRef(localeglNoSurfaceObject);

    jclass eglClass = _env->FindClass("android/opengl/EGL15");
    jfieldID noContextFieldID =
            _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;");
    jfieldID noContextFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_CONTEXT", "Landroid/opengl/EGLContext;");
    _env->SetStaticObjectField(eglClass, noContextFieldID, eglNoContextObject);

    jfieldID noDisplayFieldID =
            _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;");
    jfieldID noDisplayFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_DISPLAY", "Landroid/opengl/EGLDisplay;");
    _env->SetStaticObjectField(eglClass, noDisplayFieldID, eglNoDisplayObject);

    jfieldID noSurfaceFieldID =
            _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;");
    jfieldID noSurfaceFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SURFACE", "Landroid/opengl/EGLSurface;");
    _env->SetStaticObjectField(eglClass, noSurfaceFieldID, eglNoSurfaceObject);

    // EGL 1.5 init
@@ -125,16 +121,17 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) {
    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);

    getBasePointerID =
            _env->GetStaticMethodID(nioAccessClass, "getBasePointer", "(Ljava/nio/Buffer;)J");
    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, "getBaseArray",
                                             "(Ljava/nio/Buffer;)Ljava/lang/Object;");
    getBaseArrayOffsetID =
            _env->GetStaticMethodID(nioAccessClass, "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
            "getBasePointer", "(Ljava/nio/Buffer;)J");
    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");

    positionID = _env->GetFieldID(bufferClass, "position", "I");
    limitID = _env->GetFieldID(bufferClass, "limit", "I");
    elementSizeShiftID = _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
    elementSizeShiftID =
        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");

    jclass eglimageClassLocal = _env->FindClass("android/opengl/EGLImage");
    eglimageClass = (jclass) _env->NewGlobalRef(eglimageClassLocal);
@@ -147,17 +144,16 @@ static void nativeClassInit(JNIEnv *_env, jclass glImplClass) {
    eglimageConstructor = _env->GetMethodID(eglimageClass, "<init>", "(J)V");
    eglsyncConstructor = _env->GetMethodID(eglsyncClass, "<init>", "(J)V");

    jfieldID noImageFieldID =
            _env->GetStaticFieldID(eglClass, "EGL_NO_IMAGE", "Landroid/opengl/EGLImage;");
    jfieldID noImageFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_IMAGE", "Landroid/opengl/EGLImage;");
    _env->SetStaticObjectField(eglClass, noImageFieldID, eglNoImageObject);

    jfieldID noSyncFieldID =
            _env->GetStaticFieldID(eglClass, "EGL_NO_SYNC", "Landroid/opengl/EGLSync;");
    jfieldID noSyncFieldID = _env->GetStaticFieldID(eglClass, "EGL_NO_SYNC", "Landroid/opengl/EGLSync;");
    _env->SetStaticObjectField(eglClass, noSyncFieldID, eglNoSyncObject);
}

static void *getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining,
                        jint *offset) {
static void *
getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
{
    jint position;
    jint limit;
    jint elementSizeShift;
@@ -167,34 +163,42 @@ static void *getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remai
    limit = _env->GetIntField(buffer, limitID);
    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
    *remaining = (limit - position) << elementSizeShift;
    pointer = _env->CallStaticLongMethod(nioAccessClass, getBasePointerID, buffer);
    pointer = _env->CallStaticLongMethod(nioAccessClass,
            getBasePointerID, buffer);
    if (pointer != 0L) {
        *array = NULL;
        return reinterpret_cast<void*>(pointer);
    }
    eglimageGetHandleID = _env->GetMethodID(eglimageClass, "getNativeHandle", "()J");
    eglsyncGetHandleID = _env->GetMethodID(eglsyncClass, "getNativeHandle", "()J");

    *array = (jarray)_env->CallStaticObjectMethod(nioAccessClass, getBaseArrayID, buffer);
    *offset = _env->CallStaticIntMethod(nioAccessClass, getBaseArrayOffsetID, buffer);
    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
            getBaseArrayID, buffer);
    *offset = _env->CallStaticIntMethod(nioAccessClass,
            getBaseArrayOffsetID, buffer);

    return NULL;
}

static void releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) {
    _env->ReleasePrimitiveArrayCritical(array, data, commit ? 0 : JNI_ABORT);
static void
releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
{
    _env->ReleasePrimitiveArrayCritical(array, data,
                       commit ? 0 : JNI_ABORT);
}

static void *fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {
static void *
fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {
    if (obj == NULL) {
        jniThrowException(_env, "java/lang/IllegalArgumentException", "Object is set to null.");
        jniThrowException(_env, "java/lang/IllegalArgumentException",
                          "Object is set to null.");
        return nullptr;
    }

    jlong handle = _env->CallLongMethod(obj, mid);
    return reinterpret_cast<void*>(handle);
}

static jobject toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void *handle) {
static jobject
toEGLHandle(JNIEnv *_env, jclass cls, jmethodID con, void *handle) {
    if (cls == eglimageClass && (EGLImage)handle == EGL_NO_IMAGE) {
        return eglNoImageObject;
    }
+1 −2
Original line number Diff line number Diff line
@@ -36,8 +36,6 @@

#include <ui/ANativeObjectBase.h>

static int initialized = 0;

static jclass egldisplayClass;
static jclass eglcontextClass;
static jclass eglsurfaceClass;
@@ -104,6 +102,7 @@ fromEGLHandle(JNIEnv *_env, jmethodID mid, jobject obj) {
    if (obj == NULL){
        jniThrowException(_env, "java/lang/IllegalArgumentException",
                          "Object is set to null.");
        return nullptr;
    }

    return reinterpret_cast<void*>(_env->CallLongMethod(obj, mid));
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ exit:
    }
    if (_exception) {
        jniThrowException(_env, _exceptionType, _exceptionMessage);
        return nullptr;
    }
    return toEGLHandle(_env, eglsurfaceClass, eglsurfaceConstructor, _returnValue);
}
Loading