(reland) Make it easier to locally unit test guest/host combined tracing

Bug: 168843698

Change-Id: Icad71e200d1a2382519a270b77340cc1276f69b6
diff --git a/android-emu/android/base/Tracing.cpp b/android-emu/android/base/Tracing.cpp
index 5909042..0e635db 100644
--- a/android-emu/android/base/Tracing.cpp
+++ b/android-emu/android/base/Tracing.cpp
@@ -25,11 +25,11 @@
 namespace android {
 namespace base {
 
-void ScopedTrace::beginTraceImpl(const char* name) {
+void ScopedTraceGuest::beginTraceImpl(const char* name) {
     atrace_begin(VK_TRACE_TAG, name);
 }
 
-void ScopedTrace::endTraceImpl(const char*) {
+void ScopedTraceGuest::endTraceImpl(const char*) {
     atrace_end(VK_TRACE_TAG);
 }
 
@@ -47,13 +47,13 @@
 namespace android {
 namespace base {
 
-void ScopedTrace::beginTraceImpl(const char* name) {
+void ScopedTraceGuest::beginTraceImpl(const char* name) {
 #ifndef FUCHSIA_NO_TRACE
     TRACE_DURATION_BEGIN(VK_TRACE_TAG, name);
 #endif
 }
 
-void ScopedTrace::endTraceImpl(const char* name) {
+void ScopedTraceGuest::endTraceImpl(const char* name) {
 #ifndef FUCHSIA_NO_TRACE
     TRACE_DURATION_END(VK_TRACE_TAG, name);
 #endif
diff --git a/android-emu/android/base/Tracing.h b/android-emu/android/base/Tracing.h
index 046a5bf..3a78726 100644
--- a/android-emu/android/base/Tracing.h
+++ b/android-emu/android/base/Tracing.h
@@ -19,13 +19,30 @@
 namespace android {
 namespace base {
 
+#ifdef HOST_BUILD
+void initializeTracing();
+void enableTracing();
+void disableTracing();
+
 class ScopedTrace {
 public:
-    ScopedTrace(const char* name) : name_(name) {
+    ScopedTrace(const char* name);
+    ~ScopedTrace();
+};
+
+class ScopedTraceDerived : public ScopedTrace {
+public:
+    void* member = nullptr;
+};
+#endif
+
+class ScopedTraceGuest {
+public:
+    ScopedTraceGuest(const char* name) : name_(name) {
         beginTraceImpl(name_);
     }
 
-    ~ScopedTrace() {
+    ~ScopedTraceGuest() {
         endTraceImpl(name_);
     }
 private:
@@ -42,4 +59,8 @@
 #define __AEMU_GENSYM1(x,y) __AEMU_GENSYM2(x,y)
 #define AEMU_GENSYM(x) __AEMU_GENSYM1(x,__COUNTER__)
 
+#ifdef HOST_BUILD
 #define AEMU_SCOPED_TRACE(tag) __attribute__ ((unused)) android::base::ScopedTrace AEMU_GENSYM(aemuScopedTrace_)(tag)
+#else
+#define AEMU_SCOPED_TRACE(tag) __attribute__ ((unused)) android::base::ScopedTraceGuest AEMU_GENSYM(aemuScopedTrace_)(tag)
+#endif
diff --git a/system/OpenglSystemCommon/HostConnection.cpp b/system/OpenglSystemCommon/HostConnection.cpp
index 7d309fb..7ddf277 100644
--- a/system/OpenglSystemCommon/HostConnection.cpp
+++ b/system/OpenglSystemCommon/HostConnection.cpp
@@ -17,6 +17,10 @@
 
 #include "cutils/properties.h"
 
+#ifdef HOST_BUILD
+#include "android/base/Tracing.h"
+#endif
+
 #ifdef GOLDFISH_NO_GL
 struct gl_client_context_t {
     int placeholder;
@@ -359,7 +363,11 @@
     m_grallocOnly(true),
     m_noHostError(true),
     m_rendernodeFd(-1),
-    m_rendernodeFdOwned(false) { }
+    m_rendernodeFdOwned(false) {
+#ifdef HOST_BUILD
+    android::base::initializeTracing();
+#endif
+}
 
 HostConnection::~HostConnection()
 {