Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Unified Diff: gpu/command_buffer/service/gpu_tracer.h

Issue 122723002: Fixed not-unique event 'id' in TRACE_EVENT from GLARBTimerTrace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed another GPU_EXPORT issue. Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | gpu/command_buffer/service/gpu_tracer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | gpu/command_buffer/service/gpu_tracer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698