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

Side by Side Diff: cc/trees/layer_tree_host_unittest.cc

Issue 23503003: cc: Add readback and forced draw states to the Scheduler (Closed) Base URL: http://git.chromium.org/chromium/src.git@schedReorg3
Patch Set: Add a readback during forced draw test Created 7 years, 3 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
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 496
497 virtual void AfterTest() OVERRIDE {} 497 virtual void AfterTest() OVERRIDE {}
498 498
499 private: 499 private:
500 int num_commits_; 500 int num_commits_;
501 }; 501 };
502 502
503 MULTI_THREAD_TEST_F( 503 MULTI_THREAD_TEST_F(
504 LayerTreeHostTestCompositeAndReadbackBeforePreviousCommitDraws); 504 LayerTreeHostTestCompositeAndReadbackBeforePreviousCommitDraws);
505 505
506 class LayerTreeHostTestCompositeAndReadbackDuringForcedDraw
507 : public LayerTreeHostTest {
508 protected:
509 LayerTreeHostTestCompositeAndReadbackDuringForcedDraw()
510 : prepare_to_draw_count_(0) {}
511
512 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
513 // This enables forced draws after a single prepare to draw failure.
514 settings->timeout_and_draw_when_animation_checkerboards = true;
515 settings->maximum_number_of_failed_draws_before_draw_is_forced_ = 1;
516 }
517
518 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
519
520 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
521 LayerTreeHostImpl::FrameData* frame_data,
522 bool result) OVERRIDE {
523 prepare_to_draw_count_++;
524 EXPECT_LE(prepare_to_draw_count_, 3);
525
526 // Before we react to the failed draw by initiating the forced draw
527 // sequence, start a readback on the main thread.
528 if (prepare_to_draw_count_ ==
529 host_impl->settings()
530 .maximum_number_of_failed_draws_before_draw_is_forced_) {
531 PostReadbackToMainThread();
532 }
533
534 // Returning false will eventually result in a forced draw.
535 return false;
536 }
537
538 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
539 // We should only draw for the readback and the forced draw.
540 EXPECT_GE(prepare_to_draw_count_, 2);
541 EXPECT_LE(prepare_to_draw_count_, 3);
542 }
543
544 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl,
545 bool result) OVERRIDE {
546 // We should only swap for the forced draw.
547 EXPECT_EQ(prepare_to_draw_count_, 3);
brianderson 2013/09/04 21:34:39 This expectation fails with the delegated renderer
brianderson 2013/09/04 21:48:59 I looks like the delegating renderer cannot do a r
548 EndTest();
549 }
550
551 virtual void AfterTest() OVERRIDE {}
552
553 int prepare_to_draw_count_;
554 };
555
556 MULTI_THREAD_TEST_F(LayerTreeHostTestCompositeAndReadbackDuringForcedDraw);
557
506 // If the layerTreeHost says it can't draw, Then we should not try to draw. 558 // If the layerTreeHost says it can't draw, Then we should not try to draw.
507 class LayerTreeHostTestCanDrawBlocksDrawing : public LayerTreeHostTest { 559 class LayerTreeHostTestCanDrawBlocksDrawing : public LayerTreeHostTest {
508 public: 560 public:
509 LayerTreeHostTestCanDrawBlocksDrawing() : num_commits_(0), done_(false) {} 561 LayerTreeHostTestCanDrawBlocksDrawing() : num_commits_(0), done_(false) {}
510 562
511 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 563 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
512 564
513 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 565 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
514 if (done_) 566 if (done_)
515 return; 567 return;
(...skipping 3944 matching lines...) Expand 10 before | Expand all | Expand 10 after
4460 int num_will_begin_frames_; 4512 int num_will_begin_frames_;
4461 int num_impl_commits_; 4513 int num_impl_commits_;
4462 }; 4514 };
4463 4515
4464 // Commits can only be aborted when using the thread proxy. 4516 // Commits can only be aborted when using the thread proxy.
4465 MULTI_THREAD_TEST_F(LayerTreeHostTestAbortEvictedTextures); 4517 MULTI_THREAD_TEST_F(LayerTreeHostTestAbortEvictedTextures);
4466 4518
4467 } // namespace 4519 } // namespace
4468 4520
4469 } // namespace cc 4521 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698