Index: cc/scheduler/scheduler.h |
diff --git a/cc/scheduler/scheduler.h b/cc/scheduler/scheduler.h |
index 408bd4cc9f56e25ea2ad66a4f93022554ce1b982..31d0b08b557f1b19d9f90cdaa5b233e8009bba2c 100644 |
--- a/cc/scheduler/scheduler.h |
+++ b/cc/scheduler/scheduler.h |
@@ -17,6 +17,7 @@ |
#include "cc/output/vsync_parameter_observer.h" |
#include "cc/scheduler/begin_frame_source.h" |
#include "cc/scheduler/begin_frame_tracker.h" |
+#include "cc/scheduler/compositor_timing_history.h" |
#include "cc/scheduler/delay_based_time_source.h" |
#include "cc/scheduler/draw_result.h" |
#include "cc/scheduler/scheduler_settings.h" |
@@ -31,6 +32,8 @@ class SingleThreadTaskRunner; |
namespace cc { |
+class RenderingStatsInstrumentation; |
+ |
class SchedulerClient { |
public: |
virtual void WillBeginImplFrame(const BeginFrameArgs& args) = 0; |
@@ -44,9 +47,6 @@ class SchedulerClient { |
virtual void ScheduledActionPrepareTiles() = 0; |
virtual void ScheduledActionInvalidateOutputSurface() = 0; |
virtual void DidAnticipatedDrawTimeChange(base::TimeTicks time) = 0; |
- virtual base::TimeDelta DrawDurationEstimate() = 0; |
- virtual base::TimeDelta BeginMainFrameToCommitDurationEstimate() = 0; |
- virtual base::TimeDelta CommitToActivateDurationEstimate() = 0; |
virtual void DidFinishImplFrame() = 0; |
virtual void SendBeginFramesToChildren(const BeginFrameArgs& args) = 0; |
virtual void SendBeginMainFrameNotExpectedSoon() = 0; |
@@ -80,14 +80,13 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
const SchedulerSettings& scheduler_settings, |
int layer_tree_host_id, |
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
- scoped_ptr<BeginFrameSource> external_begin_frame_source) { |
+ scoped_ptr<BeginFrameSource> external_begin_frame_source, |
+ RenderingStatsInstrumentation* rendering_stats_instrumentation) { |
SchedulerFrameSourcesConstructor frame_sources_constructor; |
- return make_scoped_ptr(new Scheduler(client, |
- scheduler_settings, |
- layer_tree_host_id, |
- task_runner, |
- external_begin_frame_source.Pass(), |
- &frame_sources_constructor)); |
+ return make_scoped_ptr(new Scheduler( |
+ client, scheduler_settings, layer_tree_host_id, task_runner, |
+ external_begin_frame_source.Pass(), rendering_stats_instrumentation, |
+ &frame_sources_constructor)); |
} |
~Scheduler() override; |
@@ -129,7 +128,9 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
void NotifyReadyToCommit(); |
void BeginMainFrameAborted(CommitEarlyOutReason reason); |
+ void DidCommit(); |
+ void WillPrepareTiles(); |
void DidPrepareTiles(); |
void DidLoseOutputSurface(); |
void DidCreateAndInitializeOutputSurface(); |
@@ -182,11 +183,17 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
int layer_tree_host_id, |
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
scoped_ptr<BeginFrameSource> external_begin_frame_source, |
+ RenderingStatsInstrumentation* rendering_stats_instrumentation, |
SchedulerFrameSourcesConstructor* frame_sources_constructor); |
// virtual for testing - Don't call these in the constructor or |
// destructor! |
virtual base::TimeTicks Now() const; |
+ virtual base::TimeDelta BeginMainFrameToCommitDurationEstimate() const; |
+ virtual base::TimeDelta PrepareTilesDurationEstimate() const; |
+ virtual base::TimeDelta PrepareTilesToReadyToActivateDurationEstimate() const; |
+ virtual base::TimeDelta ActivateDurationEstimate() const; |
+ virtual base::TimeDelta DrawDurationEstimate() const; |
scoped_ptr<BeginFrameSourceMultiplexer> frame_source_; |
BeginFrameSource* primary_frame_source_; |
@@ -207,6 +214,7 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
int layer_tree_host_id_; |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
+ CompositorTimingHistory compositor_timing_history_; |
base::TimeDelta estimated_parent_draw_time_; |
std::deque<BeginFrameArgs> begin_retro_frame_args_; |
@@ -232,6 +240,7 @@ class CC_EXPORT Scheduler : public BeginFrameObserverBase { |
void PostBeginRetroFrameIfNeeded(); |
void SetupPollingMechanisms(); |
void DrawAndSwapIfPossible(); |
+ void DrawAndSwapForced(); |
void ProcessScheduledActions(); |
bool CanCommitAndActivateBeforeDeadline() const; |
void AdvanceCommitStateIfPossible(); |