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

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

Issue 1258273005: Revert of cc: Consider Surface active if frame received recently (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 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/test/simple_test_tick_clock.h" 9 #include "base/test/simple_test_tick_clock.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 scheduler_->SurfaceDamaged(sid2); 221 scheduler_->SurfaceDamaged(sid2);
222 EXPECT_GE(now_src().NowTicks(), 222 EXPECT_GE(now_src().NowTicks(),
223 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 223 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
224 scheduler_->BeginFrameDeadlineForTest(); 224 scheduler_->BeginFrameDeadlineForTest();
225 225
226 // Make the system idle 226 // Make the system idle
227 BeginFrameForTest(); 227 BeginFrameForTest();
228 scheduler_->BeginFrameDeadlineForTest(); 228 scheduler_->BeginFrameDeadlineForTest();
229 BeginFrameForTest(); 229 BeginFrameForTest();
230 scheduler_->BeginFrameDeadlineForTest(); 230 scheduler_->BeginFrameDeadlineForTest();
231 BeginFrameForTest();
232 scheduler_->BeginFrameDeadlineForTest();
233 231
234 // Deadline should trigger early if child surfaces are idle and 232 // Deadline should trigger early if child surfaces are idle and
235 // we get damage on the root surface. 233 // we get damage on the root surface.
236 BeginFrameForTest();
237 EXPECT_LT(now_src().NowTicks(),
238 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
239 scheduler_->SurfaceDamaged(root_surface_id);
240 EXPECT_GE(now_src().NowTicks(),
241 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
242 scheduler_->BeginFrameDeadlineForTest();
243 }
244
245 TEST_F(DisplaySchedulerTest, SurfaceActiveAt30fps) {
246 SurfaceId root_surface_id(0);
247 SurfaceId sid1(1);
248 SurfaceId sid2(2);
249
250 // Set the root surface
251 scheduler_->SetNewRootSurface(root_surface_id);
252
253 // Get scheduler to detect surface 1 and 2 as active by drawing
254 // two frames in a row. First frame with damage only from surface 1
255 // and the second frame only with damage from surface 2.
256 BeginFrameForTest();
257 scheduler_->SurfaceDamaged(sid1);
258 scheduler_->BeginFrameDeadlineForTest();
259 BeginFrameForTest();
260 scheduler_->SurfaceDamaged(sid2);
261 scheduler_->BeginFrameDeadlineForTest();
262
263 // Deadline doesn't trigger early until surface 1 and 2 are both damaged.
264 BeginFrameForTest();
265 EXPECT_LT(now_src().NowTicks(),
266 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
267 scheduler_->SurfaceDamaged(sid1);
268 EXPECT_LT(now_src().NowTicks(),
269 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
270 scheduler_->SurfaceDamaged(sid2);
271 EXPECT_GE(now_src().NowTicks(),
272 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
273 scheduler_->BeginFrameDeadlineForTest();
274
275 // Make the system idle
276 BeginFrameForTest();
277 scheduler_->BeginFrameDeadlineForTest();
278 BeginFrameForTest();
279 scheduler_->BeginFrameDeadlineForTest();
280 BeginFrameForTest();
281 scheduler_->BeginFrameDeadlineForTest();
282
283 // Deadline should trigger early if child surfaces are idle and
284 // we get damage on the root surface.
285 BeginFrameForTest();
286 EXPECT_LT(now_src().NowTicks(),
287 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
288 scheduler_->SurfaceDamaged(root_surface_id);
289 EXPECT_GE(now_src().NowTicks(),
290 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
291 scheduler_->BeginFrameDeadlineForTest();
292 }
293
294 TEST_F(DisplaySchedulerTest, SurfaceActiveAt20fps) {
295 SurfaceId root_surface_id(0);
296 SurfaceId sid1(1);
297 SurfaceId sid2(2);
298 SurfaceId sid3(3);
299
300 // Set the root surface
301 scheduler_->SetNewRootSurface(root_surface_id);
302
303 // Get scheduler to detect surface 1, 2, and 3 as active by drawing
304 // 3 frames in a row. With damage from each surface in succession.
305 BeginFrameForTest();
306 scheduler_->SurfaceDamaged(sid1);
307 scheduler_->BeginFrameDeadlineForTest();
308 BeginFrameForTest();
309 scheduler_->SurfaceDamaged(sid2);
310 scheduler_->BeginFrameDeadlineForTest();
311 BeginFrameForTest();
312 scheduler_->SurfaceDamaged(sid3);
313 scheduler_->BeginFrameDeadlineForTest();
314
315 // Deadline doesn't trigger early until surface 1, 2, and 3 are all damaged.
316 BeginFrameForTest();
317 EXPECT_LT(now_src().NowTicks(),
318 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
319 scheduler_->SurfaceDamaged(sid1);
320 EXPECT_LT(now_src().NowTicks(),
321 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
322 scheduler_->SurfaceDamaged(sid2);
323 EXPECT_LT(now_src().NowTicks(),
324 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
325 scheduler_->SurfaceDamaged(sid3);
326 EXPECT_GE(now_src().NowTicks(),
327 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
328 scheduler_->BeginFrameDeadlineForTest();
329
330 // Make the system idle
331 BeginFrameForTest();
332 scheduler_->BeginFrameDeadlineForTest();
333 BeginFrameForTest();
334 scheduler_->BeginFrameDeadlineForTest();
335 BeginFrameForTest();
336 scheduler_->BeginFrameDeadlineForTest();
337
338 // Deadline should trigger early if child surfaces are idle and
339 // we get damage on the root surface.
340 BeginFrameForTest();
341 EXPECT_LT(now_src().NowTicks(),
342 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
343 scheduler_->SurfaceDamaged(root_surface_id);
344 EXPECT_GE(now_src().NowTicks(),
345 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
346 scheduler_->BeginFrameDeadlineForTest();
347 }
348
349 TEST_F(DisplaySchedulerTest, SurfaceActiveAt20fps_SingleSurface) {
350 SurfaceId root_surface_id(0);
351 SurfaceId sid1(1);
352 SurfaceId sid2(2);
353 SurfaceId sid3(3);
354
355 // Set the root surface
356 scheduler_->SetNewRootSurface(root_surface_id);
357
358 // Get scheduler to detect surface 1 as active even though
359 // it only swaps at 20fps.
360 BeginFrameForTest();
361 scheduler_->SurfaceDamaged(sid1);
362 scheduler_->BeginFrameDeadlineForTest();
363 BeginFrameForTest();
364 scheduler_->BeginFrameDeadlineForTest();
365 BeginFrameForTest();
366 scheduler_->BeginFrameDeadlineForTest();
367
368 // Deadline doesn't trigger early until surface 1 is damaged.
369 BeginFrameForTest();
370 EXPECT_LT(now_src().NowTicks(),
371 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
372 scheduler_->SurfaceDamaged(sid1);
373 EXPECT_GE(now_src().NowTicks(),
374 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
375 scheduler_->BeginFrameDeadlineForTest();
376
377 // Make the system idle
378 BeginFrameForTest();
379 scheduler_->BeginFrameDeadlineForTest();
380 BeginFrameForTest();
381 scheduler_->BeginFrameDeadlineForTest();
382 BeginFrameForTest();
383 scheduler_->BeginFrameDeadlineForTest();
384
385 // Deadline should trigger early if child surfaces are idle and
386 // we get damage on the root surface.
387 BeginFrameForTest(); 234 BeginFrameForTest();
388 EXPECT_LT(now_src().NowTicks(), 235 EXPECT_LT(now_src().NowTicks(),
389 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 236 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
390 scheduler_->SurfaceDamaged(root_surface_id); 237 scheduler_->SurfaceDamaged(root_surface_id);
391 EXPECT_GE(now_src().NowTicks(), 238 EXPECT_GE(now_src().NowTicks(),
392 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 239 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
393 scheduler_->BeginFrameDeadlineForTest(); 240 scheduler_->BeginFrameDeadlineForTest();
394 } 241 }
395 242
396 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { 243 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) {
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 397
551 scheduler_->SetRootSurfaceResourcesLocked(true); 398 scheduler_->SetRootSurfaceResourcesLocked(true);
552 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 399 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
553 400
554 scheduler_->OutputSurfaceLost(); 401 scheduler_->OutputSurfaceLost();
555 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 402 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
556 } 403 }
557 404
558 } // namespace 405 } // namespace
559 } // namespace cc 406 } // 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