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

Commit d570ca16 authored by Chris Craik's avatar Chris Craik Committed by Android Git Automerger
Browse files

am 741f6bb8: Merge "Isolate tiling clip state from snapshot" into jb-mr2-dev

* commit '741f6bb8':
  Isolate tiling clip state from snapshot
parents 1a47d562 741f6bb8
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -351,9 +351,9 @@ void DisplayList::outputViewProperties(const int level) {
                    level * 2, "", mTransformMatrix, MATRIX_ARGS(mTransformMatrix));
        }
    }
    if (mAlpha < 1 && !mCaching) {
        if (!mHasOverlappingRendering) {
            ALOGD("%*sSetAlpha %.2f", level * 2, "", mAlpha);
    if (mAlpha < 1) {
        if (mCaching || !mHasOverlappingRendering) {
            ALOGD("%*sScaleAlpha %.2f", level * 2, "", mAlpha);
        } else {
            int flags = SkCanvas::kHasAlphaLayer_SaveFlag;
            if (mClipChildren) {
+6 −6
Original line number Diff line number Diff line
@@ -193,6 +193,7 @@ status_t OpenGLRenderer::prepareDirty(float left, float top,
    mSaveCount = 1;

    mSnapshot->setClip(left, top, right, bottom);
    mTilingClip.set(left, top, right, bottom);
    mDirtyClip = true;

    updateLayers();
@@ -206,8 +207,7 @@ status_t OpenGLRenderer::prepareDirty(float left, float top,
    // invoked during the frame
    mSuppressTiling = mCaches.hasRegisteredFunctors();

    mTilingSnapshot = mSnapshot;
    startTiling(mTilingSnapshot, true);
    startTiling(mSnapshot, true);

    debugOverdraw(true, true);

@@ -252,9 +252,9 @@ void OpenGLRenderer::syncState() {

void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) {
    if (!mSuppressTiling) {
        Rect* clip = mTilingSnapshot->clipRect;
        Rect* clip = &mTilingClip;
        if (s->flags & Snapshot::kFlagFboTarget) {
            clip = &s->layer->clipRect;
            clip = &(s->layer->clipRect);
        }

        startTiling(*clip, s->height, opaque);
@@ -480,10 +480,10 @@ void OpenGLRenderer::debugOverdraw(bool enable, bool clear) {

void OpenGLRenderer::renderOverdraw() {
    if (mCaches.debugOverdraw && getTargetFbo() == 0) {
        const Rect* clip = mTilingSnapshot->clipRect;
        const Rect* clip = &mTilingClip;

        mCaches.enableScissor();
        mCaches.setScissor(clip->left, mTilingSnapshot->height - clip->bottom,
        mCaches.setScissor(clip->left, mFirstSnapshot->height - clip->bottom,
                clip->right - clip->left, clip->bottom - clip->top);

        mCaches.stencil.enableDebugTest(2);
+1 −1
Original line number Diff line number Diff line
@@ -947,7 +947,7 @@ private:
    // Current state
    sp<Snapshot> mSnapshot;
    // State used to define the clipping region
    sp<Snapshot> mTilingSnapshot;
    Rect mTilingClip;

    // Used to draw textured quads
    TextureVertex mMeshVertices[4];
+11 −0
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@
 * limitations under the License.
 */

#define LOG_TAG "OpenGLRenderer"

#include "Snapshot.h"

#include <SkCanvas.h>
@@ -199,5 +201,14 @@ bool Snapshot::isIgnored() const {
    return invisible || empty;
}

void Snapshot::dump() const {
    ALOGD("Snapshot %p, flags %x, prev %p, height %d, ignored %d, hasComplexClip %d",
            this, flags, previous.get(), height, isIgnored(), clipRegion && !clipRegion->isEmpty());
    ALOGD("  ClipRect (at %p) %.1f %.1f %.1f %.1f",
            clipRect, clipRect->left, clipRect->top, clipRect->right, clipRect->bottom);
    ALOGD("  Transform (at %p):", transform);
    transform->dump();
}

}; // namespace uirenderer
}; // namespace android
+2 −0
Original line number Diff line number Diff line
@@ -228,6 +228,8 @@ public:
     */
    float alpha;

    void dump() const;

private:
    void ensureClipRegion();
    void copyClipRectFromRegion();