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

Commit fa51a0e1 authored by Chris Craik's avatar Chris Craik
Browse files

Fix stencil mask usage in HWUI

bug:21588246

Ensure we always set the mask before clearing, and removes
some unneeded optimizations around mask usage in
debug (overdraw) mode.

Change-Id: I71ed06c16f8d9f158953d5aa160098514f0f7f00
parent b83b5fa6
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -60,8 +60,14 @@ GLenum Stencil::getLayerStencilFormat() {
}

void Stencil::clear() {
    glStencilMask(0xff);
    glClearStencil(0);
    glClear(GL_STENCIL_BUFFER_BIT);

    if (mState == kTest) {
        // reset to test state, with immutable stencil
        glStencilMask(0);
    }
}

void Stencil::enableTest(int incrementThreshold) {
@@ -104,17 +110,17 @@ void Stencil::enableDebugTest(GLint value, bool greater) {
    // We only want to test, let's keep everything
    glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
    mState = kTest;
    glStencilMask(0);
}

void Stencil::enableDebugWrite() {
    if (mState != kWrite) {
    enable();
    glStencilFunc(GL_ALWAYS, 0x1, 0xffffffff);
    // The test always passes so the first two values are meaningless
    glStencilOp(GL_KEEP, GL_KEEP, GL_INCR);
    glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
    mState = kWrite;
    }
    glStencilMask(0xff);
}

void Stencil::enable() {