| Index: gpu/command_buffer/service/gpu_tracer.h
|
| diff --git a/gpu/command_buffer/service/gpu_tracer.h b/gpu/command_buffer/service/gpu_tracer.h
|
| index c799fd5d3a8e3817def0ba70b23dc47e604530bc..5aa2cd8a4e07e49ab5379a8fa344c9891ed0a498 100644
|
| --- a/gpu/command_buffer/service/gpu_tracer.h
|
| +++ b/gpu/command_buffer/service/gpu_tracer.h
|
| @@ -19,40 +19,78 @@
|
| namespace gpu {
|
| namespace gles2 {
|
|
|
| +class Outputter;
|
| +class GPUTrace;
|
| +
|
| // Id used to keep trace namespaces separate
|
| enum GpuTracerSource {
|
| + kTraceGroupInvalid = -1,
|
| +
|
| kTraceGroupMarker = 0,
|
| kTraceCHROMIUM = 1,
|
| kTraceDecoder = 2,
|
| +
|
| + NUM_TRACER_SOURCES
|
| +};
|
| +
|
| +// Marker structure for a Trace.
|
| +struct TraceMarker {
|
| + TraceMarker(const std::string& name);
|
| + ~TraceMarker();
|
| +
|
| + std::string name_;
|
| + scoped_refptr<GPUTrace> trace_;
|
| };
|
|
|
| // Traces GPU Commands.
|
| -class GPUTracer {
|
| +class GPUTracer : public base::SupportsWeakPtr<GPUTracer> {
|
| public:
|
| - static scoped_ptr<GPUTracer> Create(gles2::GLES2Decoder* decoder);
|
| -
|
| - GPUTracer();
|
| - virtual ~GPUTracer();
|
| + explicit GPUTracer(gles2::GLES2Decoder* decoder);
|
| + ~GPUTracer();
|
|
|
| // Scheduled processing in decoder begins.
|
| - virtual bool BeginDecoding() = 0;
|
| + bool BeginDecoding();
|
|
|
| // Scheduled processing in decoder ends.
|
| - virtual bool EndDecoding() = 0;
|
| + bool EndDecoding();
|
|
|
| // Begin a trace marker.
|
| - virtual bool Begin(const std::string& name, GpuTracerSource source) = 0;
|
| + bool Begin(const std::string& name, GpuTracerSource source);
|
|
|
| // End the last started trace marker.
|
| - virtual bool End(GpuTracerSource source) = 0;
|
| + bool End(GpuTracerSource source);
|
|
|
| - virtual bool IsTracing() = 0;
|
| + bool IsTracing();
|
|
|
| // Retrieve the name of the current open trace.
|
| // Returns empty string if no current open trace.
|
| - virtual const std::string& CurrentName() const = 0;
|
| + const std::string& CurrentName() const;
|
|
|
| private:
|
| + // Trace Processing.
|
| + scoped_refptr<GPUTrace> CreateTrace(const std::string& name);
|
| + void Process();
|
| + void ProcessTraces();
|
| +
|
| + void CalculateTimerOffset();
|
| + void IssueProcessTask();
|
| +
|
| + scoped_refptr<Outputter> outputter_;
|
| + std::vector<TraceMarker> markers_[NUM_TRACER_SOURCES];
|
| + std::deque<scoped_refptr<GPUTrace> > traces_;
|
| +
|
| + const unsigned char* gpu_trace_srv_category;
|
| + const unsigned char* gpu_trace_dev_category;
|
| + gles2::GLES2Decoder* decoder_;
|
| +
|
| + int64 timer_offset_;
|
| + GpuTracerSource last_tracer_source_;
|
| +
|
| + bool enabled_;
|
| + bool gpu_timing_synced_;
|
| + bool gpu_executing_;
|
| + bool process_posted_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(GPUTracer);
|
| };
|
|
|
|
|