Loading libs/renderengine/RenderEngine.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -85,5 +85,15 @@ std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArg RenderEngine::~RenderEngine() = default; void RenderEngine::validateInputBufferUsage(const sp<GraphicBuffer>& buffer) { LOG_ALWAYS_FATAL_IF(!(buffer->getUsage() & GraphicBuffer::USAGE_HW_TEXTURE), "input buffer not gpu readable"); } void RenderEngine::validateOutputBufferUsage(const sp<GraphicBuffer>& buffer) { LOG_ALWAYS_FATAL_IF(!(buffer->getUsage() & GraphicBuffer::USAGE_HW_RENDER), "output buffer not gpu writeable"); } } // namespace renderengine } // namespace android libs/renderengine/gl/GLESRenderEngine.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -1125,6 +1125,8 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, return BAD_VALUE; } validateOutputBufferUsage(buffer); std::unique_ptr<BindNativeBufferAsFramebuffer> fbo; // Gathering layers that requested blur, we'll need them to decide when to render to an // offscreen buffer, and when to render to the native buffer. Loading Loading @@ -1249,6 +1251,7 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, isOpaque = layer->source.buffer.isOpaque; sp<GraphicBuffer> gBuf = layer->source.buffer.buffer; validateInputBufferUsage(gBuf); bindExternalTextureBuffer(layer->source.buffer.textureName, gBuf, layer->source.buffer.fence); Loading libs/renderengine/include/renderengine/RenderEngine.h +3 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,9 @@ public: // we should not allow in general, so remove this. RenderEngineType getRenderEngineType() const { return mRenderEngineType; } static void validateInputBufferUsage(const sp<GraphicBuffer>&); static void validateOutputBufferUsage(const sp<GraphicBuffer>&); protected: friend class threaded::RenderEngineThreaded; const RenderEngineType mRenderEngineType; Loading libs/renderengine/skia/SkiaGLRenderEngine.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -598,6 +598,8 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, return BAD_VALUE; } validateOutputBufferUsage(buffer); auto grContext = mInProtectedContext ? mProtectedGrContext : mGrContext; auto& cache = mInProtectedContext ? mProtectedTextureCache : mTextureCache; AHardwareBuffer_Desc bufferDesc; Loading Loading @@ -815,6 +817,7 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, SkPaint paint; if (layer->source.buffer.buffer) { ATRACE_NAME("DrawImage"); validateInputBufferUsage(layer->source.buffer.buffer); const auto& item = layer->source.buffer; std::shared_ptr<AutoBackendTexture::LocalRef> imageTextureRef = nullptr; auto iter = mTextureCache.find(item.buffer->getId()); Loading services/surfaceflinger/tests/BufferGenerator.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public: consumer->setDefaultBufferSize(width, height); consumer->setDefaultBufferFormat(format); mBufferItemConsumer = new BufferItemConsumer(consumer, 0); mBufferItemConsumer = new BufferItemConsumer(consumer, GraphicBuffer::USAGE_HW_TEXTURE); mListener = new BufferListener(consumer, callback); mBufferItemConsumer->setFrameAvailableListener(mListener); Loading Loading
libs/renderengine/RenderEngine.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -85,5 +85,15 @@ std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArg RenderEngine::~RenderEngine() = default; void RenderEngine::validateInputBufferUsage(const sp<GraphicBuffer>& buffer) { LOG_ALWAYS_FATAL_IF(!(buffer->getUsage() & GraphicBuffer::USAGE_HW_TEXTURE), "input buffer not gpu readable"); } void RenderEngine::validateOutputBufferUsage(const sp<GraphicBuffer>& buffer) { LOG_ALWAYS_FATAL_IF(!(buffer->getUsage() & GraphicBuffer::USAGE_HW_RENDER), "output buffer not gpu writeable"); } } // namespace renderengine } // namespace android
libs/renderengine/gl/GLESRenderEngine.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -1125,6 +1125,8 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, return BAD_VALUE; } validateOutputBufferUsage(buffer); std::unique_ptr<BindNativeBufferAsFramebuffer> fbo; // Gathering layers that requested blur, we'll need them to decide when to render to an // offscreen buffer, and when to render to the native buffer. Loading Loading @@ -1249,6 +1251,7 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, isOpaque = layer->source.buffer.isOpaque; sp<GraphicBuffer> gBuf = layer->source.buffer.buffer; validateInputBufferUsage(gBuf); bindExternalTextureBuffer(layer->source.buffer.textureName, gBuf, layer->source.buffer.fence); Loading
libs/renderengine/include/renderengine/RenderEngine.h +3 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,9 @@ public: // we should not allow in general, so remove this. RenderEngineType getRenderEngineType() const { return mRenderEngineType; } static void validateInputBufferUsage(const sp<GraphicBuffer>&); static void validateOutputBufferUsage(const sp<GraphicBuffer>&); protected: friend class threaded::RenderEngineThreaded; const RenderEngineType mRenderEngineType; Loading
libs/renderengine/skia/SkiaGLRenderEngine.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -598,6 +598,8 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, return BAD_VALUE; } validateOutputBufferUsage(buffer); auto grContext = mInProtectedContext ? mProtectedGrContext : mGrContext; auto& cache = mInProtectedContext ? mProtectedTextureCache : mTextureCache; AHardwareBuffer_Desc bufferDesc; Loading Loading @@ -815,6 +817,7 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, SkPaint paint; if (layer->source.buffer.buffer) { ATRACE_NAME("DrawImage"); validateInputBufferUsage(layer->source.buffer.buffer); const auto& item = layer->source.buffer; std::shared_ptr<AutoBackendTexture::LocalRef> imageTextureRef = nullptr; auto iter = mTextureCache.find(item.buffer->getId()); Loading
services/surfaceflinger/tests/BufferGenerator.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public: consumer->setDefaultBufferSize(width, height); consumer->setDefaultBufferFormat(format); mBufferItemConsumer = new BufferItemConsumer(consumer, 0); mBufferItemConsumer = new BufferItemConsumer(consumer, GraphicBuffer::USAGE_HW_TEXTURE); mListener = new BufferListener(consumer, callback); mBufferItemConsumer->setFrameAvailableListener(mListener); Loading