Loading libs/renderengine/RenderEngine.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -62,10 +62,6 @@ bool RenderEngine::useNativeFenceSync() const { return SyncFeatures::getInstance().useNativeFenceSync(); } bool RenderEngine::useWaitSync() const { return SyncFeatures::getInstance().useWaitSync(); } } // namespace impl } // namespace renderengine } // namespace android libs/renderengine/gl/GLESRenderEngine.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,28 @@ namespace android { namespace renderengine { namespace gl { class BindNativeBufferAsFramebuffer { public: BindNativeBufferAsFramebuffer(GLESRenderEngine& engine, ANativeWindowBuffer* buffer, const bool useFramebufferCache) : mEngine(engine), mFramebuffer(mEngine.getFramebufferForDrawing()), mStatus(NO_ERROR) { mStatus = mFramebuffer->setNativeWindowBuffer(buffer, mEngine.isProtected(), useFramebufferCache) ? mEngine.bindFrameBuffer(mFramebuffer) : NO_MEMORY; } ~BindNativeBufferAsFramebuffer() { mFramebuffer->setNativeWindowBuffer(nullptr, false, /*arbitrary*/ true); mEngine.unbindFrameBuffer(mFramebuffer); } status_t getStatus() const { return mStatus; } private: GLESRenderEngine& mEngine; Framebuffer* mFramebuffer; status_t mStatus; }; using base::StringAppendF; using ui::Dataspace; Loading libs/renderengine/gl/GLESRenderEngine.h +6 −4 Original line number Diff line number Diff line Loading @@ -60,13 +60,10 @@ public: void primeCache() const override; void genTextures(size_t count, uint32_t* names) override; void deleteTextures(size_t count, uint32_t const* names) override; void bindExternalTextureImage(uint32_t texName, const Image& image) override; status_t bindExternalTextureBuffer(uint32_t texName, const sp<GraphicBuffer>& buffer, const sp<Fence>& fence) EXCLUDES(mRenderingMutex); void cacheExternalTextureBuffer(const sp<GraphicBuffer>& buffer) EXCLUDES(mRenderingMutex); void unbindExternalTextureBuffer(uint64_t bufferId) EXCLUDES(mRenderingMutex); status_t bindFrameBuffer(Framebuffer* framebuffer) override; void unbindFrameBuffer(Framebuffer* framebuffer) override; bool isProtected() const override { return mInProtectedContext; } bool supportsProtectedContent() const override; Loading Loading @@ -102,13 +99,15 @@ public: std::shared_ptr<ImageManager::Barrier> unbindExternalTextureBufferForTesting(uint64_t bufferId); protected: Framebuffer* getFramebufferForDrawing() override; Framebuffer* getFramebufferForDrawing(); void dump(std::string& result) override EXCLUDES(mRenderingMutex) EXCLUDES(mFramebufferImageCacheMutex); size_t getMaxTextureSize() const override; size_t getMaxViewportDims() const override; private: friend class BindNativeBufferAsFramebuffer; enum GlesVersion { GLES_VERSION_1_0 = 0x10000, GLES_VERSION_1_1 = 0x10001, Loading @@ -133,6 +132,9 @@ private: status_t cacheExternalTextureBufferInternal(const sp<GraphicBuffer>& buffer) EXCLUDES(mRenderingMutex); void unbindExternalTextureBufferInternal(uint64_t bufferId) EXCLUDES(mRenderingMutex); status_t bindFrameBuffer(Framebuffer* framebuffer); void unbindFrameBuffer(Framebuffer* framebuffer); void bindExternalTextureImage(uint32_t texName, const Image& image); // A data space is considered HDR data space if it has BT2020 color space // with PQ or HLG transfer function. Loading libs/renderengine/include/renderengine/RenderEngine.h +0 −37 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ class Region; namespace renderengine { class BindNativeBufferAsFramebuffer; class Image; class Mesh; class Texture; Loading Loading @@ -90,10 +89,8 @@ public: virtual void dump(std::string& result) = 0; virtual bool useNativeFenceSync() const = 0; virtual bool useWaitSync() const = 0; virtual void genTextures(size_t count, uint32_t* names) = 0; virtual void deleteTextures(size_t count, uint32_t const* names) = 0; virtual void bindExternalTextureImage(uint32_t texName, const Image& image) = 0; // Legacy public method used by devices that don't support native fence // synchronization in their GPU driver, as this method provides implicit // synchronization for latching buffers. Loading @@ -116,10 +113,6 @@ public: // a buffer should never occur before binding the buffer if the caller // called {bind, cache}ExternalTextureBuffer before calling unbind. virtual void unbindExternalTextureBuffer(uint64_t bufferId) = 0; // When binding a native buffer, it must be done before setViewportAndProjection // Returns NO_ERROR when binds successfully, NO_MEMORY when there's no memory for allocation. virtual status_t bindFrameBuffer(Framebuffer* framebuffer) = 0; virtual void unbindFrameBuffer(Framebuffer* framebuffer) = 0; enum class CleanupMode { CLEAN_OUTPUT_RESOURCES, Loading Loading @@ -187,13 +180,6 @@ public: base::unique_fd&& bufferFence, base::unique_fd* drawFence) = 0; protected: // Gets a framebuffer to render to. This framebuffer may or may not be // cached depending on the implementation. // // Note that this method does not transfer ownership, so the caller most not // live longer than RenderEngine. virtual Framebuffer* getFramebufferForDrawing() = 0; friend class BindNativeBufferAsFramebuffer; friend class threaded::RenderEngineThreaded; }; Loading Loading @@ -280,28 +266,6 @@ private: RenderEngine::RenderEngineType renderEngineType = RenderEngine::RenderEngineType::GLES; }; class BindNativeBufferAsFramebuffer { public: BindNativeBufferAsFramebuffer(RenderEngine& engine, ANativeWindowBuffer* buffer, const bool useFramebufferCache) : mEngine(engine), mFramebuffer(mEngine.getFramebufferForDrawing()), mStatus(NO_ERROR) { mStatus = mFramebuffer->setNativeWindowBuffer(buffer, mEngine.isProtected(), useFramebufferCache) ? mEngine.bindFrameBuffer(mFramebuffer) : NO_MEMORY; } ~BindNativeBufferAsFramebuffer() { mFramebuffer->setNativeWindowBuffer(nullptr, false, /*arbitrary*/ true); mEngine.unbindFrameBuffer(mFramebuffer); } status_t getStatus() const { return mStatus; } private: RenderEngine& mEngine; Framebuffer* mFramebuffer; status_t mStatus; }; namespace impl { // impl::RenderEngine contains common implementation that is graphics back-end agnostic. Loading @@ -310,7 +274,6 @@ public: virtual ~RenderEngine() = 0; bool useNativeFenceSync() const override; bool useWaitSync() const override; protected: RenderEngine(const RenderEngineCreationArgs& args); Loading libs/renderengine/include/renderengine/mock/RenderEngine.h +0 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ public: MOCK_CONST_METHOD0(isCurrent, bool()); MOCK_METHOD2(genTextures, void(size_t, uint32_t*)); MOCK_METHOD2(deleteTextures, void(size_t, uint32_t const*)); MOCK_METHOD2(bindExternalTextureImage, void(uint32_t, const renderengine::Image&)); MOCK_METHOD1(cacheExternalTextureBuffer, void(const sp<GraphicBuffer>&)); MOCK_METHOD3(bindExternalTextureBuffer, status_t(uint32_t, const sp<GraphicBuffer>&, const sp<Fence>&)); Loading Loading
libs/renderengine/RenderEngine.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -62,10 +62,6 @@ bool RenderEngine::useNativeFenceSync() const { return SyncFeatures::getInstance().useNativeFenceSync(); } bool RenderEngine::useWaitSync() const { return SyncFeatures::getInstance().useWaitSync(); } } // namespace impl } // namespace renderengine } // namespace android
libs/renderengine/gl/GLESRenderEngine.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,28 @@ namespace android { namespace renderengine { namespace gl { class BindNativeBufferAsFramebuffer { public: BindNativeBufferAsFramebuffer(GLESRenderEngine& engine, ANativeWindowBuffer* buffer, const bool useFramebufferCache) : mEngine(engine), mFramebuffer(mEngine.getFramebufferForDrawing()), mStatus(NO_ERROR) { mStatus = mFramebuffer->setNativeWindowBuffer(buffer, mEngine.isProtected(), useFramebufferCache) ? mEngine.bindFrameBuffer(mFramebuffer) : NO_MEMORY; } ~BindNativeBufferAsFramebuffer() { mFramebuffer->setNativeWindowBuffer(nullptr, false, /*arbitrary*/ true); mEngine.unbindFrameBuffer(mFramebuffer); } status_t getStatus() const { return mStatus; } private: GLESRenderEngine& mEngine; Framebuffer* mFramebuffer; status_t mStatus; }; using base::StringAppendF; using ui::Dataspace; Loading
libs/renderengine/gl/GLESRenderEngine.h +6 −4 Original line number Diff line number Diff line Loading @@ -60,13 +60,10 @@ public: void primeCache() const override; void genTextures(size_t count, uint32_t* names) override; void deleteTextures(size_t count, uint32_t const* names) override; void bindExternalTextureImage(uint32_t texName, const Image& image) override; status_t bindExternalTextureBuffer(uint32_t texName, const sp<GraphicBuffer>& buffer, const sp<Fence>& fence) EXCLUDES(mRenderingMutex); void cacheExternalTextureBuffer(const sp<GraphicBuffer>& buffer) EXCLUDES(mRenderingMutex); void unbindExternalTextureBuffer(uint64_t bufferId) EXCLUDES(mRenderingMutex); status_t bindFrameBuffer(Framebuffer* framebuffer) override; void unbindFrameBuffer(Framebuffer* framebuffer) override; bool isProtected() const override { return mInProtectedContext; } bool supportsProtectedContent() const override; Loading Loading @@ -102,13 +99,15 @@ public: std::shared_ptr<ImageManager::Barrier> unbindExternalTextureBufferForTesting(uint64_t bufferId); protected: Framebuffer* getFramebufferForDrawing() override; Framebuffer* getFramebufferForDrawing(); void dump(std::string& result) override EXCLUDES(mRenderingMutex) EXCLUDES(mFramebufferImageCacheMutex); size_t getMaxTextureSize() const override; size_t getMaxViewportDims() const override; private: friend class BindNativeBufferAsFramebuffer; enum GlesVersion { GLES_VERSION_1_0 = 0x10000, GLES_VERSION_1_1 = 0x10001, Loading @@ -133,6 +132,9 @@ private: status_t cacheExternalTextureBufferInternal(const sp<GraphicBuffer>& buffer) EXCLUDES(mRenderingMutex); void unbindExternalTextureBufferInternal(uint64_t bufferId) EXCLUDES(mRenderingMutex); status_t bindFrameBuffer(Framebuffer* framebuffer); void unbindFrameBuffer(Framebuffer* framebuffer); void bindExternalTextureImage(uint32_t texName, const Image& image); // A data space is considered HDR data space if it has BT2020 color space // with PQ or HLG transfer function. Loading
libs/renderengine/include/renderengine/RenderEngine.h +0 −37 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ class Region; namespace renderengine { class BindNativeBufferAsFramebuffer; class Image; class Mesh; class Texture; Loading Loading @@ -90,10 +89,8 @@ public: virtual void dump(std::string& result) = 0; virtual bool useNativeFenceSync() const = 0; virtual bool useWaitSync() const = 0; virtual void genTextures(size_t count, uint32_t* names) = 0; virtual void deleteTextures(size_t count, uint32_t const* names) = 0; virtual void bindExternalTextureImage(uint32_t texName, const Image& image) = 0; // Legacy public method used by devices that don't support native fence // synchronization in their GPU driver, as this method provides implicit // synchronization for latching buffers. Loading @@ -116,10 +113,6 @@ public: // a buffer should never occur before binding the buffer if the caller // called {bind, cache}ExternalTextureBuffer before calling unbind. virtual void unbindExternalTextureBuffer(uint64_t bufferId) = 0; // When binding a native buffer, it must be done before setViewportAndProjection // Returns NO_ERROR when binds successfully, NO_MEMORY when there's no memory for allocation. virtual status_t bindFrameBuffer(Framebuffer* framebuffer) = 0; virtual void unbindFrameBuffer(Framebuffer* framebuffer) = 0; enum class CleanupMode { CLEAN_OUTPUT_RESOURCES, Loading Loading @@ -187,13 +180,6 @@ public: base::unique_fd&& bufferFence, base::unique_fd* drawFence) = 0; protected: // Gets a framebuffer to render to. This framebuffer may or may not be // cached depending on the implementation. // // Note that this method does not transfer ownership, so the caller most not // live longer than RenderEngine. virtual Framebuffer* getFramebufferForDrawing() = 0; friend class BindNativeBufferAsFramebuffer; friend class threaded::RenderEngineThreaded; }; Loading Loading @@ -280,28 +266,6 @@ private: RenderEngine::RenderEngineType renderEngineType = RenderEngine::RenderEngineType::GLES; }; class BindNativeBufferAsFramebuffer { public: BindNativeBufferAsFramebuffer(RenderEngine& engine, ANativeWindowBuffer* buffer, const bool useFramebufferCache) : mEngine(engine), mFramebuffer(mEngine.getFramebufferForDrawing()), mStatus(NO_ERROR) { mStatus = mFramebuffer->setNativeWindowBuffer(buffer, mEngine.isProtected(), useFramebufferCache) ? mEngine.bindFrameBuffer(mFramebuffer) : NO_MEMORY; } ~BindNativeBufferAsFramebuffer() { mFramebuffer->setNativeWindowBuffer(nullptr, false, /*arbitrary*/ true); mEngine.unbindFrameBuffer(mFramebuffer); } status_t getStatus() const { return mStatus; } private: RenderEngine& mEngine; Framebuffer* mFramebuffer; status_t mStatus; }; namespace impl { // impl::RenderEngine contains common implementation that is graphics back-end agnostic. Loading @@ -310,7 +274,6 @@ public: virtual ~RenderEngine() = 0; bool useNativeFenceSync() const override; bool useWaitSync() const override; protected: RenderEngine(const RenderEngineCreationArgs& args); Loading
libs/renderengine/include/renderengine/mock/RenderEngine.h +0 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ public: MOCK_CONST_METHOD0(isCurrent, bool()); MOCK_METHOD2(genTextures, void(size_t, uint32_t*)); MOCK_METHOD2(deleteTextures, void(size_t, uint32_t const*)); MOCK_METHOD2(bindExternalTextureImage, void(uint32_t, const renderengine::Image&)); MOCK_METHOD1(cacheExternalTextureBuffer, void(const sp<GraphicBuffer>&)); MOCK_METHOD3(bindExternalTextureBuffer, status_t(uint32_t, const sp<GraphicBuffer>&, const sp<Fence>&)); Loading