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

Commit 4fb00ede authored by Vishnu Nair's avatar Vishnu Nair
Browse files

LayerTraceGenerator: Provide a large enough buffer to generate layer trace

When generating the layer trace, provide
a large enough buffer to store the traces.

Test: generate layer trace from transaction traces
Test: generate layer trace via winscope
Test: atest libsurfaceflinger_tests
Fixes: 234489414

Change-Id: I72ecae0c40c1706a6def033205947d0e7ab01236
parent aa83c739
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -282,6 +282,8 @@ const String16 sInternalSystemWindow("android.permission.INTERNAL_SYSTEM_WINDOW"


const char* KERNEL_IDLE_TIMER_PROP = "graphics.display.kernel_idle_timer.enabled";
const char* KERNEL_IDLE_TIMER_PROP = "graphics.display.kernel_idle_timer.enabled";


static const int MAX_TRACING_MEMORY = 1024 * 1024 * 1024; // 1GB

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
int64_t SurfaceFlinger::dispSyncPresentTimeOffset;
int64_t SurfaceFlinger::dispSyncPresentTimeOffset;
bool SurfaceFlinger::useHwcForRgbToYuv;
bool SurfaceFlinger::useHwcForRgbToYuv;
+0 −1
Original line number Original line Diff line number Diff line
@@ -517,7 +517,6 @@ private:
        }
        }
    }
    }


    static const int MAX_TRACING_MEMORY = 100 * 1024 * 1024; // 100MB
    // Maximum allowed number of display frames that can be set through backdoor
    // Maximum allowed number of display frames that can be set through backdoor
    static const int MAX_ALLOWED_DISPLAY_FRAMES = 2048;
    static const int MAX_ALLOWED_DISPLAY_FRAMES = 2048;


+9 −0
Original line number Original line Diff line number Diff line
@@ -142,6 +142,14 @@ public:
        transact(1033, data, &reply, 0 /* flags */);
        transact(1033, data, &reply, 0 /* flags */);
    }
    }


    void setLayerTraceSize(int32_t sizeInKb) {
        Parcel data;
        Parcel reply;
        data.writeInterfaceToken(String16("android.ui.ISurfaceComposer"));
        data.writeInt32(sizeInKb);
        transact(1029, data, &reply, 0 /* flags */);
    }

    void startLayerTracing(int64_t traceStartTime) {
    void startLayerTracing(int64_t traceStartTime) {
        Parcel data;
        Parcel data;
        Parcel reply;
        Parcel reply;
@@ -206,6 +214,7 @@ bool LayerTraceGenerator::generate(const proto::TransactionTraceFile& traceFile,
    mFlinger.mutableMaxRenderTargetSize() = 16384;
    mFlinger.mutableMaxRenderTargetSize() = 16384;


    flinger->setLayerTracingFlags(LayerTracing::TRACE_INPUT | LayerTracing::TRACE_BUFFERS);
    flinger->setLayerTracingFlags(LayerTracing::TRACE_INPUT | LayerTracing::TRACE_BUFFERS);
    flinger->setLayerTraceSize(512 * 1024); // 512MB buffer size
    flinger->startLayerTracing(traceFile.entry(0).elapsed_realtime_nanos());
    flinger->startLayerTracing(traceFile.entry(0).elapsed_realtime_nanos());
    std::unique_ptr<TraceGenFlingerDataMapper> mapper =
    std::unique_ptr<TraceGenFlingerDataMapper> mapper =
            std::make_unique<TraceGenFlingerDataMapper>();
            std::make_unique<TraceGenFlingerDataMapper>();