Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2763)

Unified Diff: gpu/command_buffer/service/gpu_tracer.cc

Issue 776603003: Changed the GPU Tracer so the category names can be customized. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Disable gpu_decoder and gpu_group_marker by default Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gpu_tracer.cc
diff --git a/gpu/command_buffer/service/gpu_tracer.cc b/gpu/command_buffer/service/gpu_tracer.cc
index 024e4b6c5b247acc24457ea5e1a654ee729cf373..9bf334cc43a0518738f19e15b4f5b1838b6bb704 100644
--- a/gpu/command_buffer/service/gpu_tracer.cc
+++ b/gpu/command_buffer/service/gpu_tracer.cc
@@ -18,8 +18,9 @@ namespace gles2 {
static const unsigned int kProcessInterval = 16;
static TraceOutputter* g_outputter_thread = NULL;
-TraceMarker::TraceMarker(const std::string& name)
- : name_(name),
+TraceMarker::TraceMarker(const std::string& category, const std::string& name)
+ : category_(category),
+ name_(name),
trace_(NULL) {
}
@@ -41,29 +42,30 @@ TraceOutputter::TraceOutputter(const std::string& name)
TraceOutputter::~TraceOutputter() { g_outputter_thread = NULL; }
-void TraceOutputter::Trace(const std::string& name,
+void TraceOutputter::Trace(const std::string& category,
+ const std::string& name,
int64 start_time,
int64 end_time) {
- TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(
- TRACE_DISABLED_BY_DEFAULT("gpu.device"),
- name.c_str(),
- local_trace_id_,
- named_thread_.thread_id(),
- start_time);
- TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0(
- TRACE_DISABLED_BY_DEFAULT("gpu.device"),
- name.c_str(),
- local_trace_id_,
- named_thread_.thread_id(),
- end_time);
+ TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(category.c_str(),
+ name.c_str(),
+ local_trace_id_,
+ named_thread_.thread_id(),
+ start_time);
+ TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0(category.c_str(),
+ name.c_str(),
+ local_trace_id_,
+ named_thread_.thread_id(),
+ end_time);
++local_trace_id_;
}
GPUTrace::GPUTrace(scoped_refptr<Outputter> outputter,
+ const std::string& category,
const std::string& name,
int64 offset,
GpuTracerType tracer_type)
- : name_(name),
+ : category_(category),
+ name_(name),
outputter_(outputter),
offset_(offset),
start_time_(0),
@@ -95,8 +97,7 @@ GPUTrace::~GPUTrace() {
}
void GPUTrace::Start() {
- TRACE_EVENT_COPY_ASYNC_BEGIN0(
- TRACE_DISABLED_BY_DEFAULT("gpu.service"), name().c_str(), this);
+ TRACE_EVENT_COPY_ASYNC_BEGIN0(category().c_str(), name().c_str(), this);
vmiura 2014/12/08 23:23:06 Shoud we check the gpu.service category is enabled
David Yen 2014/12/08 23:45:38 I believe Start() is only called from the GPUTrace
vmiura 2014/12/08 23:53:00 True, but IsTracing() returns true both (*gpu_trac
David Yen 2014/12/09 00:10:41 Good point, done.
switch (tracer_type_) {
case kTracerTypeInvalid:
@@ -136,8 +137,7 @@ void GPUTrace::End() {
break;
}
- TRACE_EVENT_COPY_ASYNC_END0(
- TRACE_DISABLED_BY_DEFAULT("gpu.service"), name().c_str(), this);
+ TRACE_EVENT_COPY_ASYNC_END0(category().c_str(), name().c_str(), this);
vmiura 2014/12/08 23:23:06 And here. if (*gpu_trace_srv_category) { ... }
David Yen 2014/12/08 23:45:38 Same reason as above.
David Yen 2014/12/09 00:10:41 Done.
}
bool GPUTrace::IsAvailable() {
@@ -171,7 +171,7 @@ void GPUTrace::Process() {
start_time_ = (begin_stamp / base::Time::kNanosecondsPerMicrosecond) +
offset_;
end_time_ = (end_stamp / base::Time::kNanosecondsPerMicrosecond) + offset_;
- outputter_->Trace(name(), start_time_, end_time_);
+ outputter_->Trace(category(), name(), start_time_, end_time_);
}
GPUTracer::GPUTracer(gles2::GLES2Decoder* decoder)
@@ -215,8 +215,10 @@ bool GPUTracer::BeginDecoding() {
// Begin a Trace for all active markers
for (int n = 0; n < NUM_TRACER_SOURCES; n++) {
for (size_t i = 0; i < markers_[n].size(); i++) {
- markers_[n][i].trace_ = CreateTrace(markers_[n][i].name_);
- markers_[n][i].trace_->Start();
+ TraceMarker& trace_marker = markers_[n][i];
+ trace_marker.trace_ = CreateTrace(trace_marker.category_,
+ trace_marker.name_);
+ trace_marker.trace_->Start();
}
}
}
@@ -249,7 +251,8 @@ bool GPUTracer::EndDecoding() {
return true;
}
-bool GPUTracer::Begin(const std::string& name, GpuTracerSource source) {
+bool GPUTracer::Begin(const std::string& category, const std::string& name,
+ GpuTracerSource source) {
if (!gpu_executing_)
return false;
@@ -257,11 +260,11 @@ bool GPUTracer::Begin(const std::string& name, GpuTracerSource source) {
// Push new marker from given 'source'
last_tracer_source_ = source;
- markers_[source].push_back(TraceMarker(name));
+ markers_[source].push_back(TraceMarker(category, name));
// Create trace
if (IsTracing()) {
- scoped_refptr<GPUTrace> trace = CreateTrace(name);
+ scoped_refptr<GPUTrace> trace = CreateTrace(category, name);
trace->Start();
markers_[source].back().trace_ = trace;
}
@@ -297,6 +300,15 @@ bool GPUTracer::IsTracing() {
return (*gpu_trace_srv_category != 0) || (*gpu_trace_dev_category != 0);
}
+const std::string& GPUTracer::CurrentCategory() const {
+ if (last_tracer_source_ >= 0 &&
+ last_tracer_source_ < NUM_TRACER_SOURCES &&
+ !markers_[last_tracer_source_].empty()) {
+ return markers_[last_tracer_source_].back().category_;
+ }
+ return base::EmptyString();
+}
+
const std::string& GPUTracer::CurrentName() const {
if (last_tracer_source_ >= 0 &&
last_tracer_source_ < NUM_TRACER_SOURCES &&
@@ -306,11 +318,12 @@ const std::string& GPUTracer::CurrentName() const {
return base::EmptyString();
}
-scoped_refptr<GPUTrace> GPUTracer::CreateTrace(const std::string& name) {
+scoped_refptr<GPUTrace> GPUTracer::CreateTrace(const std::string& category,
+ const std::string& name) {
GpuTracerType tracer_type = *gpu_trace_dev_category ? tracer_type_ :
kTracerTypeInvalid;
- return new GPUTrace(outputter_, name, timer_offset_, tracer_type);
+ return new GPUTrace(outputter_, category, name, timer_offset_, tracer_type);
}
void GPUTracer::Process() {

Powered by Google App Engine
This is Rietveld 408576698