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

Commit eb07af68 authored by Romain Guy's avatar Romain Guy
Browse files

Optimize layer clears.

Don't clear the entire texture when we use textures that are bigger
than the layer itself. This will save time during the glClear() calls.

Change-Id: I06f3259ba62affb3708ba69ea41418832c7e1a65
parent a0a31222
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -425,8 +425,6 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top,
        snapshot->flags |= Snapshot::kFlagDirtyOrtho;
        snapshot->orthoMatrix.load(mOrthoMatrix);

        setScissorFromClip();

        // Bind texture to FBO
        glBindFramebuffer(GL_FRAMEBUFFER, layer->fbo);
        glBindTexture(GL_TEXTURE_2D, layer->texture);
@@ -457,10 +455,11 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top,
#endif

        // Clear the FBO
        glDisable(GL_SCISSOR_TEST);
        glScissor(0.0f, 0.0f, bounds.getWidth(), bounds.getHeight());
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glEnable(GL_SCISSOR_TEST);

        setScissorFromClip();

        // Change the ortho projection
        glViewport(0, 0, bounds.getWidth(), bounds.getHeight());