diff options
author | Chris Craik <ccraik@google.com> | 2015-04-29 20:33:53 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-04-29 20:33:53 +0000 |
commit | 7a6208e24ac27f0cc607f6cd99c67e74e356d437 (patch) | |
tree | ec4e7a429f0b8068e47a5d57179f1f8d5e6ceb2d | |
parent | 6228ea26effa52e29f8a1b30fd4043767fd44fc7 (diff) | |
parent | 4549108c46ef1103996ae2f98123d033da54bce6 (diff) | |
download | frameworks_base-7a6208e24ac27f0cc607f6cd99c67e74e356d437.zip frameworks_base-7a6208e24ac27f0cc607f6cd99c67e74e356d437.tar.gz frameworks_base-7a6208e24ac27f0cc607f6cd99c67e74e356d437.tar.bz2 |
am 4549108c: am 81bd735a: Merge "Require minimum 4 bit stencil for layers." into mnc-dev
* commit '4549108c46ef1103996ae2f98123d033da54bce6':
Require minimum 4 bit stencil for layers.
-rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 2 | ||||
-rw-r--r-- | libs/hwui/renderstate/Stencil.cpp | 13 | ||||
-rw-r--r-- | libs/hwui/renderstate/Stencil.h | 5 |
3 files changed, 11 insertions, 9 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 30935d5..f1ec8ae 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1262,7 +1262,7 @@ void OpenGLRenderer::attachStencilBufferToLayer(Layer* layer) { endTiling(); RenderBuffer* buffer = mCaches.renderBufferCache.get( - Stencil::getSmallestStencilFormat(), + Stencil::getLayerStencilFormat(), layer->getWidth(), layer->getHeight()); layer->setStencilRenderBuffer(buffer); diff --git a/libs/hwui/renderstate/Stencil.cpp b/libs/hwui/renderstate/Stencil.cpp index cedb233..92a057d 100644 --- a/libs/hwui/renderstate/Stencil.cpp +++ b/libs/hwui/renderstate/Stencil.cpp @@ -42,12 +42,17 @@ uint8_t Stencil::getStencilSize() { return STENCIL_BUFFER_SIZE; } -GLenum Stencil::getSmallestStencilFormat() { +/** + * This method will return either GL_STENCIL_INDEX4_OES if supported, + * GL_STENCIL_INDEX8 if not. + * + * Layers can't use a single bit stencil because multi-rect ClipArea needs a high enough + * stencil resolution to represent the summation of multiple intersecting rect geometries. + */ +GLenum Stencil::getLayerStencilFormat() { #if !DEBUG_STENCIL const Extensions& extensions = Caches::getInstance().extensions(); - if (extensions.has1BitStencil()) { - return GL_STENCIL_INDEX1_OES; - } else if (extensions.has4BitStencil()) { + if (extensions.has4BitStencil()) { return GL_STENCIL_INDEX4_OES; } #endif diff --git a/libs/hwui/renderstate/Stencil.h b/libs/hwui/renderstate/Stencil.h index e4f0f3f..3a8f8eb 100644 --- a/libs/hwui/renderstate/Stencil.h +++ b/libs/hwui/renderstate/Stencil.h @@ -42,10 +42,7 @@ public: */ ANDROID_API static uint8_t getStencilSize(); - /** - * Returns the smallest stencil format accepted by render buffers. - */ - static GLenum getSmallestStencilFormat(); + static GLenum getLayerStencilFormat(); /** * Clears the stencil buffer. |