diff options
-rw-r--r-- | libs/renderengine/RenderEngine.cpp | 12 | ||||
-rw-r--r-- | libs/renderengine/gl/GLESRenderEngine.cpp | 9 | ||||
-rw-r--r-- | libs/renderengine/gl/GLESRenderEngine.h | 6 | ||||
-rw-r--r-- | libs/renderengine/include/renderengine/RenderEngine.h | 16 | ||||
-rw-r--r-- | libs/renderengine/include/renderengine/mock/RenderEngine.h | 8 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaGLRenderEngine.cpp | 11 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaGLRenderEngine.h | 4 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.h | 8 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.cpp | 15 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.h | 1 | ||||
-rw-r--r-- | services/surfaceflinger/tests/unittests/CompositionTest.cpp | 7 |
11 files changed, 17 insertions, 80 deletions
diff --git a/libs/renderengine/RenderEngine.cpp b/libs/renderengine/RenderEngine.cpp index c6436cdbec..3e65d9afce 100644 --- a/libs/renderengine/RenderEngine.cpp +++ b/libs/renderengine/RenderEngine.cpp @@ -18,7 +18,6 @@ #include <cutils/properties.h> #include <log/log.h> -#include <private/gui/SyncFeatures.h> #include "gl/GLESRenderEngine.h" #include "threaded/RenderEngineThreaded.h" @@ -59,16 +58,5 @@ std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArg RenderEngine::~RenderEngine() = default; -namespace impl { - -RenderEngine::RenderEngine(const RenderEngineCreationArgs& args) : mArgs(args) {} - -RenderEngine::~RenderEngine() = default; - -bool RenderEngine::useNativeFenceSync() const { - return SyncFeatures::getInstance().useNativeFenceSync(); -} - -} // namespace impl } // namespace renderengine } // namespace android diff --git a/libs/renderengine/gl/GLESRenderEngine.cpp b/libs/renderengine/gl/GLESRenderEngine.cpp index 3367664d81..6adcbeaf76 100644 --- a/libs/renderengine/gl/GLESRenderEngine.cpp +++ b/libs/renderengine/gl/GLESRenderEngine.cpp @@ -356,8 +356,7 @@ EGLConfig GLESRenderEngine::chooseEglConfig(EGLDisplay display, int format, bool GLESRenderEngine::GLESRenderEngine(const RenderEngineCreationArgs& args, EGLDisplay display, EGLConfig config, EGLContext ctxt, EGLSurface stub, EGLContext protectedContext, EGLSurface protectedStub) - : renderengine::impl::RenderEngine(args), - mEGLDisplay(display), + : mEGLDisplay(display), mEGLConfig(config), mEGLContext(ctxt), mStubSurface(stub), @@ -366,7 +365,8 @@ GLESRenderEngine::GLESRenderEngine(const RenderEngineCreationArgs& args, EGLDisp mVpWidth(0), mVpHeight(0), mFramebufferImageCacheSize(args.imageCacheSize), - mUseColorManagement(args.useColorManagement) { + mUseColorManagement(args.useColorManagement), + mPrecacheToneMapperShaderOnly(args.precacheToneMapperShaderOnly) { glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize); glGetIntegerv(GL_MAX_VIEWPORT_DIMS, mMaxViewportDims); @@ -475,8 +475,7 @@ Framebuffer* GLESRenderEngine::getFramebufferForDrawing() { void GLESRenderEngine::primeCache() const { ProgramCache::getInstance().primeCache(mInProtectedContext ? mProtectedEGLContext : mEGLContext, - mArgs.useColorManagement, - mArgs.precacheToneMapperShaderOnly); + mUseColorManagement, mPrecacheToneMapperShaderOnly); } base::unique_fd GLESRenderEngine::flush() { diff --git a/libs/renderengine/gl/GLESRenderEngine.h b/libs/renderengine/gl/GLESRenderEngine.h index c72b7f9d01..1779994d4a 100644 --- a/libs/renderengine/gl/GLESRenderEngine.h +++ b/libs/renderengine/gl/GLESRenderEngine.h @@ -48,7 +48,7 @@ namespace gl { class GLImage; class BlurFilter; -class GLESRenderEngine : public impl::RenderEngine { +class GLESRenderEngine : public RenderEngine { public: static std::unique_ptr<GLESRenderEngine> create(const RenderEngineCreationArgs& args); @@ -231,6 +231,10 @@ private: // supports sRGB, DisplayP3 color spaces. const bool mUseColorManagement = false; + // Whether only shaders performing tone mapping from HDR to SDR will be generated on + // primeCache(). + const bool mPrecacheToneMapperShaderOnly = false; + // Cache of GL images that we'll store per GraphicBuffer ID std::unordered_map<uint64_t, std::unique_ptr<Image>> mImageCache GUARDED_BY(mRenderingMutex); std::unordered_map<uint32_t, std::optional<uint64_t>> mTextureView; diff --git a/libs/renderengine/include/renderengine/RenderEngine.h b/libs/renderengine/include/renderengine/RenderEngine.h index 9b87229d66..11b8e44e4f 100644 --- a/libs/renderengine/include/renderengine/RenderEngine.h +++ b/libs/renderengine/include/renderengine/RenderEngine.h @@ -89,7 +89,6 @@ public: // dump the extension strings. always call the base class. virtual void dump(std::string& result) = 0; - 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; // Caches Image resources for this buffer, but does not bind the buffer to @@ -263,21 +262,6 @@ private: RenderEngine::RenderEngineType renderEngineType = RenderEngine::RenderEngineType::GLES; }; -namespace impl { - -// impl::RenderEngine contains common implementation that is graphics back-end agnostic. -class RenderEngine : public renderengine::RenderEngine { -public: - virtual ~RenderEngine() = 0; - - bool useNativeFenceSync() const override; - -protected: - RenderEngine(const RenderEngineCreationArgs& args); - const RenderEngineCreationArgs mArgs; -}; - -} // namespace impl } // namespace renderengine } // namespace android diff --git a/libs/renderengine/include/renderengine/mock/RenderEngine.h b/libs/renderengine/include/renderengine/mock/RenderEngine.h index 0b80d885b8..95ee9258a1 100644 --- a/libs/renderengine/include/renderengine/mock/RenderEngine.h +++ b/libs/renderengine/include/renderengine/mock/RenderEngine.h @@ -35,20 +35,12 @@ public: RenderEngine(); ~RenderEngine() override; - MOCK_METHOD0(getFramebufferForDrawing, Framebuffer*()); MOCK_CONST_METHOD0(primeCache, void()); MOCK_METHOD1(dump, void(std::string&)); - MOCK_CONST_METHOD0(useNativeFenceSync, bool()); - MOCK_CONST_METHOD0(useWaitSync, bool()); - MOCK_CONST_METHOD0(isCurrent, bool()); MOCK_METHOD2(genTextures, void(size_t, uint32_t*)); MOCK_METHOD2(deleteTextures, void(size_t, uint32_t const*)); MOCK_METHOD1(cacheExternalTextureBuffer, void(const sp<GraphicBuffer>&)); - MOCK_METHOD3(bindExternalTextureBuffer, - status_t(uint32_t, const sp<GraphicBuffer>&, const sp<Fence>&)); MOCK_METHOD1(unbindExternalTextureBuffer, void(uint64_t)); - MOCK_METHOD1(bindFrameBuffer, status_t(renderengine::Framebuffer*)); - MOCK_METHOD1(unbindFrameBuffer, void(renderengine::Framebuffer*)); MOCK_METHOD1(drawMesh, void(const renderengine::Mesh&)); MOCK_CONST_METHOD0(getMaxTextureSize, size_t()); MOCK_CONST_METHOD0(getMaxViewportDims, size_t()); diff --git a/libs/renderengine/skia/SkiaGLRenderEngine.cpp b/libs/renderengine/skia/SkiaGLRenderEngine.cpp index 94ba15392f..7cfe207c1e 100644 --- a/libs/renderengine/skia/SkiaGLRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaGLRenderEngine.cpp @@ -193,7 +193,7 @@ std::unique_ptr<SkiaGLRenderEngine> SkiaGLRenderEngine::create( // initialize the renderer while GL is current std::unique_ptr<SkiaGLRenderEngine> engine = - std::make_unique<SkiaGLRenderEngine>(args, display, config, ctxt, placeholder, + std::make_unique<SkiaGLRenderEngine>(display, config, ctxt, placeholder, protectedContext, protectedPlaceholder); ALOGI("OpenGL ES informations:"); @@ -246,11 +246,10 @@ EGLConfig SkiaGLRenderEngine::chooseEglConfig(EGLDisplay display, int format, bo return config; } -SkiaGLRenderEngine::SkiaGLRenderEngine(const RenderEngineCreationArgs& args, EGLDisplay display, - EGLConfig config, EGLContext ctxt, EGLSurface placeholder, - EGLContext protectedContext, EGLSurface protectedPlaceholder) - : renderengine::skia::SkiaRenderEngine(args), - mEGLDisplay(display), +SkiaGLRenderEngine::SkiaGLRenderEngine(EGLDisplay display, EGLConfig config, EGLContext ctxt, + EGLSurface placeholder, EGLContext protectedContext, + EGLSurface protectedPlaceholder) + : mEGLDisplay(display), mEGLConfig(config), mEGLContext(ctxt), mPlaceholderSurface(placeholder), diff --git a/libs/renderengine/skia/SkiaGLRenderEngine.h b/libs/renderengine/skia/SkiaGLRenderEngine.h index eb098cb0ac..b8387b2dc9 100644 --- a/libs/renderengine/skia/SkiaGLRenderEngine.h +++ b/libs/renderengine/skia/SkiaGLRenderEngine.h @@ -36,8 +36,8 @@ namespace skia { class SkiaGLRenderEngine : public skia::SkiaRenderEngine { public: static std::unique_ptr<SkiaGLRenderEngine> create(const RenderEngineCreationArgs& args); - SkiaGLRenderEngine(const RenderEngineCreationArgs& args, EGLDisplay display, EGLConfig config, - EGLContext ctxt, EGLSurface placeholder, EGLContext protectedContext, + SkiaGLRenderEngine(EGLDisplay display, EGLConfig config, EGLContext ctxt, + EGLSurface placeholder, EGLContext protectedContext, EGLSurface protectedPlaceholder); ~SkiaGLRenderEngine() override{}; diff --git a/libs/renderengine/skia/SkiaRenderEngine.h b/libs/renderengine/skia/SkiaRenderEngine.h index 3c5d0cf24d..2352c7e59e 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.h +++ b/libs/renderengine/skia/SkiaRenderEngine.h @@ -33,20 +33,14 @@ class BlurFilter; // TODO: Put common skia stuff here that can be shared between the GL & Vulkan backends // Currently mostly just handles all the no-op / missing APIs -class SkiaRenderEngine : public impl::RenderEngine { +class SkiaRenderEngine : public RenderEngine { public: static std::unique_ptr<SkiaRenderEngine> create(const RenderEngineCreationArgs& args); - SkiaRenderEngine(const RenderEngineCreationArgs& args) : RenderEngine(args){}; ~SkiaRenderEngine() override {} virtual void primeCache() const override{}; virtual void genTextures(size_t /*count*/, uint32_t* /*names*/) override{}; virtual void deleteTextures(size_t /*count*/, uint32_t const* /*names*/) override{}; - virtual status_t bindExternalTextureBuffer(uint32_t /*texName*/, - const sp<GraphicBuffer>& /*buffer*/, - const sp<Fence>& /*fence*/) { - return 0; - }; // EXCLUDES(mRenderingMutex); virtual void cacheExternalTextureBuffer(const sp<GraphicBuffer>& /*buffer*/){}; virtual void unbindExternalTextureBuffer(uint64_t /*bufferId*/){}; diff --git a/libs/renderengine/threaded/RenderEngineThreaded.cpp b/libs/renderengine/threaded/RenderEngineThreaded.cpp index 953cbc6f3d..5453302428 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.cpp +++ b/libs/renderengine/threaded/RenderEngineThreaded.cpp @@ -116,21 +116,6 @@ void RenderEngineThreaded::dump(std::string& result) { result.assign(resultFuture.get()); } -bool RenderEngineThreaded::useNativeFenceSync() const { - std::promise<bool> resultPromise; - std::future<bool> resultFuture = resultPromise.get_future(); - { - std::lock_guard lock(mThreadMutex); - mFunctionCalls.push([&resultPromise](renderengine::RenderEngine& /*instance*/) { - ATRACE_NAME("REThreaded::useNativeFenceSync"); - bool returnValue = SyncFeatures::getInstance().useNativeFenceSync(); - resultPromise.set_value(returnValue); - }); - } - mCondition.notify_one(); - return resultFuture.get(); -} - void RenderEngineThreaded::genTextures(size_t count, uint32_t* names) { 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 ac9f606a83..cdfbd04872 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.h +++ b/libs/renderengine/threaded/RenderEngineThreaded.h @@ -45,7 +45,6 @@ public: void dump(std::string& result) override; - bool useNativeFenceSync() const override; void genTextures(size_t count, uint32_t* names) override; void deleteTextures(size_t count, uint32_t const* names) override; void cacheExternalTextureBuffer(const sp<GraphicBuffer>& buffer) override; diff --git a/services/surfaceflinger/tests/unittests/CompositionTest.cpp b/services/surfaceflinger/tests/unittests/CompositionTest.cpp index 159a215667..e25ffb5234 100644 --- a/services/surfaceflinger/tests/unittests/CompositionTest.cpp +++ b/services/surfaceflinger/tests/unittests/CompositionTest.cpp @@ -339,8 +339,6 @@ struct BaseDisplayVariant { EXPECT_CALL(*test->mComposer, presentDisplay(HWC_DISPLAY, _)).Times(1); EXPECT_CALL(*test->mComposer, getReleaseFences(HWC_DISPLAY, _, _)).Times(1); - EXPECT_CALL(*test->mRenderEngine, useNativeFenceSync()).WillRepeatedly(Return(true)); - EXPECT_CALL(*test->mDisplaySurface, onFrameCommitted()).Times(1); EXPECT_CALL(*test->mDisplaySurface, advanceFrame()).Times(1); @@ -449,8 +447,6 @@ struct PoweredOffDisplaySetupVariant : public BaseDisplayVariant<PoweredOffDispl template <typename Case> static void setupCommonCompositionCallExpectations(CompositionTest* test) { - EXPECT_CALL(*test->mRenderEngine, useNativeFenceSync()).WillRepeatedly(Return(true)); - // TODO: This seems like an unnecessary call if display is powered off. EXPECT_CALL(*test->mComposer, setColorTransform(HWC_DISPLAY, _, Hwc2::ColorTransform::IDENTITY)) @@ -465,8 +461,6 @@ struct PoweredOffDisplaySetupVariant : public BaseDisplayVariant<PoweredOffDispl static void setupHwcForcedClientCompositionCallExpectations(CompositionTest*) {} static void setupRECompositionCallExpectations(CompositionTest* test) { - EXPECT_CALL(*test->mRenderEngine, useNativeFenceSync()).WillRepeatedly(Return(true)); - // TODO: This seems like an unnecessary call if display is powered off. EXPECT_CALL(*test->mDisplaySurface, getClientTargetAcquireFence()) .WillRepeatedly(ReturnRef(test->mClientTargetAcquireFence)); @@ -549,7 +543,6 @@ struct BaseLayerProperties { enqueueBuffer(test, layer); Mock::VerifyAndClearExpectations(test->mMessageQueue); - EXPECT_CALL(*test->mRenderEngine, useNativeFenceSync()).WillRepeatedly(Return(true)); bool ignoredRecomputeVisibleRegions; layer->latchBuffer(ignoredRecomputeVisibleRegions, 0, 0); Mock::VerifyAndClear(test->mRenderEngine); |