diff options
author | Chris Craik <ccraik@google.com> | 2015-07-30 19:37:15 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-30 19:37:15 +0000 |
commit | 7dfb1d9931fb67ae598be091425b03ded1e16eaa (patch) | |
tree | 1b0208657fbd46b4fe37da68150a8492f422d4f4 /libs/hwui | |
parent | f9dee58395fa72dc3764292aef4937dfcca0a14a (diff) | |
parent | 730c0f6591b1c99699e9d0ecf36d696f7d87629f (diff) | |
download | frameworks_base-7dfb1d9931fb67ae598be091425b03ded1e16eaa.zip frameworks_base-7dfb1d9931fb67ae598be091425b03ded1e16eaa.tar.gz frameworks_base-7dfb1d9931fb67ae598be091425b03ded1e16eaa.tar.bz2 |
am 730c0f65: Merge "Fix stencil mask usage in HWUI" into mnc-dev
* commit '730c0f6591b1c99699e9d0ecf36d696f7d87629f':
Fix stencil mask usage in HWUI
Diffstat (limited to 'libs/hwui')
-rw-r--r-- | libs/hwui/renderstate/Stencil.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libs/hwui/renderstate/Stencil.cpp b/libs/hwui/renderstate/Stencil.cpp index 92a057d..319cfe4 100644 --- a/libs/hwui/renderstate/Stencil.cpp +++ b/libs/hwui/renderstate/Stencil.cpp @@ -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; - } + 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() { |