| 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 f64455c067109924b5626f8bc8ea55fbd0fe7a6f..528887f2a2411d7df56769c2b942b9a284f0ec5f 100644
|
| --- a/gpu/command_buffer/service/gpu_tracer.h
|
| +++ b/gpu/command_buffer/service/gpu_tracer.h
|
| @@ -10,6 +10,10 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/threading/thread.h"
|
| +#include "gpu/gpu_export.h"
|
| +#include "ui/gl/gl_bindings.h"
|
|
|
| namespace gpu {
|
| namespace gles2 {
|
| @@ -36,6 +40,90 @@ class GPUTracer {
|
| DISALLOW_COPY_AND_ASSIGN(GPUTracer);
|
| };
|
|
|
| +class Outputter : public base::RefCounted<Outputter> {
|
| + public:
|
| + virtual void Trace(const std::string& name,
|
| + int64 start_time,
|
| + int64 end_time) = 0;
|
| +
|
| + protected:
|
| + virtual ~Outputter() {}
|
| + friend class base::RefCounted<Outputter>;
|
| +};
|
| +
|
| +class TraceOutputter : public Outputter {
|
| + public:
|
| + static scoped_refptr<TraceOutputter> Create(const std::string& name);
|
| + virtual void Trace(const std::string& name,
|
| + int64 start_time,
|
| + int64 end_time) OVERRIDE;
|
| +
|
| + protected:
|
| + friend class base::RefCounted<Outputter>;
|
| + explicit TraceOutputter(const std::string& name);
|
| + virtual ~TraceOutputter();
|
| +
|
| + base::Thread named_thread_;
|
| + uint64 local_trace_id_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TraceOutputter);
|
| +};
|
| +
|
| +class GPU_EXPORT Trace : public base::RefCounted<Trace> {
|
| + public:
|
| + explicit Trace(const std::string& name) : name_(name) {}
|
| +
|
| + virtual void Start() = 0;
|
| + virtual void End() = 0;
|
| +
|
| + // True if the the results of this query are available.
|
| + virtual bool IsAvailable() = 0;
|
| +
|
| + virtual bool IsProcessable();
|
| + virtual void Process() = 0;
|
| +
|
| + virtual const std::string& name();
|
| +
|
| + protected:
|
| + virtual ~Trace() {}
|
| +
|
| + private:
|
| + friend class base::RefCounted<Trace>;
|
| +
|
| + std::string name_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(Trace);
|
| +};
|
| +
|
| +class GPU_EXPORT GLARBTimerTrace : public Trace {
|
| + public:
|
| + GLARBTimerTrace(scoped_refptr<Outputter> outputter,
|
| + const std::string& name,
|
| + int64 offset);
|
| +
|
| + // Implementation of Tracer
|
| + virtual void Start() OVERRIDE;
|
| + virtual void End() OVERRIDE;
|
| + virtual bool IsAvailable() OVERRIDE;
|
| + virtual void Process() OVERRIDE;
|
| +
|
| + private:
|
| + virtual ~GLARBTimerTrace();
|
| +
|
| + void Output();
|
| +
|
| + scoped_refptr<Outputter> outputter_;
|
| +
|
| + int64 offset_;
|
| + int64 start_time_;
|
| + int64 end_time_;
|
| + bool end_requested_;
|
| +
|
| + GLuint queries_[2];
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(GLARBTimerTrace);
|
| +};
|
| +
|
| } // namespace gles2
|
| } // namespace gpu
|
|
|
|
|