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

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

Issue 419073008: Simplified GPU Tracer by removing parent base class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-enabled gpu.service to use gl queries Created 6 years, 4 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 | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | 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 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);
};
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/gpu_tracer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698