summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger/Layer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/surfaceflinger/Layer.cpp')
-rw-r--r--services/surfaceflinger/Layer.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 7edbdc5..c1561b2 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -63,6 +63,7 @@ Layer::Layer(SurfaceFlinger* flinger, const sp<Client>& client)
mFormat(PIXEL_FORMAT_NONE),
mGLExtensions(GLExtensions::getInstance()),
mOpaqueLayer(true),
+ mNeedsDithering(false),
mSecure(false),
mProtectedByApp(false)
{
@@ -194,6 +195,23 @@ status_t Layer::setBuffers( uint32_t w, uint32_t h,
mSurfaceTexture->setDefaultBufferFormat(format);
mSurfaceTexture->setConsumerUsageBits(getEffectiveUsage(0));
+ int displayMinColorDepth;
+ int layerRedsize;
+ switch (mFlinger->getUseDithering()) {
+ case 0:
+ mNeedsDithering = false;
+ break;
+ case 1:
+ displayMinColorDepth = mFlinger->getMinColorDepth();
+ // we use the red index
+ layerRedsize = info.getSize(PixelFormatInfo::INDEX_RED);
+ mNeedsDithering = (layerRedsize > displayMinColorDepth);
+ break;
+ case 2:
+ mNeedsDithering = true;
+ break;
+ }
+
return NO_ERROR;
}