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

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

am 152d9e61: Merge "[HWUI]: fix residual line on FrameBuffer"

* commit '152d9e61':
  [HWUI]: fix residual line on FrameBuffer
parents 15c2da7c 152d9e61
Loading
Loading
Loading
Loading

libs/hwui/OpenGLRenderer.cpp

100644 → 100755
+19 −5
Original line number Original line Diff line number Diff line
@@ -283,23 +283,36 @@ void OpenGLRenderer::syncState() {
    }
    }
}
}


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


        startTiling(*clip, s->height, opaque);
        startTiling(*clip, s->height, opaque, expand);
    }
    }
}
}


void OpenGLRenderer::startTiling(const Rect& clip, int windowHeight, bool opaque) {
void OpenGLRenderer::startTiling(const Rect& clip, int windowHeight, bool opaque, bool expand) {
    if (!mSuppressTiling) {
    if (!mSuppressTiling) {
        if(expand) {
            // Expand the startTiling region by 1
            int leftNotZero = (clip.left > 0) ? 1 : 0;
            int topNotZero = (windowHeight - clip.bottom > 0) ? 1 : 0;

            mCaches.startTiling(
                clip.left - leftNotZero,
                windowHeight - clip.bottom - topNotZero,
                clip.right - clip.left + leftNotZero + 1,
                clip.bottom - clip.top + topNotZero + 1,
                opaque);
        } else {
            mCaches.startTiling(clip.left, windowHeight - clip.bottom,
            mCaches.startTiling(clip.left, windowHeight - clip.bottom,
                clip.right - clip.left, clip.bottom - clip.top, opaque);
                clip.right - clip.left, clip.bottom - clip.top, opaque);
        }
        }
    }
    }
}


void OpenGLRenderer::endTiling() {
void OpenGLRenderer::endTiling() {
    if (!mSuppressTiling) mCaches.endTiling();
    if (!mSuppressTiling) mCaches.endTiling();
@@ -1003,7 +1016,8 @@ bool OpenGLRenderer::createFboLayer(Layer* layer, Rect& bounds, Rect& clip, GLui
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
            layer->getTexture(), 0);
            layer->getTexture(), 0);


    startTiling(mSnapshot, true);
    // Expand the startTiling region by 1
    startTiling(mSnapshot, true, true);


    // Clear the FBO, expand the clear region by 1 to get nice bilinear filtering
    // Clear the FBO, expand the clear region by 1 to get nice bilinear filtering
    mCaches.enableScissor();
    mCaches.enableScissor();

libs/hwui/OpenGLRenderer.h

100644 → 100755
+2 −2
Original line number Original line Diff line number Diff line
@@ -587,14 +587,14 @@ private:
     * This method needs to be invoked every time getTargetFbo() is
     * This method needs to be invoked every time getTargetFbo() is
     * bound again.
     * bound again.
     */
     */
    void startTiling(const sp<Snapshot>& snapshot, bool opaque = false);
    void startTiling(const sp<Snapshot>& snapshot, bool opaque = false, bool expand = false);


    /**
    /**
     * Tells the GPU what part of the screen is about to be redrawn.
     * Tells the GPU what part of the screen is about to be redrawn.
     * This method needs to be invoked every time getTargetFbo() is
     * This method needs to be invoked every time getTargetFbo() is
     * bound again.
     * bound again.
     */
     */
    void startTiling(const Rect& clip, int windowHeight, bool opaque = false);
    void startTiling(const Rect& clip, int windowHeight, bool opaque = false, bool expand = false);


    /**
    /**
     * Tells the GPU that we are done drawing the frame or that we
     * Tells the GPU that we are done drawing the frame or that we