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

Commit 6d384403 authored by Chris Craik's avatar Chris Craik Committed by Android (Google) Code Review
Browse files

Merge "Create private properties on GLCanvas for experimentation with 3d"

parents ee17f0b5 ba9b6134
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -153,6 +153,12 @@ class GLES20Canvas extends HardwareCanvas {

    private static native void nSetName(int renderer, String name);

    public static void setProperty(String name, String value) {
        nSetProperty(name, value);
    }

    private static native void nSetProperty(String name, String value);

    ///////////////////////////////////////////////////////////////////////////
    // Hardware layers
    ///////////////////////////////////////////////////////////////////////////
+20 −0
Original line number Diff line number Diff line
@@ -185,6 +185,24 @@ static void android_view_GLES20Canvas_setName(JNIEnv* env,
    }
}

static void android_view_GLES20Canvas_setProperty(JNIEnv* env,
        jobject clazz, jstring name, jstring value) {
    if (!Caches::hasInstance()) {
        ALOGW("can't set property, no Caches instance");
        return;
    }

    if (name == NULL || value == NULL) {
        ALOGW("can't set prop, null passed");
    }

    const char* nameCharArray = env->GetStringUTFChars(name, NULL);
    const char* valueCharArray = env->GetStringUTFChars(value, NULL);
    Caches::getInstance().setTempProperty(nameCharArray, valueCharArray);
    env->ReleaseStringUTFChars(name, nameCharArray);
    env->ReleaseStringUTFChars(name, valueCharArray);
}

static void android_view_GLES20Canvas_setCountOverdrawEnabled(JNIEnv* env, jobject clazz,
        OpenGLRenderer* renderer, jboolean enabled) {
    renderer->setCountOverdrawEnabled(enabled);
@@ -1011,6 +1029,8 @@ static JNINativeMethod gMethods[] = {
    { "nFinish",            "(I)V",            (void*) android_view_GLES20Canvas_finish },
    { "nSetName",           "(ILjava/lang/String;)V",
            (void*) android_view_GLES20Canvas_setName },
    { "nSetProperty",           "(Ljava/lang/String;Ljava/lang/String;)V",
            (void*) android_view_GLES20Canvas_setProperty },

    { "nSetCountOverdrawEnabled", "(IZ)V",     (void*) android_view_GLES20Canvas_setCountOverdrawEnabled },
    { "nGetOverdraw",             "(I)F",      (void*) android_view_GLES20Canvas_getOverdraw },
+32 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ Caches::Caches(): Singleton<Caches>(),
    initProperties();
    initStaticProperties();
    initExtensions();
    initTempProperties();

    mDebugLevel = readDebugLevel();
    ALOGD("Enabling debug mode %d", mDebugLevel);
@@ -676,5 +677,36 @@ TextureVertex* Caches::getRegionMesh() {
    return mRegionMesh;
}

///////////////////////////////////////////////////////////////////////////////
// Temporary Properties
///////////////////////////////////////////////////////////////////////////////

void Caches::initTempProperties() {
    propertyDirtyViewport = false;
    propertyEnable3d = false;
    propertyCameraDistance = 1.0f;
    propertyShadowStrength = 0x3f;
}

void Caches::setTempProperty(const char* name, const char* value) {
    ALOGD("setting property %s to %s", name, value);
    if (!strcmp(name, "enable3d")) {
        propertyEnable3d = !strcmp(value, "true");
        propertyDirtyViewport = true;
        ALOGD("enable3d = %d", propertyEnable3d);
        return;
    } else if (!strcmp(name, "cameraDistance")) {
        propertyCameraDistance = fmin(fmax(atof(value), 0.001), 10);
        propertyDirtyViewport = true;
        ALOGD("camera dist multiplier = %.2f", propertyCameraDistance);
        return;
    } else if (!strcmp(name, "shadowStrength")) {
        propertyShadowStrength = atoi(value);
        ALOGD("shadow strength = 0x%x out of 0xff", propertyShadowStrength);
        return;
    }
    ALOGD("    failed");
}

}; // namespace uirenderer
}; // namespace android
+8 −0
Original line number Diff line number Diff line
@@ -353,6 +353,14 @@ public:
    PFNGLLABELOBJECTEXTPROC setLabel;
    PFNGLGETOBJECTLABELEXTPROC getLabel;

    // TEMPORARY properties
    void initTempProperties();
    void setTempProperty(const char* name, const char* value);
    bool propertyEnable3d;
    bool propertyDirtyViewport; // flag set when dirtying the viewport
    float propertyCameraDistance;
    int propertyShadowStrength;

private:
    enum OverdrawColorSet {
        kColorSet_Default = 0,
+0 −3
Original line number Diff line number Diff line
@@ -85,9 +85,6 @@
// Turn on to highlight drawing batches and merged batches with different colors
#define DEBUG_MERGE_BEHAVIOR 0

// Turn on to enable 3D support in the renderer (off by default until API for control exists)
#define DEBUG_ENABLE_3D 0

// Turn on to enable debugging shadow
#define DEBUG_SHADOW 0

Loading