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

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

Merge "Create z reordering boundaries around dispatchDraw" into lmp-dev

parents 4cce1de9 8afd0f24
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -178,6 +178,18 @@ class GLES20Canvas extends HardwareCanvas {

    private static native void nSetHighContrastText(long renderer, boolean highContrastText);

    @Override
    public void insertReorderBarrier() {
        nInsertReorderBarrier(mRenderer, true);
    }

    @Override
    public void insertInorderBarrier() {
        nInsertReorderBarrier(mRenderer, false);
    }

    private static native void nInsertReorderBarrier(long renderer, boolean enableReorder);

    @Override
    public int onPreDraw(Rect dirty) {
        if (dirty != null) {
+2 −1
Original line number Diff line number Diff line
@@ -3072,7 +3072,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        boolean more = false;
        final long drawingTime = getDrawingTime();


        if (usingRenderNodeProperties) canvas.insertReorderBarrier();
        // Only use the preordered list if not HW accelerated, since the HW pipeline will do the
        // draw reordering internally
        final ArrayList<View> preorderedList = usingRenderNodeProperties
@@ -3099,6 +3099,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
                more |= drawChild(canvas, child, drawingTime);
            }
        }
        if (usingRenderNodeProperties) canvas.insertInorderBarrier();

        if (debugDraw()) {
            onDebugDraw(canvas);
+7 −0
Original line number Diff line number Diff line
@@ -104,6 +104,12 @@ static void android_view_GLES20Canvas_setHighContrastText(JNIEnv* env, jobject c
    renderer->setHighContrastText(highContrastText);
}

static void android_view_GLES20Canvas_insertReorderBarrier(JNIEnv* env, jobject clazz,
        jlong rendererPtr, jboolean reorderEnable) {
    DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr);
    renderer->insertReorderBarrier(reorderEnable);
}

static int android_view_GLES20Canvas_prepare(JNIEnv* env, jobject clazz,
        jlong rendererPtr, jboolean opaque) {
    DisplayListRenderer* renderer = reinterpret_cast<DisplayListRenderer*>(rendererPtr);
@@ -859,6 +865,7 @@ static JNINativeMethod gMethods[] = {
    { "nDestroyRenderer",   "(J)V",            (void*) android_view_GLES20Canvas_destroyRenderer },
    { "nSetViewport",       "(JII)V",          (void*) android_view_GLES20Canvas_setViewport },
    { "nSetHighContrastText","(JZ)V",          (void*) android_view_GLES20Canvas_setHighContrastText },
    { "nInsertReorderBarrier","(JZ)V",         (void*) android_view_GLES20Canvas_insertReorderBarrier },
    { "nPrepare",           "(JZ)I",           (void*) android_view_GLES20Canvas_prepare },
    { "nPrepareDirty",      "(JIIIIZ)I",       (void*) android_view_GLES20Canvas_prepareDirty },
    { "nFinish",            "(J)V",            (void*) android_view_GLES20Canvas_finish },
+6 −0
Original line number Diff line number Diff line
@@ -243,6 +243,12 @@ public class Canvas {
    /** @hide */
    public void setHighContrastText(boolean highContrastText) {}

    /** @hide */
    public void insertReorderBarrier() {}

    /** @hide */
    public void insertInorderBarrier() {}

    /**
     * @hide
     */
+2 −4
Original line number Diff line number Diff line
@@ -89,11 +89,9 @@ void DisplayListData::cleanupResources() {
    layers.clear();
}

void DisplayListData::addChild(DrawRenderNodeOp* op) {
    LOG_ALWAYS_FATAL_IF(!op->renderNode(), "DrawRenderNodeOp with no render node!");

    mChildren.push(op);
size_t DisplayListData::addChild(DrawRenderNodeOp* op) {
    mReferenceHolders.push(op->renderNode());
    return mChildren.add(op);
}

}; // namespace uirenderer
Loading