Revert "Integrate transaction tracing with perfetto"

This reverts commit 8a5640ab9c305b2e03929f2255aabed3ec1b40b3.

Reason for revert: 298512106

Change-Id: I0182c3b75d4b38580430c9ba6b94666e03d48efb
diff --git a/services/surfaceflinger/Tracing/TransactionTracing.h b/services/surfaceflinger/Tracing/TransactionTracing.h
index ddbf3e4..09fcd8a 100644
--- a/services/surfaceflinger/Tracing/TransactionTracing.h
+++ b/services/surfaceflinger/Tracing/TransactionTracing.h
@@ -22,8 +22,8 @@
 #include <utils/Singleton.h>
 #include <utils/Timers.h>
 
+#include <memory>
 #include <mutex>
-#include <optional>
 #include <thread>
 
 #include "FrontEnd/DisplayInfo.h"
@@ -41,7 +41,7 @@
 class TransactionTracingTest;
 
 /*
- * Records all committed transactions into a ring buffer.
+ * Records all committed transactions into a ring bufffer.
  *
  * Transactions come in via the binder thread. They are serialized to proto
  * and stored in a map using the transaction id as key. Main thread will
@@ -49,104 +49,26 @@
  * the tracing thread. The tracing thread will then wake up and add the
  * committed transactions to the ring buffer.
  *
- * The traced data can then be collected via:
- * - Perfetto (preferred).
- * - File system, after triggering the disk write through SF backdoor. This is legacy and is going
- *   to be phased out.
- *
- * The Perfetto custom data source TransactionDataSource is registered with perfetto and is used
- * to listen to perfetto events (setup, start, stop, flush) and to write trace packets to perfetto.
- *
- * The user can configure/start/stop tracing via /system/bin/perfetto.
- *
- * Tracing can operate in the following modes.
- *
- * ACTIVE mode:
- * The transactions ring buffer (starting state + following committed transactions) is written
- * (only once) to perfetto when the 'start' event is received.
- * Transactions are then written to perfetto each time they are committed.
- * On the receiver side, the data source is to be configured to periodically
- * flush data to disk providing virtually infinite storage.
- *
- * CONTINUOUS mode:
- * Listens to the perfetto 'flush' event (e.g. when a bugreport is taken).
- * When a 'flush' event is received, the ring buffer of transactions (starting state + following
- * committed transactions) is written to perfetto. On the receiver side, the data source is to be
- * configured with a dedicated buffer large enough to store all the flushed data.
- *
- *
- * E.g. start active mode tracing:
- *
-   adb shell perfetto \
-     -c - --txt \
-     -o /data/misc/perfetto-traces/trace \
-   <<EOF
-   unique_session_name: "surfaceflinger_transactions_active"
-   buffers: {
-       size_kb: 1024
-       fill_policy: RING_BUFFER
-   }
-   data_sources: {
-       config {
-           name: "android.surfaceflinger.transactions"
-           surfaceflinger_transactions_config: {
-               mode: MODE_ACTIVE
-           }
-       }
-   }
-   write_into_file: true
-   file_write_period_ms: 100
-   EOF
- *
- *
- * E.g. start continuous mode tracing:
- *
-   adb shell perfetto \
-     -c - --txt \
-     -o /data/misc/perfetto-traces/trace \
-   <<EOF
-   unique_session_name: "surfaceflinger_transactions_continuous"
-   buffers: {
-       size_kb: 1024
-       fill_policy: RING_BUFFER
-   }
-   data_sources: {
-       config {
-           name: "android.surfaceflinger.transactions"
-           surfaceflinger_transactions_config: {
-               mode: MODE_CONTINUOUS
-           }
-       }
-   }
-   EOF
+ * When generating SF dump state, we will flush the buffer to a file which
+ * will then be included in the bugreport.
  *
  */
 class TransactionTracing {
 public:
-    using Mode = perfetto::protos::pbzero::SurfaceFlingerTransactionsConfig::Mode;
-
     TransactionTracing();
     ~TransactionTracing();
 
-    // Start event from perfetto data source
-    void onStart(Mode mode);
-    // Flush event from perfetto data source
-    void onFlush(Mode mode);
-
     void addQueuedTransaction(const TransactionState&);
     void addCommittedTransactions(int64_t vsyncId, nsecs_t commitTime, frontend::Update& update,
                                   const frontend::DisplayInfos&, bool displayInfoChanged);
     status_t writeToFile(const std::string& filename = FILE_PATH);
-    // Return buffer contents as trace file proto
-    perfetto::protos::TransactionTraceFile writeToProto() EXCLUDES(mMainThreadLock);
     void setBufferSize(size_t bufferSizeInBytes);
     void onLayerRemoved(int layerId);
     void dump(std::string&) const;
     // Wait until all the committed transactions for the specified vsync id are added to the buffer.
     void flush() EXCLUDES(mMainThreadLock);
-
     static constexpr auto CONTINUOUS_TRACING_BUFFER_SIZE = 512 * 1024;
-    static constexpr auto LEGACY_ACTIVE_TRACING_BUFFER_SIZE = 100 * 1024 * 1024;
+    static constexpr auto ACTIVE_TRACING_BUFFER_SIZE = 100 * 1024 * 1024;
     // version 1 - switching to support new frontend
     static constexpr auto TRACING_VERSION = 1;
 
@@ -166,6 +88,7 @@
     TransactionRingBuffer<perfetto::protos::TransactionTraceFile,
                           perfetto::protos::TransactionTraceEntry>
             mBuffer GUARDED_BY(mTraceLock);
+    size_t mBufferSizeInBytes GUARDED_BY(mTraceLock) = CONTINUOUS_TRACING_BUFFER_SIZE;
     std::unordered_map<uint64_t, perfetto::protos::TransactionState> mQueuedTransactions
             GUARDED_BY(mTraceLock);
     LocklessStack<perfetto::protos::TransactionState> mTransactionQueue;
@@ -201,17 +124,19 @@
     std::vector<uint32_t /* layerId */> mPendingDestroyedLayers; // only accessed by main thread
     int64_t mLastUpdatedVsyncId = -1;
 
-    void writeRingBufferToPerfetto(TransactionTracing::Mode mode);
     perfetto::protos::TransactionTraceFile createTraceFileProto() const;
     void loop();
     void addEntry(const std::vector<CommittedUpdates>& committedTransactions,
                   const std::vector<uint32_t>& removedLayers) EXCLUDES(mTraceLock);
     int32_t getLayerIdLocked(const sp<IBinder>& layerHandle) REQUIRES(mTraceLock);
     void tryPushToTracingThread() EXCLUDES(mMainThreadLock);
-    std::optional<perfetto::protos::TransactionTraceEntry> createStartingStateProtoLocked()
+    void addStartingStateToProtoLocked(perfetto::protos::TransactionTraceFile& proto)
             REQUIRES(mTraceLock);
     void updateStartingStateLocked(const perfetto::protos::TransactionTraceEntry& entry)
             REQUIRES(mTraceLock);
+    // TEST
+    // Return buffer contents as trace file proto
+    perfetto::protos::TransactionTraceFile writeToProto() EXCLUDES(mMainThreadLock);
 };
 
 class TransactionTraceWriter : public Singleton<TransactionTraceWriter> {