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

Commit ba9b6134 authored by Chris Craik's avatar Chris Craik
Browse files

Create private properties on GLCanvas for experimentation with 3d

Change-Id: I17772f61efce727cb4c1111f4d97f58c741786b8
parent d83adf00
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