(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()
{