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

Commit c6a73641 authored by rnlee's avatar rnlee Committed by Rachel Lee
Browse files

Add detailed Skia traces sysprop to RenderEngine.

BUG:180767647
Test: setprop, force client composition, perfetto trace

1. `adb shell setprop debug.renderengine.skia_atrace_enabled 1`
2. `adb shell stop && adb shell start`
3. Force client composition:
   `adb shell service call SurfaceFlinger 1008 i32 1`
   (`adb shell dumpsys SurfaceFlinger | grep -A 30 "HWC layers"` can
   be used to check layers are "CLIENT" instead of "DEVICE".)
4. Perfetto script to trace.
5. See skia traces e.g. `grsurfacedrawcontext` in surfaceflinger
RenderEngine process.

Change-Id: I0612e3df82de08ab6a754b4f60d09057d335b1b1
parent 4c44be8c
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -48,6 +48,11 @@
 */
#define PROPERTY_DEBUG_RENDERENGINE_CAPTURE_FILENAME "debug.renderengine.capture_filename"

/**
 * Allows recording of Skia drawing commands with systrace.
 */
#define PROPERTY_SKIA_ATRACE_ENABLED "debug.renderengine.skia_atrace_enabled"

struct ANativeWindowBuffer;

namespace android {
@@ -94,10 +99,6 @@ public:

    static std::unique_ptr<RenderEngine> create(const RenderEngineCreationArgs& args);

    RenderEngine() : RenderEngine(RenderEngineType::GLES) {}

    RenderEngine(RenderEngineType type) : mRenderEngineType(type) {}

    virtual ~RenderEngine() = 0;

    // ----- BEGIN DEPRECATED INTERFACE -----
@@ -204,6 +205,10 @@ public:
    static void validateOutputBufferUsage(const sp<GraphicBuffer>&);

protected:
    RenderEngine() : RenderEngine(RenderEngineType::GLES) {}

    RenderEngine(RenderEngineType type) : mRenderEngineType(type) {}

    // Maps GPU resources for this buffer.
    // Note that work may be deferred to an additional thread, i.e. this call
    // is made asynchronously, but the caller can expect that map/unmap calls
+12 −3
Original line number Diff line number Diff line
@@ -14,13 +14,22 @@
 * limitations under the License.
 */

//#define LOG_NDEBUG 0
#undef LOG_TAG
#define LOG_TAG "RenderEngine"
#define ATRACE_TAG ATRACE_TAG_GRAPHICS

#include "SkiaRenderEngine.h"

#include <android-base/properties.h>
#include <src/core/SkTraceEventCommon.h>

namespace android {
namespace renderengine {
namespace skia {} // namespace skia
namespace skia {
SkiaRenderEngine::SkiaRenderEngine(RenderEngineType type) : RenderEngine(type) {
    SkAndroidFrameworkTraceUtil::setEnableTracing(
            base::GetBoolProperty(PROPERTY_SKIA_ATRACE_ENABLED, false));
}
} // namespace skia
} // namespace renderengine
} // namespace android
+3 −3
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ class BlurFilter;
class SkiaRenderEngine : public RenderEngine {
public:
    static std::unique_ptr<SkiaRenderEngine> create(const RenderEngineCreationArgs& args);
    SkiaRenderEngine(RenderEngineType type) : RenderEngine(type) {}
    SkiaRenderEngine(RenderEngineType type);
    ~SkiaRenderEngine() override {}

    virtual void primeCache() override{};
@@ -60,8 +60,8 @@ public:

protected:
    virtual void mapExternalTextureBuffer(const sp<GraphicBuffer>& /*buffer*/,
                                          bool /*isRenderable*/) override;
    virtual void unmapExternalTextureBuffer(const sp<GraphicBuffer>& /*buffer*/) override;
                                          bool /*isRenderable*/) override = 0;
    virtual void unmapExternalTextureBuffer(const sp<GraphicBuffer>& /*buffer*/) override = 0;
};

} // namespace skia