Loading include/surfaceflinger/ISurfaceComposer.h +2 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ public: eSecure = 0x00000080, eNonPremultiplied = 0x00000100, eOpaque = 0x00000400, eProtectedByApp = 0x00000800, eProtectedByDRM = 0x00001000, eFXSurfaceNormal = 0x00000000, eFXSurfaceBlur = 0x00010000, Loading include/ui/GraphicBuffer.h +4 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ public: USAGE_SOFTWARE_MASK = USAGE_SW_READ_MASK|USAGE_SW_WRITE_MASK, USAGE_PROTECTED = GRALLOC_USAGE_PROTECTED, USAGE_HW_TEXTURE = GRALLOC_USAGE_HW_TEXTURE, USAGE_HW_RENDER = GRALLOC_USAGE_HW_RENDER, USAGE_HW_2D = GRALLOC_USAGE_HW_2D, Loading services/surfaceflinger/Layer.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ Layer::Layer(SurfaceFlinger* flinger, mNeedsBlending(true), mNeedsDithering(false), mSecure(false), mProtectedByApp(false), mProtectedByDRM(false), mTextureManager(), mBufferManager(mTextureManager), mWidth(0), mHeight(0), mNeedsScaling(false), mFixedSize(false) Loading Loading @@ -191,6 +193,8 @@ status_t Layer::setBuffers( uint32_t w, uint32_t h, mReqHeight = h; mSecure = (flags & ISurfaceComposer::eSecure) ? true : false; mProtectedByApp = (flags & ISurfaceComposer::eProtectedByApp) ? true : false; mProtectedByDRM = (flags & ISurfaceComposer::eProtectedByDRM) ? true : false; mNeedsBlending = (info.h_alpha - info.l_alpha) > 0 && (flags & ISurfaceComposer::eOpaque) == 0; Loading Loading @@ -476,6 +480,10 @@ uint32_t Layer::getEffectiveUsage(uint32_t usage) const // request EGLImage for all buffers usage |= GraphicBuffer::USAGE_HW_TEXTURE; } if (mProtectedByApp || mProtectedByDRM) { // need a hardware-protected path to external video sink usage |= GraphicBuffer::USAGE_PROTECTED; } return usage; } Loading services/surfaceflinger/Layer.h +5 −1 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ public: virtual bool needsDithering() const { return mNeedsDithering; } virtual bool needsFiltering() const; virtual bool isSecure() const { return mSecure; } virtual bool isProtectedByApp() const { return mProtectedByApp; } virtual bool isProtectedByDRM() const { return mProtectedByDRM; } virtual sp<Surface> createSurface() const; virtual status_t ditch(); virtual void onRemoved(); Loading Loading @@ -218,7 +220,9 @@ private: bool mNeedsDithering; // page-flip thread (currently main thread) bool mSecure; bool mSecure; // no screenshots bool mProtectedByApp; // application requires protected path to external sink bool mProtectedByDRM; // DRM agent requires protected path to external sink Region mPostedDirtyRegion; // page-flip thread and transaction thread (currently main thread) Loading services/surfaceflinger/LayerBase.h +12 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,18 @@ public: */ virtual bool isSecure() const { return false; } /** * isProtectedByApp - true if application says this surface is protected, that * is if it requires a hardware-protected data path to an external sink. */ virtual bool isProtectedByApp() const { return false; } /** * isProtectedByDRM - true if DRM agent says this surface is protected, that * is if it requires a hardware-protected data path to an external sink. */ virtual bool isProtectedByDRM() const { return false; } /** Called from the main thread, when the surface is removed from the * draw list */ virtual status_t ditch() { return NO_ERROR; } Loading Loading
include/surfaceflinger/ISurfaceComposer.h +2 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ public: eSecure = 0x00000080, eNonPremultiplied = 0x00000100, eOpaque = 0x00000400, eProtectedByApp = 0x00000800, eProtectedByDRM = 0x00001000, eFXSurfaceNormal = 0x00000000, eFXSurfaceBlur = 0x00010000, Loading
include/ui/GraphicBuffer.h +4 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ public: USAGE_SOFTWARE_MASK = USAGE_SW_READ_MASK|USAGE_SW_WRITE_MASK, USAGE_PROTECTED = GRALLOC_USAGE_PROTECTED, USAGE_HW_TEXTURE = GRALLOC_USAGE_HW_TEXTURE, USAGE_HW_RENDER = GRALLOC_USAGE_HW_RENDER, USAGE_HW_2D = GRALLOC_USAGE_HW_2D, Loading
services/surfaceflinger/Layer.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ Layer::Layer(SurfaceFlinger* flinger, mNeedsBlending(true), mNeedsDithering(false), mSecure(false), mProtectedByApp(false), mProtectedByDRM(false), mTextureManager(), mBufferManager(mTextureManager), mWidth(0), mHeight(0), mNeedsScaling(false), mFixedSize(false) Loading Loading @@ -191,6 +193,8 @@ status_t Layer::setBuffers( uint32_t w, uint32_t h, mReqHeight = h; mSecure = (flags & ISurfaceComposer::eSecure) ? true : false; mProtectedByApp = (flags & ISurfaceComposer::eProtectedByApp) ? true : false; mProtectedByDRM = (flags & ISurfaceComposer::eProtectedByDRM) ? true : false; mNeedsBlending = (info.h_alpha - info.l_alpha) > 0 && (flags & ISurfaceComposer::eOpaque) == 0; Loading Loading @@ -476,6 +480,10 @@ uint32_t Layer::getEffectiveUsage(uint32_t usage) const // request EGLImage for all buffers usage |= GraphicBuffer::USAGE_HW_TEXTURE; } if (mProtectedByApp || mProtectedByDRM) { // need a hardware-protected path to external video sink usage |= GraphicBuffer::USAGE_PROTECTED; } return usage; } Loading
services/surfaceflinger/Layer.h +5 −1 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ public: virtual bool needsDithering() const { return mNeedsDithering; } virtual bool needsFiltering() const; virtual bool isSecure() const { return mSecure; } virtual bool isProtectedByApp() const { return mProtectedByApp; } virtual bool isProtectedByDRM() const { return mProtectedByDRM; } virtual sp<Surface> createSurface() const; virtual status_t ditch(); virtual void onRemoved(); Loading Loading @@ -218,7 +220,9 @@ private: bool mNeedsDithering; // page-flip thread (currently main thread) bool mSecure; bool mSecure; // no screenshots bool mProtectedByApp; // application requires protected path to external sink bool mProtectedByDRM; // DRM agent requires protected path to external sink Region mPostedDirtyRegion; // page-flip thread and transaction thread (currently main thread) Loading
services/surfaceflinger/LayerBase.h +12 −0 Original line number Diff line number Diff line Loading @@ -196,6 +196,18 @@ public: */ virtual bool isSecure() const { return false; } /** * isProtectedByApp - true if application says this surface is protected, that * is if it requires a hardware-protected data path to an external sink. */ virtual bool isProtectedByApp() const { return false; } /** * isProtectedByDRM - true if DRM agent says this surface is protected, that * is if it requires a hardware-protected data path to an external sink. */ virtual bool isProtectedByDRM() const { return false; } /** Called from the main thread, when the surface is removed from the * draw list */ virtual status_t ditch() { return NO_ERROR; } Loading