diff options
author | 2020-09-14 15:34:16 -0700 | |
---|---|---|
committer | 2020-09-14 17:06:29 -0700 | |
commit | 04eae7d3f5d142ed9e67591a508994d82c95c552 (patch) | |
tree | e71bdde9f153406289258588cd2633d4e9a9ad93 | |
parent | 54ceb44894275062239c040707b3a699b6e30bea (diff) |
Remove unused code
* Remove BufferLayer::bindTextureImage
* Remove RenderEngine::bindExternalTextureBuffer. In particular, this
function was legacy back from 2012 around when SurfaceTexture was forked
into SurfaceFlinger. By now there's been some architectural changes,
including Treble enforcement of a process boundary between SF and HWC,
meaning that the "implicit synchronization" no longer really makes
sense to enforce.
Bug: 168553972
Test: builds
Test: Cuttlefish boots, can interact without visual artifacts.
Change-Id: I259160ccc6cc02fe3ac0d9b5edc4c1c72d3d582f
-rw-r--r-- | libs/renderengine/gl/GLESRenderEngine.cpp | 22 | ||||
-rw-r--r-- | libs/renderengine/gl/GLESRenderEngine.h | 4 | ||||
-rw-r--r-- | libs/renderengine/include/renderengine/RenderEngine.h | 5 | ||||
-rw-r--r-- | libs/renderengine/tests/RenderEngineTest.cpp | 25 | ||||
-rw-r--r-- | libs/renderengine/tests/RenderEngineThreadedTest.cpp | 15 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.cpp | 18 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.h | 2 | ||||
-rw-r--r-- | services/surfaceflinger/BufferLayer.h | 1 | ||||
-rw-r--r-- | services/surfaceflinger/BufferLayerConsumer.cpp | 27 | ||||
-rw-r--r-- | services/surfaceflinger/BufferLayerConsumer.h | 7 | ||||
-rw-r--r-- | services/surfaceflinger/BufferQueueLayer.cpp | 4 | ||||
-rw-r--r-- | services/surfaceflinger/BufferQueueLayer.h | 1 | ||||
-rw-r--r-- | services/surfaceflinger/BufferStateLayer.cpp | 21 | ||||
-rw-r--r-- | services/surfaceflinger/BufferStateLayer.h | 1 |
14 files changed, 11 insertions, 142 deletions
diff --git a/libs/renderengine/gl/GLESRenderEngine.cpp b/libs/renderengine/gl/GLESRenderEngine.cpp index 42e74df901..3367664d81 100644 --- a/libs/renderengine/gl/GLESRenderEngine.cpp +++ b/libs/renderengine/gl/GLESRenderEngine.cpp @@ -639,13 +639,8 @@ void GLESRenderEngine::bindExternalTextureImage(uint32_t texName, const Image& i } } -status_t GLESRenderEngine::bindExternalTextureBuffer(uint32_t texName, - const sp<GraphicBuffer>& buffer, - const sp<Fence>& bufferFence) { - if (buffer == nullptr) { - return BAD_VALUE; - } - +void GLESRenderEngine::bindExternalTextureBuffer(uint32_t texName, const sp<GraphicBuffer>& buffer, + const sp<Fence>& bufferFence) { ATRACE_CALL(); bool found = false; @@ -661,7 +656,8 @@ status_t GLESRenderEngine::bindExternalTextureBuffer(uint32_t texName, if (!found) { status_t cacheResult = mImageManager->cache(buffer); if (cacheResult != NO_ERROR) { - return cacheResult; + ALOGE("Error with caching buffer: %d", cacheResult); + return; } } @@ -678,7 +674,7 @@ status_t GLESRenderEngine::bindExternalTextureBuffer(uint32_t texName, // We failed creating the image if we got here, so bail out. ALOGE("Failed to create an EGLImage when rendering"); bindExternalTextureImage(texName, *createImage()); - return NO_INIT; + return; } bindExternalTextureImage(texName, *cachedImage->second); @@ -691,22 +687,22 @@ status_t GLESRenderEngine::bindExternalTextureBuffer(uint32_t texName, base::unique_fd fenceFd(bufferFence->dup()); if (fenceFd == -1) { ALOGE("error dup'ing fence fd: %d", errno); - return -errno; + return; } if (!waitFence(std::move(fenceFd))) { ALOGE("failed to wait on fence fd"); - return UNKNOWN_ERROR; + return; } } else { status_t err = bufferFence->waitForever("RenderEngine::bindExternalTextureBuffer"); if (err != NO_ERROR) { ALOGE("error waiting for fence: %d", err); - return err; + return; } } } - return NO_ERROR; + return; } void GLESRenderEngine::cacheExternalTextureBuffer(const sp<GraphicBuffer>& buffer) { diff --git a/libs/renderengine/gl/GLESRenderEngine.h b/libs/renderengine/gl/GLESRenderEngine.h index 8f0df2c32a..c72b7f9d01 100644 --- a/libs/renderengine/gl/GLESRenderEngine.h +++ b/libs/renderengine/gl/GLESRenderEngine.h @@ -60,8 +60,6 @@ public: void primeCache() const override; void genTextures(size_t count, uint32_t* names) override; void deleteTextures(size_t count, uint32_t const* names) 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); @@ -135,6 +133,8 @@ private: status_t bindFrameBuffer(Framebuffer* framebuffer); void unbindFrameBuffer(Framebuffer* framebuffer); void bindExternalTextureImage(uint32_t texName, const Image& image); + void bindExternalTextureBuffer(uint32_t texName, const sp<GraphicBuffer>& buffer, + const sp<Fence>& fence) EXCLUDES(mRenderingMutex); void cleanFramebufferCache() EXCLUDES(mFramebufferImageCacheMutex) override; // A data space is considered HDR data space if it has BT2020 color space diff --git a/libs/renderengine/include/renderengine/RenderEngine.h b/libs/renderengine/include/renderengine/RenderEngine.h index a0e7ab7a43..43b12e776e 100644 --- a/libs/renderengine/include/renderengine/RenderEngine.h +++ b/libs/renderengine/include/renderengine/RenderEngine.h @@ -91,11 +91,6 @@ public: virtual bool useNativeFenceSync() const = 0; virtual void genTextures(size_t count, uint32_t* names) = 0; virtual void deleteTextures(size_t count, uint32_t const* names) = 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. - virtual status_t bindExternalTextureBuffer(uint32_t texName, const sp<GraphicBuffer>& buffer, - const sp<Fence>& fence) = 0; // Caches Image resources for this buffer, but does not bind the buffer to // a particular texture. // Note that work is deferred to an additional thread, i.e. this call diff --git a/libs/renderengine/tests/RenderEngineTest.cpp b/libs/renderengine/tests/RenderEngineTest.cpp index c92e817941..d795616b48 100644 --- a/libs/renderengine/tests/RenderEngineTest.cpp +++ b/libs/renderengine/tests/RenderEngineTest.cpp @@ -1242,31 +1242,6 @@ TEST_F(RenderEngineTest, drawLayers_fillsBufferAndCachesImages) { EXPECT_EQ(NO_ERROR, barrier->result); } -TEST_F(RenderEngineTest, bindExternalBuffer_withNullBuffer) { - status_t result = sRE->bindExternalTextureBuffer(0, nullptr, nullptr); - ASSERT_EQ(BAD_VALUE, result); -} - -TEST_F(RenderEngineTest, bindExternalBuffer_cachesImages) { - sp<GraphicBuffer> buf = allocateSourceBuffer(1, 1); - uint32_t texName; - sRE->genTextures(1, &texName); - mTexNames.push_back(texName); - - sRE->bindExternalTextureBuffer(texName, buf, nullptr); - uint64_t bufferId = buf->getId(); - EXPECT_TRUE(sRE->isImageCachedForTesting(bufferId)); - std::shared_ptr<renderengine::gl::ImageManager::Barrier> barrier = - sRE->unbindExternalTextureBufferForTesting(bufferId); - std::lock_guard<std::mutex> lock(barrier->mutex); - ASSERT_TRUE(barrier->condition.wait_for(barrier->mutex, std::chrono::seconds(5), - [&]() REQUIRES(barrier->mutex) { - return barrier->isOpen; - })); - EXPECT_EQ(NO_ERROR, barrier->result); - EXPECT_FALSE(sRE->isImageCachedForTesting(bufferId)); -} - TEST_F(RenderEngineTest, cacheExternalBuffer_withNullBuffer) { std::shared_ptr<renderengine::gl::ImageManager::Barrier> barrier = sRE->cacheExternalTextureBufferForTesting(nullptr); diff --git a/libs/renderengine/tests/RenderEngineThreadedTest.cpp b/libs/renderengine/tests/RenderEngineThreadedTest.cpp index 78fec29036..ba5175d985 100644 --- a/libs/renderengine/tests/RenderEngineThreadedTest.cpp +++ b/libs/renderengine/tests/RenderEngineThreadedTest.cpp @@ -62,21 +62,6 @@ TEST_F(RenderEngineThreadedTest, deleteTextures) { mThreadedRE->deleteTextures(1, &texName); } -TEST_F(RenderEngineThreadedTest, bindExternalBuffer_nullptrBuffer) { - EXPECT_CALL(*mRenderEngine, bindExternalTextureBuffer(0, Eq(nullptr), Eq(nullptr))) - .WillOnce(Return(BAD_VALUE)); - status_t result = mThreadedRE->bindExternalTextureBuffer(0, nullptr, nullptr); - ASSERT_EQ(BAD_VALUE, result); -} - -TEST_F(RenderEngineThreadedTest, bindExternalBuffer_withBuffer) { - sp<GraphicBuffer> buf = new GraphicBuffer(); - EXPECT_CALL(*mRenderEngine, bindExternalTextureBuffer(0, buf, Eq(nullptr))) - .WillOnce(Return(NO_ERROR)); - status_t result = mThreadedRE->bindExternalTextureBuffer(0, buf, nullptr); - ASSERT_EQ(NO_ERROR, result); -} - TEST_F(RenderEngineThreadedTest, cacheExternalTextureBuffer_nullptr) { EXPECT_CALL(*mRenderEngine, cacheExternalTextureBuffer(Eq(nullptr))); mThreadedRE->cacheExternalTextureBuffer(nullptr); diff --git a/libs/renderengine/threaded/RenderEngineThreaded.cpp b/libs/renderengine/threaded/RenderEngineThreaded.cpp index 9b79943235..953cbc6f3d 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.cpp +++ b/libs/renderengine/threaded/RenderEngineThreaded.cpp @@ -161,24 +161,6 @@ void RenderEngineThreaded::deleteTextures(size_t count, uint32_t const* names) { resultFuture.wait(); } -status_t RenderEngineThreaded::bindExternalTextureBuffer(uint32_t texName, - const sp<GraphicBuffer>& buffer, - const sp<Fence>& fence) { - std::promise<status_t> resultPromise; - std::future<status_t> resultFuture = resultPromise.get_future(); - { - std::lock_guard lock(mThreadMutex); - mFunctionCalls.push( - [&resultPromise, texName, &buffer, &fence](renderengine::RenderEngine& instance) { - ATRACE_NAME("REThreaded::bindExternalTextureBuffer"); - status_t status = instance.bindExternalTextureBuffer(texName, buffer, fence); - resultPromise.set_value(status); - }); - } - mCondition.notify_one(); - return resultFuture.get(); -} - void RenderEngineThreaded::cacheExternalTextureBuffer(const sp<GraphicBuffer>& buffer) { std::promise<void> resultPromise; std::future<void> resultFuture = resultPromise.get_future(); diff --git a/libs/renderengine/threaded/RenderEngineThreaded.h b/libs/renderengine/threaded/RenderEngineThreaded.h index b02cdd9e46..ac9f606a83 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.h +++ b/libs/renderengine/threaded/RenderEngineThreaded.h @@ -48,8 +48,6 @@ public: bool useNativeFenceSync() const override; void genTextures(size_t count, uint32_t* names) override; void deleteTextures(size_t count, uint32_t const* names) override; - status_t bindExternalTextureBuffer(uint32_t texName, const sp<GraphicBuffer>& buffer, - const sp<Fence>& fence) override; void cacheExternalTextureBuffer(const sp<GraphicBuffer>& buffer) override; void unbindExternalTextureBuffer(uint64_t bufferId) override; size_t getMaxTextureSize() const override; diff --git a/services/surfaceflinger/BufferLayer.h b/services/surfaceflinger/BufferLayer.h index 54c060bf9f..d460d3d7db 100644 --- a/services/surfaceflinger/BufferLayer.h +++ b/services/surfaceflinger/BufferLayer.h @@ -187,7 +187,6 @@ private: virtual bool hasFrameUpdate() const = 0; - virtual status_t bindTextureImage() = 0; virtual status_t updateTexImage(bool& recomputeVisibleRegions, nsecs_t latchTime, nsecs_t expectedPresentTime) = 0; diff --git a/services/surfaceflinger/BufferLayerConsumer.cpp b/services/surfaceflinger/BufferLayerConsumer.cpp index 94cbfa1803..7c73df2de5 100644 --- a/services/surfaceflinger/BufferLayerConsumer.cpp +++ b/services/surfaceflinger/BufferLayerConsumer.cpp @@ -153,25 +153,9 @@ status_t BufferLayerConsumer::updateTexImage(BufferRejecter* rejecter, nsecs_t e if (err != NO_ERROR) { return err; } - - if (!mRE.useNativeFenceSync()) { - // Bind the new buffer to the GL texture. - // - // Older devices require the "implicit" synchronization provided - // by glEGLImageTargetTexture2DOES, which this method calls. Newer - // devices will either call this in Layer::onDraw, or (if it's not - // a GL-composited layer) not at all. - err = bindTextureImageLocked(); - } - return err; } -status_t BufferLayerConsumer::bindTextureImage() { - Mutex::Autolock lock(mMutex); - return bindTextureImageLocked(); -} - void BufferLayerConsumer::setReleaseFence(const sp<Fence>& fence) { if (!fence->isValid()) { return; @@ -292,17 +276,6 @@ status_t BufferLayerConsumer::updateAndReleaseLocked(const BufferItem& item, return err; } -status_t BufferLayerConsumer::bindTextureImageLocked() { - ATRACE_CALL(); - - if (mCurrentTextureBuffer != nullptr && mCurrentTextureBuffer->graphicBuffer() != nullptr) { - return mRE.bindExternalTextureBuffer(mTexName, mCurrentTextureBuffer->graphicBuffer(), - mCurrentFence); - } - - return NO_INIT; -} - void BufferLayerConsumer::getTransformMatrix(float mtx[16]) { Mutex::Autolock lock(mMutex); memcpy(mtx, mCurrentTransformMatrix, sizeof(mCurrentTransformMatrix)); diff --git a/services/surfaceflinger/BufferLayerConsumer.h b/services/surfaceflinger/BufferLayerConsumer.h index a28902d964..dd39214aff 100644 --- a/services/surfaceflinger/BufferLayerConsumer.h +++ b/services/surfaceflinger/BufferLayerConsumer.h @@ -94,9 +94,6 @@ public: status_t updateTexImage(BufferRejecter* rejecter, nsecs_t expectedPresentTime, bool* autoRefresh, bool* queuedBuffer, uint64_t maxFrameNumber); - // See BufferLayerConsumer::bindTextureImageLocked(). - status_t bindTextureImage(); - // setReleaseFence stores a fence that will signal when the current buffer // is no longer being read. This fence will be returned to the producer // when the current buffer is released by updateTexImage(). Multiple @@ -214,10 +211,6 @@ protected: PendingRelease* pendingRelease = nullptr) EXCLUDES(mImagesMutex); - // Binds mTexName and the current buffer to TEXTURE_EXTERNAL target. - // If the bind succeeds, this calls doFenceWait. - status_t bindTextureImageLocked(); - private: // Utility class for managing GraphicBuffer references into renderengine class Image { diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp index 89284f26db..97ad212b48 100644 --- a/services/surfaceflinger/BufferQueueLayer.cpp +++ b/services/surfaceflinger/BufferQueueLayer.cpp @@ -229,10 +229,6 @@ bool BufferQueueLayer::hasFrameUpdate() const { return mQueuedFrames > 0; } -status_t BufferQueueLayer::bindTextureImage() { - return mConsumer->bindTextureImage(); -} - status_t BufferQueueLayer::updateTexImage(bool& recomputeVisibleRegions, nsecs_t latchTime, nsecs_t expectedPresentTime) { // This boolean is used to make sure that SurfaceFlinger's shadow copy diff --git a/services/surfaceflinger/BufferQueueLayer.h b/services/surfaceflinger/BufferQueueLayer.h index 1ac0453ba6..7d06128f22 100644 --- a/services/surfaceflinger/BufferQueueLayer.h +++ b/services/surfaceflinger/BufferQueueLayer.h @@ -94,7 +94,6 @@ private: bool hasFrameUpdate() const override; - status_t bindTextureImage() override; status_t updateTexImage(bool& recomputeVisibleRegions, nsecs_t latchTime, nsecs_t expectedPresentTime) override; diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp index 884cc0c3b6..ea1f78c048 100644 --- a/services/surfaceflinger/BufferStateLayer.cpp +++ b/services/surfaceflinger/BufferStateLayer.cpp @@ -508,13 +508,6 @@ bool BufferStateLayer::hasFrameUpdate() const { return mCurrentStateModified && (c.buffer != nullptr || c.bgColorLayer != nullptr); } -status_t BufferStateLayer::bindTextureImage() { - const State& s(getDrawingState()); - auto& engine(mFlinger->getRenderEngine()); - - return engine.bindExternalTextureBuffer(mTextureName, s.buffer, s.acquireFence); -} - status_t BufferStateLayer::updateTexImage(bool& /*recomputeVisibleRegions*/, nsecs_t latchTime, nsecs_t /*expectedPresentTime*/) { const State& s(getDrawingState()); @@ -559,20 +552,6 @@ status_t BufferStateLayer::updateTexImage(bool& /*recomputeVisibleRegions*/, nse handle->frameNumber = mDrawingState.frameNumber; } - if (!SyncFeatures::getInstance().useNativeFenceSync()) { - // Bind the new buffer to the GL texture. - // - // Older devices require the "implicit" synchronization provided - // by glEGLImageTargetTexture2DOES, which this method calls. Newer - // devices will either call this in Layer::onDraw, or (if it's not - // a GL-composited layer) not at all. - status_t err = bindTextureImage(); - if (err != NO_ERROR) { - mFlinger->mTimeStats->onDestroy(layerId); - return BAD_VALUE; - } - } - mFlinger->mTimeStats->setAcquireFence(layerId, mDrawingState.frameNumber, std::make_shared<FenceTime>(mDrawingState.acquireFence)); mFlinger->mTimeStats->setLatchTime(layerId, mDrawingState.frameNumber, latchTime); diff --git a/services/surfaceflinger/BufferStateLayer.h b/services/surfaceflinger/BufferStateLayer.h index 89d9a0002f..81959ae2f3 100644 --- a/services/surfaceflinger/BufferStateLayer.h +++ b/services/surfaceflinger/BufferStateLayer.h @@ -129,7 +129,6 @@ private: bool hasFrameUpdate() const override; - status_t bindTextureImage() override; status_t updateTexImage(bool& recomputeVisibleRegions, nsecs_t latchTime, nsecs_t expectedPresentTime) override; |