| 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 a633959f385d11f9ff0ad72f543bc3bd5d2b8543..33d318d74b26bfe723f17282051b0e9b6f533652 100644
 | 
| --- a/gpu/command_buffer/service/gpu_tracer.cc
 | 
| +++ b/gpu/command_buffer/service/gpu_tracer.cc
 | 
| @@ -85,12 +85,15 @@ GPUTrace::GPUTrace(scoped_refptr<Outputter> outputter,
 | 
|                     gfx::GPUTimingClient* gpu_timing_client,
 | 
|                     const std::string& category,
 | 
|                     const std::string& name,
 | 
| -                   const bool enabled)
 | 
| +                   const bool tracing_service,
 | 
| +                   const bool tracing_device)
 | 
|      : category_(category),
 | 
|        name_(name),
 | 
|        outputter_(outputter),
 | 
| -      enabled_(enabled) {
 | 
| -  if (gpu_timing_client->IsAvailable() &&
 | 
| +      service_enabled_(tracing_service),
 | 
| +      device_enabled_(tracing_device) {
 | 
| +  if (tracing_device &&
 | 
| +      gpu_timing_client->IsAvailable() &&
 | 
|        gpu_timing_client->IsTimerOffsetAvailable()) {
 | 
|      gpu_timer_ = gpu_timing_client->CreateGPUTimer();
 | 
|    }
 | 
| @@ -105,8 +108,8 @@ void GPUTrace::Destroy(bool have_context) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void GPUTrace::Start(bool trace_service) {
 | 
| -  if (trace_service) {
 | 
| +void GPUTrace::Start() {
 | 
| +  if (service_enabled_) {
 | 
|      outputter_->TraceServiceBegin(category_, name_);
 | 
|    }
 | 
|    if (gpu_timer_.get()) {
 | 
| @@ -114,11 +117,11 @@ void GPUTrace::Start(bool trace_service) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void GPUTrace::End(bool tracing_service) {
 | 
| +void GPUTrace::End() {
 | 
|    if (gpu_timer_.get()) {
 | 
|      gpu_timer_->End();
 | 
|    }
 | 
| -  if (tracing_service) {
 | 
| +  if (service_enabled_) {
 | 
|      outputter_->TraceServiceEnd(category_, name_);
 | 
|    }
 | 
|  }
 | 
| @@ -195,8 +198,9 @@ bool GPUTracer::BeginDecoding() {
 | 
|          trace_marker.trace_ =
 | 
|              new GPUTrace(outputter_, gpu_timing_client_.get(),
 | 
|                           trace_marker.category_, trace_marker.name_,
 | 
| +                         *gpu_trace_srv_category != 0,
 | 
|                           *gpu_trace_dev_category != 0);
 | 
| -        trace_marker.trace_->Start(*gpu_trace_srv_category != 0);
 | 
| +        trace_marker.trace_->Start();
 | 
|        }
 | 
|      }
 | 
|    }
 | 
| @@ -213,7 +217,7 @@ bool GPUTracer::EndDecoding() {
 | 
|        for (size_t i = 0; i < markers_[n].size(); i++) {
 | 
|          TraceMarker& marker = markers_[n][i];
 | 
|          if (marker.trace_.get()) {
 | 
| -          marker.trace_->End(*gpu_trace_srv_category != 0);
 | 
| +          marker.trace_->End();
 | 
|  
 | 
|            finished_traces_.push_back(marker.trace_);
 | 
|            marker.trace_ = 0;
 | 
| @@ -244,8 +248,9 @@ bool GPUTracer::Begin(const std::string& category, const std::string& name,
 | 
|    if (IsTracing()) {
 | 
|      scoped_refptr<GPUTrace> trace = new GPUTrace(
 | 
|          outputter_, gpu_timing_client_.get(), category, name,
 | 
| +        *gpu_trace_srv_category != 0,
 | 
|          *gpu_trace_dev_category != 0);
 | 
| -    trace->Start(*gpu_trace_srv_category != 0);
 | 
| +    trace->Start();
 | 
|      markers_[source].back().trace_ = trace;
 | 
|    }
 | 
|  
 | 
| @@ -263,7 +268,7 @@ bool GPUTracer::End(GpuTracerSource source) {
 | 
|      scoped_refptr<GPUTrace> trace = markers_[source].back().trace_;
 | 
|      if (trace.get()) {
 | 
|        if (IsTracing()) {
 | 
| -        trace->End(*gpu_trace_srv_category != 0);
 | 
| +        trace->End();
 | 
|        }
 | 
|  
 | 
|        finished_traces_.push_back(trace);
 | 
| @@ -338,7 +343,7 @@ void GPUTracer::ProcessTraces() {
 | 
|  
 | 
|    while (!finished_traces_.empty()) {
 | 
|      scoped_refptr<GPUTrace>& trace = finished_traces_.front();
 | 
| -    if (trace->IsEnabled()) {
 | 
| +    if (trace->IsDeviceTraceEnabled()) {
 | 
|        if (!finished_traces_.front()->IsAvailable())
 | 
|          break;
 | 
|        finished_traces_.front()->Process();
 | 
| 
 |