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

Side by Side Diff: cc/surfaces/display_scheduler_unittest.cc

Issue 1155183004: cc: Properly detect when child Surfaces idle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « cc/surfaces/display_scheduler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/surfaces/display_scheduler.h" 5 #include "cc/surfaces/display_scheduler.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/test/null_task_runner.h" 8 #include "base/test/null_task_runner.h"
9 #include "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "cc/output/begin_frame_args.h" 10 #include "cc/output/begin_frame_args.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 SurfaceId root_surface_id(1); 109 SurfaceId root_surface_id(1);
110 BeginFrameForTest(); 110 BeginFrameForTest();
111 EXPECT_LT(now_src().Now(), 111 EXPECT_LT(now_src().Now(),
112 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 112 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
113 scheduler_->EntireDisplayDamaged(root_surface_id); 113 scheduler_->EntireDisplayDamaged(root_surface_id);
114 EXPECT_GE(now_src().Now(), 114 EXPECT_GE(now_src().Now(),
115 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 115 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
116 } 116 }
117 117
118 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { 118 TEST_F(DisplaySchedulerTest, SurfaceDamaged) {
119 SurfaceId root_surface_id(0);
119 SurfaceId sid1(1); 120 SurfaceId sid1(1);
120 SurfaceId sid2(2); 121 SurfaceId sid2(2);
121 122
123 // Set the root surface
124 scheduler_->EntireDisplayDamaged(root_surface_id);
125
122 // Get scheduler to detect surface 1 as active by drawing 126 // Get scheduler to detect surface 1 as active by drawing
123 // two frames in a row with damage from surface 1. 127 // two frames in a row with damage from surface 1.
124 BeginFrameForTest(); 128 BeginFrameForTest();
125 scheduler_->SurfaceDamaged(sid1); 129 scheduler_->SurfaceDamaged(sid1);
126 scheduler_->BeginFrameDeadlineForTest(); 130 scheduler_->BeginFrameDeadlineForTest();
127 BeginFrameForTest(); 131 BeginFrameForTest();
128 scheduler_->SurfaceDamaged(sid1); 132 scheduler_->SurfaceDamaged(sid1);
129 scheduler_->BeginFrameDeadlineForTest(); 133 scheduler_->BeginFrameDeadlineForTest();
130 134
131 // Damage only from surface 2 (inactive) does not trigger deadline early. 135 // Damage only from surface 2 (inactive) does not trigger deadline early.
(...skipping 18 matching lines...) Expand all
150 BeginFrameForTest(); 154 BeginFrameForTest();
151 EXPECT_LT(now_src().Now(), 155 EXPECT_LT(now_src().Now(),
152 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 156 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
153 scheduler_->SurfaceDamaged(sid1); 157 scheduler_->SurfaceDamaged(sid1);
154 EXPECT_LT(now_src().Now(), 158 EXPECT_LT(now_src().Now(),
155 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 159 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
156 scheduler_->SurfaceDamaged(sid2); 160 scheduler_->SurfaceDamaged(sid2);
157 EXPECT_GE(now_src().Now(), 161 EXPECT_GE(now_src().Now(),
158 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 162 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
159 scheduler_->BeginFrameDeadlineForTest(); 163 scheduler_->BeginFrameDeadlineForTest();
164
165 // Make the system idle
166 BeginFrameForTest();
167 scheduler_->BeginFrameDeadlineForTest();
168 BeginFrameForTest();
169 scheduler_->BeginFrameDeadlineForTest();
170
171 // Deadline should trigger early if child surfaces are idle and
172 // we get damage on the root surface.
173 BeginFrameForTest();
174 EXPECT_LT(now_src().Now(),
175 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
176 scheduler_->SurfaceDamaged(root_surface_id);
177 EXPECT_GE(now_src().Now(),
178 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
179 scheduler_->BeginFrameDeadlineForTest();
160 } 180 }
161 181
162 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { 182 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) {
163 SurfaceId sid1(1); 183 SurfaceId sid1(1);
164 184
165 // DrawAndSwap normally. 185 // DrawAndSwap normally.
166 BeginFrameForTest(); 186 BeginFrameForTest();
167 EXPECT_LT(now_src().Now(), 187 EXPECT_LT(now_src().Now(),
168 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 188 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
169 EXPECT_EQ(0, client_->draw_and_swap_count()); 189 EXPECT_EQ(0, client_->draw_and_swap_count());
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 332
313 scheduler_->SetRootSurfaceResourcesLocked(true); 333 scheduler_->SetRootSurfaceResourcesLocked(true);
314 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 334 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
315 335
316 scheduler_->OutputSurfaceLost(); 336 scheduler_->OutputSurfaceLost();
317 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 337 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
318 } 338 }
319 339
320 } // namespace 340 } // namespace
321 } // namespace cc 341 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/display_scheduler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698