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

Commit 88af7816 authored by Rajulu Ponnada's avatar Rajulu Ponnada Committed by Steve Kondik
Browse files

frameworks/base: avoiding tile rendering when rendertarget changes for same fbo

avoids tile rendering when switching to same fbo

Change-Id: I16f52b1ab474863125f42303471f3315fd9960a4
parent 5c189c5c
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ int LayerRenderer::prepareDirty(float left, float top, float right, float bottom
    LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mLayer->getFbo());

#ifdef QCOM_HARDWARE
    TILERENDERING_END(previousFbo);
    TILERENDERING_END(previousFbo, mLayer->getFbo());
#endif
    glBindFramebuffer(GL_FRAMEBUFFER, mLayer->getFbo());

@@ -66,13 +66,13 @@ int LayerRenderer::prepareDirty(float left, float top, float right, float bottom
        mLayer->region.subtractSelf(r);
    }
#ifdef QCOM_HARDWARE
    TILERENDERING_START(mLayer->getFbo(), dirty.left, dirty.top,
    TILERENDERING_START(mLayer->getFbo(), previousFbo, dirty.left, dirty.top,
                        dirty.right, dirty.bottom, width, height);
#endif
    return OpenGLRenderer::prepareDirty(dirty.left, dirty.top, dirty.right, dirty.bottom, opaque);
#else
#ifdef QCOM_HARDWARE
    TILERENDERING_START(mLayer->getFbo(), 0, 0, width, height, width, height);
    TILERENDERING_START(mLayer->getFbo(), previousFbo, 0, 0, width, height, width, height);
#endif
    return OpenGLRenderer::prepareDirty(0.0f, 0.0f, width, height, opaque);
#endif
@@ -224,7 +224,7 @@ Layer* LayerRenderer::createLayer(uint32_t width, uint32_t height, bool isOpaque
    glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &previousFbo);

#ifdef QCOM_HARDWARE
    TILERENDERING_END(previousFbo);
    TILERENDERING_END(previousFbo, layer->getFbo());
#endif
    glBindFramebuffer(GL_FRAMEBUFFER, layer->getFbo());
    layer->bindTexture();
@@ -239,7 +239,7 @@ Layer* LayerRenderer::createLayer(uint32_t width, uint32_t height, bool isOpaque
                    fbo, width, height);
            glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
#ifdef QCOM_HARDWARE
            TILERENDERING_START(previousFbo);
            TILERENDERING_START(previousFbo, layer->getFbo());
            TILERENDERING_CLEARCACHE(fbo);
#endif
            caches.fboCache.put(fbo);
@@ -260,7 +260,7 @@ Layer* LayerRenderer::createLayer(uint32_t width, uint32_t height, bool isOpaque

    glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
#ifdef QCOM_HARDWARE
    TILERENDERING_START(previousFbo, true);
    TILERENDERING_START(previousFbo, layer->getFbo(), true);
#endif

    return layer;
@@ -431,11 +431,11 @@ bool LayerRenderer::copyLayer(Layer* layer, SkBitmap* bitmap) {

        glGetIntegerv(GL_FRAMEBUFFER_BINDING, (GLint*) &previousFbo);
#ifdef QCOM_HARDWARE
        TILERENDERING_END(previousFbo);
        TILERENDERING_END(previousFbo, fbo);
#endif
        glBindFramebuffer(GL_FRAMEBUFFER, fbo);
#ifdef QCOM_HARDWARE
        TILERENDERING_START(fbo, 0, 0, bitmap->width(), bitmap->height(),
        TILERENDERING_START(fbo, previousFbo, 0, 0, bitmap->width(), bitmap->height(),
                            bitmap->width(), bitmap->height());
#endif
        glGenTextures(1, &texture);
@@ -501,11 +501,11 @@ error:
        }
#endif
#ifdef QCOM_HARDWARE
        TILERENDERING_END(fbo, true);
        TILERENDERING_END(fbo, previousFbo, true);
#endif
        glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
#ifdef QCOM_HARDWARE
        TILERENDERING_START(previousFbo);
        TILERENDERING_START(previousFbo, fbo);
#endif
        layer->setAlpha(alpha, mode);
        layer->setFbo(0);
+9 −9
Original line number Diff line number Diff line
@@ -275,11 +275,11 @@ void OpenGLRenderer::resume() {

    mCaches.activeTexture(0);
#ifdef QCOM_HARDWARE
    TILERENDERING_END(previousFbo);
    TILERENDERING_END(previousFbo, snapshot->fbo);
#endif
    glBindFramebuffer(GL_FRAMEBUFFER, snapshot->fbo);
#ifdef QCOM_HARDWARE
    TILERENDERING_START(snapshot->fbo, 0, 0,
    TILERENDERING_START(snapshot->fbo, previousFbo, 0, 0,
                        snapshot->viewport.getWidth(),
                        snapshot->viewport.getHeight(),
                        snapshot->viewport.getWidth(),
@@ -653,7 +653,7 @@ bool OpenGLRenderer::createFboLayer(Layer* layer, Rect& bounds, sp<Snapshot> sna

    // Bind texture to FBO
#ifdef QCOM_HARDWARE
    TILERENDERING_END(previousFbo);
    TILERENDERING_END(previousFbo, layer->getFbo());
#endif
    glBindFramebuffer(GL_FRAMEBUFFER, layer->getFbo());
    layer->bindTexture();
@@ -673,7 +673,7 @@ bool OpenGLRenderer::createFboLayer(Layer* layer, Rect& bounds, sp<Snapshot> sna
        ALOGE("Framebuffer incomplete (GL error code 0x%x)", status);
        glBindFramebuffer(GL_FRAMEBUFFER, previousFbo);
#ifdef QCOM_HARDWARE
        TILERENDERING_START(previousFbo, true);
        TILERENDERING_START(previousFbo, layer->getFbo(), true);
#endif
        layer->deleteTexture();
        mCaches.fboCache.put(layer->getFbo());
@@ -684,8 +684,8 @@ bool OpenGLRenderer::createFboLayer(Layer* layer, Rect& bounds, sp<Snapshot> sna
#endif

#ifdef QCOM_HARDWARE
    TILERENDERING_START(layer->getFbo(), clip.left, clip.top,
                        clip.right, clip.bottom,
    TILERENDERING_START(layer->getFbo(), previousFbo, clip.left, clip.bottom - bounds.getHeight(),
                      bounds.getWidth() + clip.left, clip.bottom,
                      bounds.getWidth(), bounds.getHeight());
#endif

@@ -716,7 +716,7 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) {

    if (fboLayer) {
#ifdef QCOM_HARDWARE
        TILERENDERING_END(current->fbo);
        TILERENDERING_END(current->fbo, previous->fbo);
#endif
        // Detach the texture from the FBO
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);
@@ -724,7 +724,7 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) {
        // Unbind current FBO and restore previous one
        glBindFramebuffer(GL_FRAMEBUFFER, previous->fbo);
#ifdef QCOM_HARDWARE
        TILERENDERING_START(previous->fbo, true);
        TILERENDERING_START(previous->fbo, current->fbo, true);
#endif
    }