Loading services/gpuservice/tests/unittests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ cc_test { ], static_libs: [ "libgmock", "libperfetto_client_experimental", "perfetto_trace_protos", ], require_root: true, Loading services/gpuservice/tests/unittests/GpuMemTracerTest.cpp +18 −2 Original line number Diff line number Diff line Loading @@ -75,6 +75,22 @@ public: 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; Loading Loading @@ -125,7 +141,7 @@ TEST_F(GpuMemTracerTest, traceInitialCountersAfterGpuMemInitialize) { // 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]; Loading Loading @@ -176,7 +192,7 @@ TEST_F(GpuMemTracerTest, noTracingWithoutGpuMemInitialize) { // 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 services/gpuservice/tracing/Android.bp +0 −3 Original line number Diff line number Diff line Loading @@ -21,13 +21,10 @@ cc_library_shared { "libgpumem", "libbase", "liblog", "libprotobuf-cpp-lite", "libprotoutil", "libutils", ], static_libs: [ "libperfetto_client_experimental", "perfetto_trace_protos", ], export_include_dirs: ["include"], export_static_lib_headers: [ Loading services/gpuservice/tracing/GpuMemTracer.cpp +0 −17 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -63,22 +62,6 @@ void GpuMemTracer::initializeForTest(std::shared_ptr<GpuMem> gpuMem) { 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; Loading Loading
services/gpuservice/tests/unittests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ cc_test { ], static_libs: [ "libgmock", "libperfetto_client_experimental", "perfetto_trace_protos", ], require_root: true, Loading
services/gpuservice/tests/unittests/GpuMemTracerTest.cpp +18 −2 Original line number Diff line number Diff line Loading @@ -75,6 +75,22 @@ public: 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; Loading Loading @@ -125,7 +141,7 @@ TEST_F(GpuMemTracerTest, traceInitialCountersAfterGpuMemInitialize) { // 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]; Loading Loading @@ -176,7 +192,7 @@ TEST_F(GpuMemTracerTest, noTracingWithoutGpuMemInitialize) { // 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
services/gpuservice/tracing/Android.bp +0 −3 Original line number Diff line number Diff line Loading @@ -21,13 +21,10 @@ cc_library_shared { "libgpumem", "libbase", "liblog", "libprotobuf-cpp-lite", "libprotoutil", "libutils", ], static_libs: [ "libperfetto_client_experimental", "perfetto_trace_protos", ], export_include_dirs: ["include"], export_static_lib_headers: [ Loading
services/gpuservice/tracing/GpuMemTracer.cpp +0 −17 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -63,22 +62,6 @@ void GpuMemTracer::initializeForTest(std::shared_ptr<GpuMem> gpuMem) { 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; Loading