diff options
author | 2022-02-09 20:02:37 +0000 | |
---|---|---|
committer | 2022-02-09 20:02:37 +0000 | |
commit | 7c60b886d46e8bf76f19c00130b9bc3d28cd2f6d (patch) | |
tree | d148f826d0ee217a79aa60208aaf8454ab59d220 | |
parent | 77136173c903bfc323027378f823d6d8f0a3f2f3 (diff) | |
parent | a37ca99ff4068972ad308484cea8f7f156a48f69 (diff) |
Merge "Read prop for Skia tracing after boot"
-rw-r--r-- | libs/renderengine/include/renderengine/RenderEngine.h | 2 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.cpp | 8 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.h | 1 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.cpp | 12 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.h | 1 | ||||
-rw-r--r-- | services/surfaceflinger/FlagManager.cpp | 10 | ||||
-rw-r--r-- | services/surfaceflinger/FlagManager.h | 2 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 1 |
8 files changed, 33 insertions, 4 deletions
diff --git a/libs/renderengine/include/renderengine/RenderEngine.h b/libs/renderengine/include/renderengine/RenderEngine.h index faa84fc1cd..3e7f69ce02 100644 --- a/libs/renderengine/include/renderengine/RenderEngine.h +++ b/libs/renderengine/include/renderengine/RenderEngine.h @@ -194,6 +194,8 @@ public: // Returns the tid of the renderengine thread if it's threaded, and std::nullopt otherwise virtual std::optional<pid_t> getRenderEngineTid() const { return std::nullopt; } + virtual void setEnableTracing(bool /*tracingEnabled*/) {} + protected: RenderEngine() : RenderEngine(RenderEngineType::GLES) {} diff --git a/libs/renderengine/skia/SkiaRenderEngine.cpp b/libs/renderengine/skia/SkiaRenderEngine.cpp index 29175a227e..1fb24f5041 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaRenderEngine.cpp @@ -20,15 +20,15 @@ #include "SkiaRenderEngine.h" -#include <android-base/properties.h> #include <src/core/SkTraceEventCommon.h> namespace android { namespace renderengine { namespace skia { -SkiaRenderEngine::SkiaRenderEngine(RenderEngineType type) : RenderEngine(type) { - SkAndroidFrameworkTraceUtil::setEnableTracing( - base::GetBoolProperty(PROPERTY_SKIA_ATRACE_ENABLED, false)); +SkiaRenderEngine::SkiaRenderEngine(RenderEngineType type) : RenderEngine(type) {} + +void SkiaRenderEngine::setEnableTracing(bool tracingEnabled) { + SkAndroidFrameworkTraceUtil::setEnableTracing(tracingEnabled); } } // namespace skia } // namespace renderengine diff --git a/libs/renderengine/skia/SkiaRenderEngine.h b/libs/renderengine/skia/SkiaRenderEngine.h index eb65e83324..5d10b6f8be 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.h +++ b/libs/renderengine/skia/SkiaRenderEngine.h @@ -47,6 +47,7 @@ public: virtual int getContextPriority() override { return 0; } virtual void assertShadersCompiled(int numShaders) {} virtual int reportShadersCompiled() { return 0; } + virtual void setEnableTracing(bool tracingEnabled) override; protected: virtual void mapExternalTextureBuffer(const sp<GraphicBuffer>& /*buffer*/, diff --git a/libs/renderengine/threaded/RenderEngineThreaded.cpp b/libs/renderengine/threaded/RenderEngineThreaded.cpp index a7176d3279..203bb54701 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.cpp +++ b/libs/renderengine/threaded/RenderEngineThreaded.cpp @@ -403,6 +403,18 @@ std::optional<pid_t> RenderEngineThreaded::getRenderEngineTid() const { return std::make_optional(tidFuture.get()); } +void RenderEngineThreaded::setEnableTracing(bool tracingEnabled) { + // This function is designed so it can run asynchronously, so we do not need to wait + // for the futures. + { + std::lock_guard lock(mThreadMutex); + mFunctionCalls.push([tracingEnabled](renderengine::RenderEngine& instance) { + ATRACE_NAME("REThreaded::setEnableTracing"); + instance.setEnableTracing(tracingEnabled); + }); + } + mCondition.notify_one(); +} } // namespace threaded } // namespace renderengine } // namespace android diff --git a/libs/renderengine/threaded/RenderEngineThreaded.h b/libs/renderengine/threaded/RenderEngineThreaded.h index 1ba72ddf81..1340902126 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.h +++ b/libs/renderengine/threaded/RenderEngineThreaded.h @@ -67,6 +67,7 @@ public: bool supportsBackgroundBlur() override; void onActiveDisplaySizeChanged(ui::Size size) override; std::optional<pid_t> getRenderEngineTid() const override; + void setEnableTracing(bool tracingEnabled) override; protected: void mapExternalTextureBuffer(const sp<GraphicBuffer>& buffer, bool isRenderable) override; diff --git a/services/surfaceflinger/FlagManager.cpp b/services/surfaceflinger/FlagManager.cpp index 7602e6d1fe..e09a1921c4 100644 --- a/services/surfaceflinger/FlagManager.cpp +++ b/services/surfaceflinger/FlagManager.cpp @@ -19,8 +19,10 @@ #include <SurfaceFlingerProperties.sysprop.h> #include <android-base/parsebool.h> #include <android-base/parseint.h> +#include <android-base/properties.h> #include <android-base/stringprintf.h> #include <log/log.h> +#include <renderengine/RenderEngine.h> #include <server_configurable_flags/get_flags.h> #include <cinttypes> @@ -34,6 +36,7 @@ void FlagManager::dump(std::string& result) const { base::StringAppendF(&result, "FlagManager values: \n"); base::StringAppendF(&result, "demo_flag: %" PRId64 "\n", demo_flag()); base::StringAppendF(&result, "use_adpf_cpu_hint: %s\n", use_adpf_cpu_hint() ? "true" : "false"); + base::StringAppendF(&result, "use_skia_tracing: %s\n", use_skia_tracing() ? "true" : "false"); } namespace { @@ -97,4 +100,11 @@ bool FlagManager::use_adpf_cpu_hint() const { return getValue("AdpfFeature__adpf_cpu_hint", sysPropVal, false); } +bool FlagManager::use_skia_tracing() const { + ALOGD("use_skia_tracing ?"); + std::optional<bool> sysPropVal = + doParse<bool>(base::GetProperty(PROPERTY_SKIA_ATRACE_ENABLED, "").c_str()); + return getValue("SkiaTracingFeature__use_skia_tracing", sysPropVal, false); +} + } // namespace android diff --git a/services/surfaceflinger/FlagManager.h b/services/surfaceflinger/FlagManager.h index 24d83a2153..e8341424e7 100644 --- a/services/surfaceflinger/FlagManager.h +++ b/services/surfaceflinger/FlagManager.h @@ -33,6 +33,8 @@ public: bool use_adpf_cpu_hint() const; + bool use_skia_tracing() const; + private: friend class FlagManagerTest; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index b76233c59f..f99a2a3feb 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -713,6 +713,7 @@ void SurfaceFlinger::bootFinished() { mFlagManager = std::make_unique<android::FlagManager>(); mFrameTracer->initialize(); mFrameTimeline->onBootFinished(); + getRenderEngine().setEnableTracing(mFlagManager->use_skia_tracing()); // wait patiently for the window manager death const String16 name("window"); |