summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2015-04-29 20:33:53 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-04-29 20:33:53 +0000
commit7a6208e24ac27f0cc607f6cd99c67e74e356d437 (patch)
treeec4e7a429f0b8068e47a5d57179f1f8d5e6ceb2d /libs
parent6228ea26effa52e29f8a1b30fd4043767fd44fc7 (diff)
parent4549108c46ef1103996ae2f98123d033da54bce6 (diff)
downloadframeworks_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.
Diffstat (limited to 'libs')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp2
-rw-r--r--libs/hwui/renderstate/Stencil.cpp13
-rw-r--r--libs/hwui/renderstate/Stencil.h5
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.