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

Unified Diff: cc/scheduler/scheduler.h

Issue 1192663005: cc: Measure compositor timing with finer granularity (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@modeTimingHistory3
Patch Set: fixes Created 5 years, 6 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
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();

Powered by Google App Engine
This is Rietveld 408576698