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
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 450c6c0..e0ee9d3 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -282,6 +282,8 @@
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;
bool SurfaceFlinger::useHwcForRgbToYuv;
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 17c8b3b..41de2b6 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -517,7 +517,6 @@
}
}
- static const int MAX_TRACING_MEMORY = 100 * 1024 * 1024; // 100MB
// Maximum allowed number of display frames that can be set through backdoor
static const int MAX_ALLOWED_DISPLAY_FRAMES = 2048;
diff --git a/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp b/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp
index eebb7cd..5bb9d2f 100644
--- a/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp
+++ b/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp
@@ -142,6 +142,14 @@
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) {
Parcel data;
Parcel reply;
@@ -206,6 +214,7 @@
mFlinger.mutableMaxRenderTargetSize() = 16384;
flinger->setLayerTracingFlags(LayerTracing::TRACE_INPUT | LayerTracing::TRACE_BUFFERS);
+ flinger->setLayerTraceSize(512 * 1024); // 512MB buffer size
flinger->startLayerTracing(traceFile.entry(0).elapsed_realtime_nanos());
std::unique_ptr<TraceGenFlingerDataMapper> mapper =
std::make_unique<TraceGenFlingerDataMapper>();