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

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

Issue 246753008: cc: Unify use of DidSwapBuffers() and did_request_swap (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
(...skipping 30 matching lines...) Expand all
41 } 41 }
42 42
43 virtual void DidCommitAndDrawFrame() OVERRIDE { 43 virtual void DidCommitAndDrawFrame() OVERRIDE {
44 switch (layer_tree_host()->source_frame_number()) { 44 switch (layer_tree_host()->source_frame_number()) {
45 case 1: 45 case 1:
46 layer_tree_host()->SetNeedsRedraw(); 46 layer_tree_host()->SetNeedsRedraw();
47 break; 47 break;
48 } 48 }
49 } 49 }
50 50
51 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 51 virtual DrawResult PrepareToDrawOnThread(
52 LayerTreeHostImpl* impl, 52 LayerTreeHostImpl* impl,
53 LayerTreeHostImpl::FrameData* frame_data, 53 LayerTreeHostImpl::FrameData* frame_data,
54 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 54 DrawResult draw_result) OVERRIDE {
55 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 55 EXPECT_EQ(DRAW_SUCCESS, draw_result);
56 56
57 RenderSurfaceImpl* root_surface = 57 RenderSurfaceImpl* root_surface =
58 impl->active_tree()->root_layer()->render_surface(); 58 impl->active_tree()->root_layer()->render_surface();
59 gfx::RectF root_damage = 59 gfx::RectF root_damage =
60 root_surface->damage_tracker()->current_damage_rect(); 60 root_surface->damage_tracker()->current_damage_rect();
61 61
62 switch (draw_count_) { 62 switch (draw_count_) {
63 case 0: 63 case 0:
64 // The first frame has full damage. 64 // The first frame has full damage.
65 EXPECT_EQ(gfx::RectF(10.f, 10.f).ToString(), root_damage.ToString()); 65 EXPECT_EQ(gfx::RectF(10.f, 10.f).ToString(), root_damage.ToString());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 } 103 }
104 104
105 virtual void DidCommitAndDrawFrame() OVERRIDE { 105 virtual void DidCommitAndDrawFrame() OVERRIDE {
106 switch (layer_tree_host()->source_frame_number()) { 106 switch (layer_tree_host()->source_frame_number()) {
107 case 1: 107 case 1:
108 layer_tree_host()->SetViewportSize(gfx::Size(15, 15)); 108 layer_tree_host()->SetViewportSize(gfx::Size(15, 15));
109 break; 109 break;
110 } 110 }
111 } 111 }
112 112
113 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 113 virtual DrawResult PrepareToDrawOnThread(
114 LayerTreeHostImpl* impl, 114 LayerTreeHostImpl* impl,
115 LayerTreeHostImpl::FrameData* frame_data, 115 LayerTreeHostImpl::FrameData* frame_data,
116 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 116 DrawResult draw_result) OVERRIDE {
117 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 117 EXPECT_EQ(DRAW_SUCCESS, draw_result);
118 118
119 RenderSurfaceImpl* root_surface = 119 RenderSurfaceImpl* root_surface =
120 impl->active_tree()->root_layer()->render_surface(); 120 impl->active_tree()->root_layer()->render_surface();
121 gfx::RectF root_damage = 121 gfx::RectF root_damage =
122 root_surface->damage_tracker()->current_damage_rect(); 122 root_surface->damage_tracker()->current_damage_rect();
123 123
124 switch (draw_count_) { 124 switch (draw_count_) {
125 case 0: 125 case 0:
126 // The first frame has full damage. 126 // The first frame has full damage.
127 EXPECT_EQ(gfx::RectF(10.f, 10.f).ToString(), root_damage.ToString()); 127 EXPECT_EQ(gfx::RectF(10.f, 10.f).ToString(), root_damage.ToString());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 162
163 // Most of the layer isn't visible. 163 // Most of the layer isn't visible.
164 content_ = FakeContentLayer::Create(&client_); 164 content_ = FakeContentLayer::Create(&client_);
165 content_->SetBounds(gfx::Size(2000, 100)); 165 content_->SetBounds(gfx::Size(2000, 100));
166 root->AddChild(content_); 166 root->AddChild(content_);
167 167
168 layer_tree_host()->SetRootLayer(root); 168 layer_tree_host()->SetRootLayer(root);
169 LayerTreeHostDamageTest::SetupTree(); 169 LayerTreeHostDamageTest::SetupTree();
170 } 170 }
171 171
172 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 172 virtual DrawResult PrepareToDrawOnThread(
173 LayerTreeHostImpl* host_impl, 173 LayerTreeHostImpl* host_impl,
174 LayerTreeHostImpl::FrameData* frame_data, 174 LayerTreeHostImpl::FrameData* frame_data,
175 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 175 DrawResult draw_result) OVERRIDE {
176 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 176 EXPECT_EQ(DRAW_SUCCESS, draw_result);
177 177
178 int source_frame = host_impl->active_tree()->source_frame_number(); 178 int source_frame = host_impl->active_tree()->source_frame_number();
179 switch (source_frame) { 179 switch (source_frame) {
180 case 0: 180 case 0:
181 // The first frame has damage, so we should draw and swap. 181 // The first frame has damage, so we should draw and swap.
182 ++expect_swap_and_succeed_; 182 ++expect_swap_and_succeed_;
183 break; 183 break;
184 case 1: 184 case 1:
185 // The second frame has no damage, so we should not draw and swap. 185 // The second frame has no damage, so we should not draw and swap.
186 break; 186 break;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 252
253 // Most of the layer isn't visible. 253 // Most of the layer isn't visible.
254 content_ = FakeContentLayer::Create(&client_); 254 content_ = FakeContentLayer::Create(&client_);
255 content_->SetBounds(gfx::Size(100, 100)); 255 content_->SetBounds(gfx::Size(100, 100));
256 root->AddChild(content_); 256 root->AddChild(content_);
257 257
258 layer_tree_host()->SetRootLayer(root); 258 layer_tree_host()->SetRootLayer(root);
259 LayerTreeHostDamageTest::SetupTree(); 259 LayerTreeHostDamageTest::SetupTree();
260 } 260 }
261 261
262 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 262 virtual DrawResult PrepareToDrawOnThread(
263 LayerTreeHostImpl* host_impl, 263 LayerTreeHostImpl* host_impl,
264 LayerTreeHostImpl::FrameData* frame_data, 264 LayerTreeHostImpl::FrameData* frame_data,
265 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 265 DrawResult draw_result) OVERRIDE {
266 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 266 EXPECT_EQ(DRAW_SUCCESS, draw_result);
267 267
268 int source_frame = host_impl->active_tree()->source_frame_number(); 268 int source_frame = host_impl->active_tree()->source_frame_number();
269 switch (source_frame) { 269 switch (source_frame) {
270 case 0: 270 case 0:
271 // The first frame draws and clears any damage. 271 // The first frame draws and clears any damage.
272 break; 272 break;
273 case 1: { 273 case 1: {
274 // The second frame is a readback, we should have damage in the readback 274 // The second frame is a readback, we should have damage in the readback
275 // rect, but not swap. 275 // rect, but not swap.
276 RenderSurfaceImpl* root_surface = 276 RenderSurfaceImpl* root_surface =
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 323
324 root_->SetBounds(gfx::Size(500, 500)); 324 root_->SetBounds(gfx::Size(500, 500));
325 child_->SetPosition(gfx::Point(100, 100)); 325 child_->SetPosition(gfx::Point(100, 100));
326 child_->SetBounds(gfx::Size(30, 30)); 326 child_->SetBounds(gfx::Size(30, 30));
327 327
328 root_->AddChild(child_); 328 root_->AddChild(child_);
329 layer_tree_host()->SetRootLayer(root_); 329 layer_tree_host()->SetRootLayer(root_);
330 LayerTreeHostDamageTest::SetupTree(); 330 LayerTreeHostDamageTest::SetupTree();
331 } 331 }
332 332
333 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 333 virtual DrawResult PrepareToDrawOnThread(
334 LayerTreeHostImpl* host_impl, 334 LayerTreeHostImpl* host_impl,
335 LayerTreeHostImpl::FrameData* frame_data, 335 LayerTreeHostImpl::FrameData* frame_data,
336 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 336 DrawResult draw_result) OVERRIDE {
337 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 337 EXPECT_EQ(DRAW_SUCCESS, draw_result);
338 338
339 RenderSurfaceImpl* root_surface = 339 RenderSurfaceImpl* root_surface =
340 host_impl->active_tree()->root_layer()->render_surface(); 340 host_impl->active_tree()->root_layer()->render_surface();
341 gfx::RectF root_damage = 341 gfx::RectF root_damage =
342 root_surface->damage_tracker()->current_damage_rect(); 342 root_surface->damage_tracker()->current_damage_rect();
343 root_damage.Intersect(root_surface->content_rect()); 343 root_damage.Intersect(root_surface->content_rect());
344 344
345 int source_frame = host_impl->active_tree()->source_frame_number(); 345 int source_frame = host_impl->active_tree()->source_frame_number();
346 switch (source_frame) { 346 switch (source_frame) {
347 case 0: 347 case 0:
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 FakeContentLayerClient client_; 465 FakeContentLayerClient client_;
466 }; 466 };
467 467
468 class LayerTreeHostDamageTestScrollbarDoesDamage 468 class LayerTreeHostDamageTestScrollbarDoesDamage
469 : public LayerTreeHostScrollbarDamageTest { 469 : public LayerTreeHostScrollbarDamageTest {
470 virtual void BeginTest() OVERRIDE { 470 virtual void BeginTest() OVERRIDE {
471 did_swaps_ = 0; 471 did_swaps_ = 0;
472 PostSetNeedsCommitToMainThread(); 472 PostSetNeedsCommitToMainThread();
473 } 473 }
474 474
475 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 475 virtual DrawResult PrepareToDrawOnThread(
476 LayerTreeHostImpl* host_impl, 476 LayerTreeHostImpl* host_impl,
477 LayerTreeHostImpl::FrameData* frame_data, 477 LayerTreeHostImpl::FrameData* frame_data,
478 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 478 DrawResult draw_result) OVERRIDE {
479 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 479 EXPECT_EQ(DRAW_SUCCESS, draw_result);
480 RenderSurfaceImpl* root_surface = 480 RenderSurfaceImpl* root_surface =
481 host_impl->active_tree()->root_layer()->render_surface(); 481 host_impl->active_tree()->root_layer()->render_surface();
482 gfx::RectF root_damage = 482 gfx::RectF root_damage =
483 root_surface->damage_tracker()->current_damage_rect(); 483 root_surface->damage_tracker()->current_damage_rect();
484 root_damage.Intersect(root_surface->content_rect()); 484 root_damage.Intersect(root_surface->content_rect());
485 switch (did_swaps_) { 485 switch (did_swaps_) {
486 case 0: 486 case 0:
487 // The first frame has damage, so we should draw and swap. 487 // The first frame has damage, so we should draw and swap.
488 break; 488 break;
489 case 1: 489 case 1:
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 539
540 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarDoesDamage); 540 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarDoesDamage);
541 541
542 class LayerTreeHostDamageTestScrollbarCommitDoesNoDamage 542 class LayerTreeHostDamageTestScrollbarCommitDoesNoDamage
543 : public LayerTreeHostScrollbarDamageTest { 543 : public LayerTreeHostScrollbarDamageTest {
544 virtual void BeginTest() OVERRIDE { 544 virtual void BeginTest() OVERRIDE {
545 did_swaps_ = 0; 545 did_swaps_ = 0;
546 PostSetNeedsCommitToMainThread(); 546 PostSetNeedsCommitToMainThread();
547 } 547 }
548 548
549 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 549 virtual DrawResult PrepareToDrawOnThread(
550 LayerTreeHostImpl* host_impl, 550 LayerTreeHostImpl* host_impl,
551 LayerTreeHostImpl::FrameData* frame_data, 551 LayerTreeHostImpl::FrameData* frame_data,
552 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 552 DrawResult draw_result) OVERRIDE {
553 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 553 EXPECT_EQ(DRAW_SUCCESS, draw_result);
554 RenderSurfaceImpl* root_surface = 554 RenderSurfaceImpl* root_surface =
555 host_impl->active_tree()->root_layer()->render_surface(); 555 host_impl->active_tree()->root_layer()->render_surface();
556 gfx::RectF root_damage = 556 gfx::RectF root_damage =
557 root_surface->damage_tracker()->current_damage_rect(); 557 root_surface->damage_tracker()->current_damage_rect();
558 root_damage.Intersect(root_surface->content_rect()); 558 root_damage.Intersect(root_surface->content_rect());
559 int frame = host_impl->active_tree()->source_frame_number(); 559 int frame = host_impl->active_tree()->source_frame_number();
560 switch (did_swaps_) { 560 switch (did_swaps_) {
561 case 0: 561 case 0:
562 // The first frame has damage, so we should draw and swap. 562 // The first frame has damage, so we should draw and swap.
563 EXPECT_EQ(0, frame); 563 EXPECT_EQ(0, frame);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_); 631 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_);
632 root->SetBounds(gfx::Size(500, 500)); 632 root->SetBounds(gfx::Size(500, 500));
633 layer_tree_host()->SetRootLayer(root); 633 layer_tree_host()->SetRootLayer(root);
634 LayerTreeHostDamageTest::SetupTree(); 634 LayerTreeHostDamageTest::SetupTree();
635 635
636 swap_count_ = 0; 636 swap_count_ = 0;
637 prepare_to_draw_count_ = 0; 637 prepare_to_draw_count_ = 0;
638 update_visible_tile_count_ = 0; 638 update_visible_tile_count_ = 0;
639 } 639 }
640 640
641 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread( 641 virtual DrawResult PrepareToDrawOnThread(
642 LayerTreeHostImpl* host_impl, 642 LayerTreeHostImpl* host_impl,
643 LayerTreeHostImpl::FrameData* frame_data, 643 LayerTreeHostImpl::FrameData* frame_data,
644 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE { 644 DrawResult draw_result) OVERRIDE {
645 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, draw_result); 645 EXPECT_EQ(DRAW_SUCCESS, draw_result);
646 prepare_to_draw_count_++; 646 prepare_to_draw_count_++;
647 switch (prepare_to_draw_count_) { 647 switch (prepare_to_draw_count_) {
648 case 1: 648 case 1:
649 // Detect that we have an incomplete tile, during the first frame. 649 // Detect that we have an incomplete tile, during the first frame.
650 // The first frame should have damage. 650 // The first frame should have damage.
651 frame_data->contains_incomplete_tile = true; 651 frame_data->contains_incomplete_tile = true;
652 DCHECK(!frame_data->has_no_damage); 652 DCHECK(!frame_data->has_no_damage);
653 break; 653 break;
654 case 2: 654 case 2:
655 // Make a no-damage frame. We early out and can't detect 655 // Make a no-damage frame. We early out and can't detect
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 FakeContentLayerClient client_; 709 FakeContentLayerClient client_;
710 int swap_count_; 710 int swap_count_;
711 int prepare_to_draw_count_; 711 int prepare_to_draw_count_;
712 int update_visible_tile_count_; 712 int update_visible_tile_count_;
713 }; 713 };
714 714
715 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestVisibleTilesStillTriggerDraws); 715 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestVisibleTilesStillTriggerDraws);
716 716
717 } // namespace 717 } // namespace
718 } // namespace cc 718 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest_context.cc ('k') | cc/trees/layer_tree_host_unittest_delegated.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698