Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a37ca99f authored by Leon Scroggins III's avatar Leon Scroggins III
Browse files

Read prop for Skia tracing after boot

Mendel sets the sysprop after RenderEngine has been created, but before
boot finishes. Delay reading the sysprop until boot has finished so it
will get the correct value.

Rather thatn calling into Skia directly from SurfaceFlinger, pass the
boolean to RenderEngine, which now has an API that is implemented by
SkiaRenderEngine to turn on tracing inside Skia. This also allows us to
call the thread-unsafe method from the right thread.

Use FlagManager, which follows the normal path for setting Mendel flags
in SurfaceFlinger.

Bug: 204205165
Test: manual

Change-Id: Iba93ad6a4b51e336019a1c91dbfd10baafb6576f
parent 484873c9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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) {}

+4 −4
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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*/,
+12 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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;
Loading