Chromium Code Reviews| 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() { |