Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit d81858f

Browse files
committed
Merge pull request #338 from abarth/improve_pipeline
Improve pipeline accounting
2 parents f88d017 + a836ce0 commit d81858f

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

sky/shell/ui/animator.cc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const int kPipelineDepth = 2;
1616
Animator::Animator(const Engine::Config& config, Engine* engine)
1717
: config_(config),
1818
engine_(engine),
19-
outstanding_draw_requests_(0),
19+
outstanding_requests_(0),
2020
did_defer_frame_request_(false),
2121
engine_requested_frame_(false),
2222
paused_(false),
@@ -29,13 +29,12 @@ Animator::~Animator() {
2929
void Animator::RequestFrame() {
3030
if (engine_requested_frame_)
3131
return;
32-
33-
DCHECK(!did_defer_frame_request_);
34-
3532
TRACE_EVENT_ASYNC_BEGIN0("sky", "Frame request pending", this);
3633
engine_requested_frame_ = true;
3734

38-
if (outstanding_draw_requests_ >= kPipelineDepth) {
35+
DCHECK(!did_defer_frame_request_);
36+
outstanding_requests_++;
37+
if (outstanding_requests_ >= kPipelineDepth) {
3938
did_defer_frame_request_ = true;
4039
return;
4140
}
@@ -56,28 +55,29 @@ void Animator::Start() {
5655
}
5756

5857
void Animator::BeginFrame() {
59-
if (!engine_requested_frame_)
60-
return;
61-
engine_requested_frame_ = false;
6258
TRACE_EVENT_ASYNC_END0("sky", "Frame request pending", this);
59+
DCHECK(engine_requested_frame_);
60+
engine_requested_frame_ = false;
61+
62+
DCHECK(outstanding_requests_ > 0);
63+
DCHECK(outstanding_requests_ <= kPipelineDepth) << outstanding_requests_;
6364

6465
engine_->BeginFrame(base::TimeTicks::Now());
6566
skia::RefPtr<SkPicture> picture = engine_->Paint();
6667

67-
outstanding_draw_requests_++;
6868
config_.gpu_task_runner->PostTaskAndReply(
6969
FROM_HERE,
7070
base::Bind(&GPUDelegate::Draw, config_.gpu_delegate, picture),
7171
base::Bind(&Animator::OnFrameComplete, weak_factory_.GetWeakPtr()));
7272
}
7373

7474
void Animator::OnFrameComplete() {
75-
DCHECK(outstanding_draw_requests_ > 0);
76-
--outstanding_draw_requests_;
75+
DCHECK(outstanding_requests_ > 0);
76+
--outstanding_requests_;
7777
if (paused_)
7878
return;
7979

80-
if (engine_requested_frame_ && did_defer_frame_request_) {
80+
if (did_defer_frame_request_) {
8181
did_defer_frame_request_ = false;
8282
BeginFrame();
8383
}

sky/shell/ui/animator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Animator {
2727

2828
Engine::Config config_;
2929
Engine* engine_;
30-
int outstanding_draw_requests_;
30+
int outstanding_requests_;
3131
bool did_defer_frame_request_;
3232
bool engine_requested_frame_;
3333
bool paused_;

0 commit comments

Comments
 (0)