diff options
Diffstat (limited to 'services/surfaceflinger/Layer.cpp')
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 18 |
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; } |