Chromium Code Reviews| Index: gpu/command_buffer/service/gles2_cmd_decoder.cc |
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
| index 422168c009c05eab4fe90324fcff8db73d19b799..c05da8276c865dd78fed21fad40f7f4a0355b67f 100644 |
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
| @@ -1869,6 +1869,8 @@ class GLES2DecoderImpl : public GLES2Decoder, |
| scoped_ptr<GPUTracer> gpu_tracer_; |
| scoped_ptr<GPUStateTracer> gpu_state_tracer_; |
| const unsigned char* cb_command_trace_category_; |
| + const unsigned char* gpu_decoder_category_; |
| + const unsigned char* gpu_group_marker_category_; |
| int gpu_trace_level_; |
| bool gpu_trace_commands_; |
| bool gpu_debug_commands_; |
| @@ -2384,6 +2386,10 @@ GLES2DecoderImpl::GLES2DecoderImpl(ContextGroup* group) |
| .texsubimage2d_faster_than_teximage2d), |
| cb_command_trace_category_(TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED( |
| TRACE_DISABLED_BY_DEFAULT("cb_command"))), |
| + gpu_decoder_category_(TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED( |
| + TRACE_DISABLED_BY_DEFAULT("gpu_decoder"))), |
| + gpu_group_marker_category_(TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED( |
| + TRACE_DISABLED_BY_DEFAULT("gpu_group_marker"))), |
| gpu_trace_level_(2), |
| gpu_trace_commands_(false), |
| gpu_debug_commands_(false), |
| @@ -3955,10 +3961,12 @@ error::Error GLES2DecoderImpl::DoCommandsImpl(unsigned int num_commands, |
| if ((info.arg_flags == cmd::kFixed && arg_count == info_arg_count) || |
| (info.arg_flags == cmd::kAtLeastN && arg_count >= info_arg_count)) { |
| bool doing_gpu_trace = false; |
| - if (DebugImpl && gpu_trace_commands_) { |
| + if (DebugImpl && gpu_trace_commands_ && *gpu_decoder_category_) { |
|
vmiura
2014/12/08 23:23:06
I think we could combine the *gpu_decoder_category
David Yen
2014/12/08 23:45:38
Done.
|
| if (CMD_FLAG_GET_TRACE_LEVEL(info.cmd_flags) <= gpu_trace_level_) { |
| doing_gpu_trace = true; |
| - gpu_tracer_->Begin(GetCommandName(command), kTraceDecoder); |
| + gpu_tracer_->Begin(TRACE_DISABLED_BY_DEFAULT("gpu_decoder"), |
| + GetCommandName(command), |
| + kTraceDecoder); |
| } |
| } |
| @@ -10954,12 +10962,17 @@ void GLES2DecoderImpl::DoPushGroupMarkerEXT( |
| } |
| std::string name = length ? std::string(marker, length) : std::string(marker); |
| debug_marker_manager_.PushGroup(name); |
| - gpu_tracer_->Begin(name, kTraceGroupMarker); |
| + if (*gpu_group_marker_category_) { |
| + gpu_tracer_->Begin(TRACE_DISABLED_BY_DEFAULT("gpu_group_marker"), name, |
| + kTraceGroupMarker); |
| + } |
| } |
| void GLES2DecoderImpl::DoPopGroupMarkerEXT(void) { |
| debug_marker_manager_.PopGroup(); |
| - gpu_tracer_->End(kTraceGroupMarker); |
| + if (*gpu_group_marker_category_) { |
| + gpu_tracer_->End(kTraceGroupMarker); |
| + } |
| } |
| void GLES2DecoderImpl::DoBindTexImage2DCHROMIUM( |
| @@ -11053,16 +11066,23 @@ error::Error GLES2DecoderImpl::HandleTraceBeginCHROMIUM( |
| const void* cmd_data) { |
| const gles2::cmds::TraceBeginCHROMIUM& c = |
| *static_cast<const gles2::cmds::TraceBeginCHROMIUM*>(cmd_data); |
| - Bucket* bucket = GetBucket(c.bucket_id); |
| - if (!bucket || bucket->size() == 0) { |
| + Bucket* category_bucket = GetBucket(c.category_bucket_id); |
| + Bucket* name_bucket = GetBucket(c.name_bucket_id); |
| + if (!category_bucket || category_bucket->size() == 0 || |
| + !name_bucket || name_bucket->size() == 0) { |
| return error::kInvalidArguments; |
| } |
| + |
| + std::string category_name; |
| std::string command_name; |
| - if (!bucket->GetAsString(&command_name)) { |
| + if (!category_bucket->GetAsString(&category_name) || |
| + !name_bucket->GetAsString(&command_name)) { |
|
vmiura
2014/12/08 23:23:06
nit: trace_name for consistency.
David Yen
2014/12/08 23:45:38
Done.
|
| return error::kInvalidArguments; |
| } |
| - TRACE_EVENT_COPY_ASYNC_BEGIN0("gpu", command_name.c_str(), this); |
| - if (!gpu_tracer_->Begin(command_name, kTraceCHROMIUM)) { |
| + |
| + TRACE_EVENT_COPY_ASYNC_BEGIN0(category_name.c_str(), command_name.c_str(), |
| + this); |
| + if (!gpu_tracer_->Begin(category_name, command_name, kTraceCHROMIUM)) { |
| LOCAL_SET_GL_ERROR( |
| GL_INVALID_OPERATION, |
| "glTraceBeginCHROMIUM", "unable to create begin trace"); |
| @@ -11072,13 +11092,15 @@ error::Error GLES2DecoderImpl::HandleTraceBeginCHROMIUM( |
| } |
| void GLES2DecoderImpl::DoTraceEndCHROMIUM() { |
| - if (gpu_tracer_->CurrentName().empty()) { |
| + if (gpu_tracer_->CurrentCategory().empty() || |
| + gpu_tracer_->CurrentName().empty()) { |
| LOCAL_SET_GL_ERROR( |
| GL_INVALID_OPERATION, |
| "glTraceEndCHROMIUM", "no trace begin found"); |
| return; |
| } |
| - TRACE_EVENT_COPY_ASYNC_END0("gpu", gpu_tracer_->CurrentName().c_str(), this); |
| + TRACE_EVENT_COPY_ASYNC_END0(gpu_tracer_->CurrentCategory().c_str(), |
| + gpu_tracer_->CurrentName().c_str(), this); |
| gpu_tracer_->End(kTraceCHROMIUM); |
| } |