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

Commit efff0f80 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "frameworks/opengl/sync-gen"

* changes:
  glgen: sync generator with manual changes
  Sync generator script with manual Java changes
parents 1f8bbd7b 91f564da
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -90,6 +90,10 @@ fi

rm src/*.class

# Add UnsupportedAppUsage.java to known sources.
mkdir -p out/android/annotation
cp ../../../../base/core/java/android/annotation/UnsupportedAppUsage.java out/android/annotation

pushd out > /dev/null
mkdir classes
javac -d classes    android/opengl/EGL14.java \
@@ -109,7 +113,8 @@ javac -d classes android/opengl/EGL14.java \
                    android/opengl/GLES30.java \
                    android/opengl/GLES31.java \
                    android/opengl/GLES31Ext.java \
                    android/opengl/GLES32.java
                    android/opengl/GLES32.java \
                    android/annotation/UnsupportedAppUsage.java
popd > /dev/null
JAVA_RESULT=$?
if [ $JAVA_RESULT -ne 0 ]; then
@@ -142,7 +147,7 @@ compareGenerated() {
            echo
            SAID_PLEASE=1
        fi
        echo "    cp $2/$3 $1"
        echo "    cp $2/$3 $1/$3"
        echo "    (cd $1; git add $3)"
        KEEP_GENERATED=1
    fi
+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 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@

package android.opengl;

import android.annotation.UnsupportedAppUsage;
import android.graphics.SurfaceTexture;
import android.view.Surface;
import android.view.SurfaceView;
+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;
    }
Loading