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

Commit 9d2bdf25 authored by Jorim Jaggi's avatar Jorim Jaggi Committed by android-build-merger
Browse files

Merge "[DO NOT MERGE] Log Winscope tracing with the frame composition time"

am: 104972e9

Change-Id: I2f80936a8daffacf73363b6d338f27a16f30a3de
parents baf843bd 104972e9
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -1825,6 +1825,7 @@ void SurfaceFlinger::handleMessageRefresh() {
    preComposition();
    preComposition();
    rebuildLayerStacks();
    rebuildLayerStacks();
    calculateWorkingSet();
    calculateWorkingSet();
    long compositionTime = elapsedRealtimeNano();
    for (const auto& [token, display] : mDisplays) {
    for (const auto& [token, display] : mDisplays) {
        beginFrame(display);
        beginFrame(display);
        prepareFrame(display);
        prepareFrame(display);
@@ -1854,7 +1855,7 @@ void SurfaceFlinger::handleMessageRefresh() {
    if (mVisibleRegionsDirty) {
    if (mVisibleRegionsDirty) {
        mVisibleRegionsDirty = false;
        mVisibleRegionsDirty = false;
        if (mTracingEnabled) {
        if (mTracingEnabled) {
            mTracing.notify("visibleRegionsDirty");
            mTracing.notify(compositionTime, "visibleRegionsDirty");
        }
        }
    }
    }
}
}
+3 −2
Original line number Original line Diff line number Diff line
@@ -68,8 +68,9 @@ bool SurfaceTracing::addTraceToBuffer(LayersTraceProto& entry) {
    return mEnabled;
    return mEnabled;
}
}


void SurfaceTracing::notify(const char* where) {
void SurfaceTracing::notify(long compositionTime, const char* where) {
    std::scoped_lock lock(mSfLock);
    std::scoped_lock lock(mSfLock);
    mCompositionTime = compositionTime;
    mWhere = where;
    mWhere = where;
    mCanStartTrace.notify_one();
    mCanStartTrace.notify_one();
}
}
@@ -160,7 +161,7 @@ LayersTraceProto SurfaceTracing::traceLayersLocked(const char* where) {
    ATRACE_CALL();
    ATRACE_CALL();


    LayersTraceProto entry;
    LayersTraceProto entry;
    entry.set_elapsed_realtime_nanos(elapsedRealtimeNano());
    entry.set_elapsed_realtime_nanos(mCompositionTime);
    entry.set_where(where);
    entry.set_where(where);
    LayersProto layers(mFlinger.dumpDrawingStateProto(mTraceFlags));
    LayersProto layers(mFlinger.dumpDrawingStateProto(mTraceFlags));
    entry.mutable_layers()->Swap(&layers);
    entry.mutable_layers()->Swap(&layers);
+3 −1
Original line number Original line Diff line number Diff line
@@ -46,7 +46,7 @@ public:
    bool disable();
    bool disable();
    status_t writeToFile();
    status_t writeToFile();
    bool isEnabled() const;
    bool isEnabled() const;
    void notify(const char* where);
    void notify(long compositionTime, const char* where);


    void setBufferSize(size_t bufferSizeInByte);
    void setBufferSize(size_t bufferSizeInByte);
    void writeToFileAsync();
    void writeToFileAsync();
@@ -81,6 +81,8 @@ private:
        std::queue<LayersTraceProto> mStorage;
        std::queue<LayersTraceProto> mStorage;
    };
    };


    long mCompositionTime;

    void mainLoop();
    void mainLoop();
    void addFirstEntry();
    void addFirstEntry();
    LayersTraceProto traceWhenNotified();
    LayersTraceProto traceWhenNotified();