Remove gpumemtracer bloat

The size of gpuservice regressed while adding perfetto trace functions
inside GpuMemTracer for unittests. This change fixes the regression by
moving readPackets into the unittest, thereby removing the need to
include some libraries in gpumemtracer.so

Bug: 175904796
Test: atest gpuservice_unittest:GpuMemTracerTest
Change-Id: Ifaafdbfb24f8c51712276ef7efd645ce43c987f4
Merged-In: Ifaafdbfb24f8c51712276ef7efd645ce43c987f4
diff --git a/services/gpuservice/tests/unittests/Android.bp b/services/gpuservice/tests/unittests/Android.bp
index b35a611..9606daa 100644
--- a/services/gpuservice/tests/unittests/Android.bp
+++ b/services/gpuservice/tests/unittests/Android.bp
@@ -41,6 +41,7 @@
     ],
     static_libs: [
         "libgmock",
+        "libperfetto_client_experimental",
         "perfetto_trace_protos",
     ],
     require_root: true,
diff --git a/services/gpuservice/tests/unittests/GpuMemTracerTest.cpp b/services/gpuservice/tests/unittests/GpuMemTracerTest.cpp
index 7fa75e1..cd8e19c 100644
--- a/services/gpuservice/tests/unittests/GpuMemTracerTest.cpp
+++ b/services/gpuservice/tests/unittests/GpuMemTracerTest.cpp
@@ -75,6 +75,22 @@
 
     int getTracerThreadCount() { return mGpuMemTracer->tracerThreadCount; }
 
+    std::vector<perfetto::protos::TracePacket> readGpuMemTotalPacketsBlocking(
+            perfetto::TracingSession* tracingSession) {
+        std::vector<char> raw_trace = tracingSession->ReadTraceBlocking();
+        perfetto::protos::Trace trace;
+        trace.ParseFromArray(raw_trace.data(), int(raw_trace.size()));
+
+        std::vector<perfetto::protos::TracePacket> packets;
+        for (const auto& packet : trace.packet()) {
+            if (!packet.has_gpu_mem_total_event()) {
+                continue;
+            }
+            packets.emplace_back(packet);
+        }
+        return packets;
+    }
+
     std::shared_ptr<GpuMem> mGpuMem;
     TestableGpuMem mTestableGpuMem;
     std::unique_ptr<GpuMemTracer> mGpuMemTracer;
@@ -125,7 +141,7 @@
     // The test tracer thread should have finished its execution by now.
     EXPECT_EQ(getTracerThreadCount(), 0);
 
-    auto packets = mGpuMemTracer->readGpuMemTotalPacketsForTestBlocking(tracingSession.get());
+    auto packets = readGpuMemTotalPacketsBlocking(tracingSession.get());
     EXPECT_EQ(packets.size(), 3);
 
     const auto& packet0 = packets[0];
@@ -176,7 +192,7 @@
     // The test tracer thread should have finished its execution by now.
     EXPECT_EQ(getTracerThreadCount(), 0);
 
-    auto packets = mGpuMemTracer->readGpuMemTotalPacketsForTestBlocking(tracingSession.get());
+    auto packets = readGpuMemTotalPacketsBlocking(tracingSession.get());
     EXPECT_EQ(packets.size(), 0);
 }
 } // namespace android
diff --git a/services/gpuservice/tracing/Android.bp b/services/gpuservice/tracing/Android.bp
index 9f951d3..919fed3 100644
--- a/services/gpuservice/tracing/Android.bp
+++ b/services/gpuservice/tracing/Android.bp
@@ -21,13 +21,10 @@
         "libgpumem",
         "libbase",
         "liblog",
-        "libprotobuf-cpp-lite",
-        "libprotoutil",
         "libutils",
     ],
     static_libs: [
         "libperfetto_client_experimental",
-        "perfetto_trace_protos",
     ],
     export_include_dirs: ["include"],
     export_static_lib_headers: [
diff --git a/services/gpuservice/tracing/GpuMemTracer.cpp b/services/gpuservice/tracing/GpuMemTracer.cpp
index 1e15bda..44a30ea 100644
--- a/services/gpuservice/tracing/GpuMemTracer.cpp
+++ b/services/gpuservice/tracing/GpuMemTracer.cpp
@@ -22,7 +22,6 @@
 
 #include <gpumem/GpuMem.h>
 #include <perfetto/trace/android/gpu_mem_event.pbzero.h>
-#include <perfetto/trace/trace.pb.h>
 #include <unistd.h>
 
 #include <thread>
@@ -63,22 +62,6 @@
     tracerThreadCount++;
 }
 
-std::vector<perfetto::protos::TracePacket> GpuMemTracer::readGpuMemTotalPacketsForTestBlocking(
-        perfetto::TracingSession* tracingSession) {
-    std::vector<char> raw_trace = tracingSession->ReadTraceBlocking();
-    perfetto::protos::Trace trace;
-    trace.ParseFromArray(raw_trace.data(), int(raw_trace.size()));
-
-    std::vector<perfetto::protos::TracePacket> packets;
-    for (const auto& packet : trace.packet()) {
-        if (!packet.has_gpu_mem_total_event()) {
-            continue;
-        }
-        packets.emplace_back(packet);
-    }
-    return packets;
-}
-
 // Each tracing session can be used for a single block of Start -> Stop.
 std::unique_ptr<perfetto::TracingSession> GpuMemTracer::getTracingSessionForTest() {
     perfetto::TraceConfig cfg;