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

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

Issue 2872883002: Rename EvictFrame, EvictSurface to EvictCurrentSurface (Closed)
Patch Set: Rebase Created 3 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
« no previous file with comments | « cc/surfaces/surface_aggregator_perftest.cc ('k') | cc/surfaces/surface_hittest_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/surface_aggregator.h" 5 #include "cc/surfaces/surface_aggregator.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 &manager_, 66 &manager_,
67 kArbitraryRootFrameSinkId, 67 kArbitraryRootFrameSinkId,
68 kRootIsRoot, 68 kRootIsRoot,
69 kHandlesFrameSinkIdInvalidation, 69 kHandlesFrameSinkIdInvalidation,
70 kNeedsSyncPoints)), 70 kNeedsSyncPoints)),
71 aggregator_(&manager_, NULL, use_damage_rect) {} 71 aggregator_(&manager_, NULL, use_damage_rect) {}
72 72
73 SurfaceAggregatorTest() : SurfaceAggregatorTest(false) {} 73 SurfaceAggregatorTest() : SurfaceAggregatorTest(false) {}
74 74
75 void TearDown() override { 75 void TearDown() override {
76 support_->EvictFrame(); 76 support_->EvictCurrentSurface();
77 testing::Test::TearDown(); 77 testing::Test::TearDown();
78 } 78 }
79 79
80 protected: 80 protected:
81 SurfaceManager manager_; 81 SurfaceManager manager_;
82 FakeCompositorFrameSinkSupportClient fake_client_; 82 FakeCompositorFrameSinkSupportClient fake_client_;
83 std::unique_ptr<CompositorFrameSinkSupport> support_; 83 std::unique_ptr<CompositorFrameSinkSupport> support_;
84 SurfaceAggregator aggregator_; 84 SurfaceAggregator aggregator_;
85 }; 85 };
86 86
(...skipping 12 matching lines...) Expand all
99 : SurfaceAggregatorValidSurfaceTest(false) {} 99 : SurfaceAggregatorValidSurfaceTest(false) {}
100 100
101 void SetUp() override { 101 void SetUp() override {
102 SurfaceAggregatorTest::SetUp(); 102 SurfaceAggregatorTest::SetUp();
103 root_local_surface_id_ = allocator_.GenerateId(); 103 root_local_surface_id_ = allocator_.GenerateId();
104 root_surface_ = manager_.GetSurfaceForId( 104 root_surface_ = manager_.GetSurfaceForId(
105 SurfaceId(support_->frame_sink_id(), root_local_surface_id_)); 105 SurfaceId(support_->frame_sink_id(), root_local_surface_id_));
106 } 106 }
107 107
108 void TearDown() override { 108 void TearDown() override {
109 child_support_->EvictFrame(); 109 child_support_->EvictCurrentSurface();
110 SurfaceAggregatorTest::TearDown(); 110 SurfaceAggregatorTest::TearDown();
111 } 111 }
112 112
113 void AggregateAndVerify(test::Pass* expected_passes, 113 void AggregateAndVerify(test::Pass* expected_passes,
114 size_t expected_pass_count, 114 size_t expected_pass_count,
115 SurfaceId* surface_ids, 115 SurfaceId* surface_ids,
116 size_t expected_surface_count) { 116 size_t expected_surface_count) {
117 CompositorFrame aggregated_frame = aggregator_.Aggregate( 117 CompositorFrame aggregated_frame = aggregator_.Aggregate(
118 SurfaceId(support_->frame_sink_id(), root_local_surface_id_)); 118 SurfaceId(support_->frame_sink_id(), root_local_surface_id_));
119 119
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 render_pass_list[0]->shared_quad_state_list); 223 render_pass_list[0]->shared_quad_state_list);
224 ASSERT_EQ(2u, shared_quad_state_list.size()); 224 ASSERT_EQ(2u, shared_quad_state_list.size());
225 EXPECT_EQ(1.f, shared_quad_state_list.ElementAt(0)->opacity); 225 EXPECT_EQ(1.f, shared_quad_state_list.ElementAt(0)->opacity);
226 EXPECT_EQ(1.f, shared_quad_state_list.ElementAt(1)->opacity); 226 EXPECT_EQ(1.f, shared_quad_state_list.ElementAt(1)->opacity);
227 227
228 SharedQuadStateList& shared_quad_state_list2( 228 SharedQuadStateList& shared_quad_state_list2(
229 render_pass_list[1]->shared_quad_state_list); 229 render_pass_list[1]->shared_quad_state_list);
230 ASSERT_EQ(1u, shared_quad_state_list2.size()); 230 ASSERT_EQ(1u, shared_quad_state_list2.size());
231 EXPECT_EQ(.5f, shared_quad_state_list2.ElementAt(0)->opacity); 231 EXPECT_EQ(.5f, shared_quad_state_list2.ElementAt(0)->opacity);
232 232
233 embedded_support->EvictFrame(); 233 embedded_support->EvictCurrentSurface();
234 } 234 }
235 235
236 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSimpleFrame) { 236 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSimpleFrame) {
237 test::Quad quads[][2] = {{test::Quad::SolidColorQuad(SK_ColorWHITE), 237 test::Quad quads[][2] = {{test::Quad::SolidColorQuad(SK_ColorWHITE),
238 test::Quad::SolidColorQuad(SK_ColorLTGRAY)}, 238 test::Quad::SolidColorQuad(SK_ColorLTGRAY)},
239 {test::Quad::SolidColorQuad(SK_ColorGRAY), 239 {test::Quad::SolidColorQuad(SK_ColorGRAY),
240 test::Quad::SolidColorQuad(SK_ColorDKGRAY)}}; 240 test::Quad::SolidColorQuad(SK_ColorDKGRAY)}};
241 test::Pass passes[] = {test::Pass(quads[0], arraysize(quads[0]), 1), 241 test::Pass passes[] = {test::Pass(quads[0], arraysize(quads[0]), 1),
242 test::Pass(quads[1], arraysize(quads[1]), 2)}; 242 test::Pass(quads[1], arraysize(quads[1]), 2)};
243 243
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 test::Quad expected_quads[] = {test::Quad::SolidColorQuad(SK_ColorWHITE), 333 test::Quad expected_quads[] = {test::Quad::SolidColorQuad(SK_ColorWHITE),
334 test::Quad::SolidColorQuad(SK_ColorGREEN), 334 test::Quad::SolidColorQuad(SK_ColorGREEN),
335 test::Quad::SolidColorQuad(SK_ColorBLACK)}; 335 test::Quad::SolidColorQuad(SK_ColorBLACK)};
336 test::Pass expected_passes[] = { 336 test::Pass expected_passes[] = {
337 test::Pass(expected_quads, arraysize(expected_quads))}; 337 test::Pass(expected_quads, arraysize(expected_quads))};
338 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_); 338 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_);
339 SurfaceId ids[] = {root_surface_id, embedded_surface_id}; 339 SurfaceId ids[] = {root_surface_id, embedded_surface_id};
340 AggregateAndVerify( 340 AggregateAndVerify(
341 expected_passes, arraysize(expected_passes), ids, arraysize(ids)); 341 expected_passes, arraysize(expected_passes), ids, arraysize(ids));
342 342
343 embedded_support->EvictFrame(); 343 embedded_support->EvictCurrentSurface();
344 } 344 }
345 345
346 // This test verifies that in the absence of a primary Surface, 346 // This test verifies that in the absence of a primary Surface,
347 // SurfaceAggregator will embed a fallback Surface, if available. If the primary 347 // SurfaceAggregator will embed a fallback Surface, if available. If the primary
348 // Surface is available, though, the fallback will not be used. 348 // Surface is available, though, the fallback will not be used.
349 TEST_F(SurfaceAggregatorValidSurfaceTest, FallbackSurfaceReference) { 349 TEST_F(SurfaceAggregatorValidSurfaceTest, FallbackSurfaceReference) {
350 std::unique_ptr<CompositorFrameSinkSupport> primary_child_support = 350 std::unique_ptr<CompositorFrameSinkSupport> primary_child_support =
351 CompositorFrameSinkSupport::Create( 351 CompositorFrameSinkSupport::Create(
352 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot, 352 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot,
353 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 353 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 408
409 // Now that the primary Surface has a CompositorFrame, we expect 409 // Now that the primary Surface has a CompositorFrame, we expect
410 // SurfaceAggregator to embed the primary Surface, and drop the fallback 410 // SurfaceAggregator to embed the primary Surface, and drop the fallback
411 // Surface. 411 // Surface.
412 test::Quad expected_quads2[] = {test::Quad::SolidColorQuad(SK_ColorGREEN)}; 412 test::Quad expected_quads2[] = {test::Quad::SolidColorQuad(SK_ColorGREEN)};
413 test::Pass expected_passes2[] = { 413 test::Pass expected_passes2[] = {
414 test::Pass(expected_quads2, arraysize(expected_quads2))}; 414 test::Pass(expected_quads2, arraysize(expected_quads2))};
415 AggregateAndVerify(expected_passes2, arraysize(expected_passes2), ids, 415 AggregateAndVerify(expected_passes2, arraysize(expected_passes2), ids,
416 arraysize(ids)); 416 arraysize(ids));
417 417
418 primary_child_support->EvictFrame(); 418 primary_child_support->EvictCurrentSurface();
419 fallback_child_support->EvictFrame(); 419 fallback_child_support->EvictCurrentSurface();
420 } 420 }
421 421
422 // This test verifies that in the presence of both primary Surface and fallback 422 // This test verifies that in the presence of both primary Surface and fallback
423 // Surface, the fallback will not be used. 423 // Surface, the fallback will not be used.
424 TEST_F(SurfaceAggregatorValidSurfaceTest, FallbackSurfaceReferenceWithPrimary) { 424 TEST_F(SurfaceAggregatorValidSurfaceTest, FallbackSurfaceReferenceWithPrimary) {
425 std::unique_ptr<CompositorFrameSinkSupport> primary_child_support = 425 std::unique_ptr<CompositorFrameSinkSupport> primary_child_support =
426 CompositorFrameSinkSupport::Create( 426 CompositorFrameSinkSupport::Create(
427 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot, 427 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot,
428 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 428 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
429 LocalSurfaceId primary_child_local_surface_id = allocator_.GenerateId(); 429 LocalSurfaceId primary_child_local_surface_id = allocator_.GenerateId();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 test::Quad expected_quads1[] = {test::Quad::SolidColorQuad(SK_ColorGREEN)}; 473 test::Quad expected_quads1[] = {test::Quad::SolidColorQuad(SK_ColorGREEN)};
474 test::Pass expected_passes1[] = { 474 test::Pass expected_passes1[] = {
475 test::Pass(expected_quads1, arraysize(expected_quads1))}; 475 test::Pass(expected_quads1, arraysize(expected_quads1))};
476 476
477 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_); 477 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_);
478 SurfaceId ids[] = {root_surface_id, primary_child_surface_id, 478 SurfaceId ids[] = {root_surface_id, primary_child_surface_id,
479 fallback_child_surface_id}; 479 fallback_child_surface_id};
480 AggregateAndVerify(expected_passes1, arraysize(expected_passes1), ids, 480 AggregateAndVerify(expected_passes1, arraysize(expected_passes1), ids,
481 arraysize(ids)); 481 arraysize(ids));
482 482
483 primary_child_support->EvictFrame(); 483 primary_child_support->EvictCurrentSurface();
484 fallback_child_support->EvictFrame(); 484 fallback_child_support->EvictCurrentSurface();
485 } 485 }
486 486
487 TEST_F(SurfaceAggregatorValidSurfaceTest, CopyRequest) { 487 TEST_F(SurfaceAggregatorValidSurfaceTest, CopyRequest) {
488 std::unique_ptr<CompositorFrameSinkSupport> embedded_support = 488 std::unique_ptr<CompositorFrameSinkSupport> embedded_support =
489 CompositorFrameSinkSupport::Create( 489 CompositorFrameSinkSupport::Create(
490 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot, 490 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot,
491 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 491 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
492 LocalSurfaceId embedded_local_surface_id = allocator_.GenerateId(); 492 LocalSurfaceId embedded_local_surface_id = allocator_.GenerateId();
493 SurfaceId embedded_surface_id(embedded_support->frame_sink_id(), 493 SurfaceId embedded_surface_id(embedded_support->frame_sink_id(),
494 embedded_local_surface_id); 494 embedded_local_surface_id);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 532
533 SurfaceId surface_ids[] = {root_surface_id, embedded_surface_id}; 533 SurfaceId surface_ids[] = {root_surface_id, embedded_surface_id};
534 EXPECT_EQ(arraysize(surface_ids), 534 EXPECT_EQ(arraysize(surface_ids),
535 aggregator_.previous_contained_surfaces().size()); 535 aggregator_.previous_contained_surfaces().size());
536 for (size_t i = 0; i < arraysize(surface_ids); i++) { 536 for (size_t i = 0; i < arraysize(surface_ids); i++) {
537 EXPECT_TRUE( 537 EXPECT_TRUE(
538 aggregator_.previous_contained_surfaces().find(surface_ids[i]) != 538 aggregator_.previous_contained_surfaces().find(surface_ids[i]) !=
539 aggregator_.previous_contained_surfaces().end()); 539 aggregator_.previous_contained_surfaces().end());
540 } 540 }
541 541
542 embedded_support->EvictFrame(); 542 embedded_support->EvictCurrentSurface();
543 } 543 }
544 544
545 // Root surface may contain copy requests. 545 // Root surface may contain copy requests.
546 TEST_F(SurfaceAggregatorValidSurfaceTest, RootCopyRequest) { 546 TEST_F(SurfaceAggregatorValidSurfaceTest, RootCopyRequest) {
547 std::unique_ptr<CompositorFrameSinkSupport> embedded_support = 547 std::unique_ptr<CompositorFrameSinkSupport> embedded_support =
548 CompositorFrameSinkSupport::Create( 548 CompositorFrameSinkSupport::Create(
549 nullptr, &manager_, kArbitraryFrameSinkId2, kChildIsRoot, 549 nullptr, &manager_, kArbitraryFrameSinkId2, kChildIsRoot,
550 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 550 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
551 LocalSurfaceId embedded_local_surface_id = allocator_.GenerateId(); 551 LocalSurfaceId embedded_local_surface_id = allocator_.GenerateId();
552 SurfaceId embedded_surface_id(embedded_support->frame_sink_id(), 552 SurfaceId embedded_surface_id(embedded_support->frame_sink_id(),
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 } 613 }
614 614
615 // Ensure copy requests have been removed from root surface. 615 // Ensure copy requests have been removed from root surface.
616 const CompositorFrame& original_frame = 616 const CompositorFrame& original_frame =
617 manager_.GetSurfaceForId(root_surface_id)->GetActiveFrame(); 617 manager_.GetSurfaceForId(root_surface_id)->GetActiveFrame();
618 const RenderPassList& original_pass_list = original_frame.render_pass_list; 618 const RenderPassList& original_pass_list = original_frame.render_pass_list;
619 ASSERT_EQ(2u, original_pass_list.size()); 619 ASSERT_EQ(2u, original_pass_list.size());
620 DCHECK(original_pass_list[0]->copy_requests.empty()); 620 DCHECK(original_pass_list[0]->copy_requests.empty());
621 DCHECK(original_pass_list[1]->copy_requests.empty()); 621 DCHECK(original_pass_list[1]->copy_requests.empty());
622 622
623 embedded_support->EvictFrame(); 623 embedded_support->EvictCurrentSurface();
624 } 624 }
625 625
626 TEST_F(SurfaceAggregatorValidSurfaceTest, UnreferencedSurface) { 626 TEST_F(SurfaceAggregatorValidSurfaceTest, UnreferencedSurface) {
627 std::unique_ptr<CompositorFrameSinkSupport> embedded_support = 627 std::unique_ptr<CompositorFrameSinkSupport> embedded_support =
628 CompositorFrameSinkSupport::Create( 628 CompositorFrameSinkSupport::Create(
629 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot, 629 nullptr, &manager_, kArbitraryFrameSinkId1, kChildIsRoot,
630 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 630 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
631 std::unique_ptr<CompositorFrameSinkSupport> parent_support = 631 std::unique_ptr<CompositorFrameSinkSupport> parent_support =
632 CompositorFrameSinkSupport::Create( 632 CompositorFrameSinkSupport::Create(
633 nullptr, &manager_, kArbitraryFrameSinkId2, kRootIsRoot, 633 nullptr, &manager_, kArbitraryFrameSinkId2, kRootIsRoot,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 SurfaceId(support_->frame_sink_id(), root_local_surface_id_), 710 SurfaceId(support_->frame_sink_id(), root_local_surface_id_),
711 parent_surface_id, embedded_surface_id, nonexistent_surface_id}; 711 parent_surface_id, embedded_surface_id, nonexistent_surface_id};
712 EXPECT_EQ(arraysize(surface_ids), 712 EXPECT_EQ(arraysize(surface_ids),
713 aggregator_.previous_contained_surfaces().size()); 713 aggregator_.previous_contained_surfaces().size());
714 for (size_t i = 0; i < arraysize(surface_ids); i++) { 714 for (size_t i = 0; i < arraysize(surface_ids); i++) {
715 EXPECT_TRUE( 715 EXPECT_TRUE(
716 aggregator_.previous_contained_surfaces().find(surface_ids[i]) != 716 aggregator_.previous_contained_surfaces().find(surface_ids[i]) !=
717 aggregator_.previous_contained_surfaces().end()); 717 aggregator_.previous_contained_surfaces().end());
718 } 718 }
719 719
720 embedded_support->EvictFrame(); 720 embedded_support->EvictCurrentSurface();
721 parent_support->EvictFrame(); 721 parent_support->EvictCurrentSurface();
722 } 722 }
723 723
724 // This tests referencing a surface that has multiple render passes. 724 // This tests referencing a surface that has multiple render passes.
725 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSurfaceReference) { 725 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSurfaceReference) {
726 LocalSurfaceId embedded_local_surface_id = child_allocator_.GenerateId(); 726 LocalSurfaceId embedded_local_surface_id = child_allocator_.GenerateId();
727 SurfaceId embedded_surface_id(child_support_->frame_sink_id(), 727 SurfaceId embedded_surface_id(child_support_->frame_sink_id(),
728 embedded_local_surface_id); 728 embedded_local_surface_id);
729 729
730 int pass_ids[] = {1, 2, 3}; 730 int pass_ids[] = {1, 2, 3};
731 731
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 1194
1195 ASSERT_EQ(7u, aggregated_quad_list.size()); 1195 ASSERT_EQ(7u, aggregated_quad_list.size());
1196 1196
1197 for (auto iter = aggregated_quad_list.cbegin(); 1197 for (auto iter = aggregated_quad_list.cbegin();
1198 iter != aggregated_quad_list.cend(); 1198 iter != aggregated_quad_list.cend();
1199 ++iter) { 1199 ++iter) {
1200 EXPECT_EQ(blend_modes[iter.index()], iter->shared_quad_state->blend_mode) 1200 EXPECT_EQ(blend_modes[iter.index()], iter->shared_quad_state->blend_mode)
1201 << iter.index(); 1201 << iter.index();
1202 } 1202 }
1203 1203
1204 grandchild_support->EvictFrame(); 1204 grandchild_support->EvictCurrentSurface();
1205 child_one_support->EvictFrame(); 1205 child_one_support->EvictCurrentSurface();
1206 child_two_support->EvictFrame(); 1206 child_two_support->EvictCurrentSurface();
1207 } 1207 }
1208 1208
1209 // This tests that when aggregating a frame with multiple render passes that we 1209 // This tests that when aggregating a frame with multiple render passes that we
1210 // map the transforms for the root pass but do not modify the transform on child 1210 // map the transforms for the root pass but do not modify the transform on child
1211 // passes. 1211 // passes.
1212 // 1212 //
1213 // The root surface has one pass with a surface quad transformed by +10 in the y 1213 // The root surface has one pass with a surface quad transformed by +10 in the y
1214 // direction. 1214 // direction.
1215 // 1215 //
1216 // The middle surface has one pass with a surface quad scaled by 2 in the x 1216 // The middle surface has one pass with a surface quad scaled by 2 in the x
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 aggregated_pass_list[1]->shared_quad_state_list.ElementAt(1)->is_clipped); 1384 aggregated_pass_list[1]->shared_quad_state_list.ElementAt(1)->is_clipped);
1385 1385
1386 // The second quad in the root pass is aggregated from the child, so its 1386 // The second quad in the root pass is aggregated from the child, so its
1387 // clip rect must be transformed by the child's translation/scale and 1387 // clip rect must be transformed by the child's translation/scale and
1388 // clipped be the visible_rects for both children. 1388 // clipped be the visible_rects for both children.
1389 EXPECT_EQ(gfx::Rect(0, 13, 8, 12).ToString(), 1389 EXPECT_EQ(gfx::Rect(0, 13, 8, 12).ToString(),
1390 aggregated_pass_list[1] 1390 aggregated_pass_list[1]
1391 ->shared_quad_state_list.ElementAt(1) 1391 ->shared_quad_state_list.ElementAt(1)
1392 ->clip_rect.ToString()); 1392 ->clip_rect.ToString());
1393 1393
1394 middle_support->EvictFrame(); 1394 middle_support->EvictCurrentSurface();
1395 } 1395 }
1396 1396
1397 // Tests that damage rects are aggregated correctly when surfaces change. 1397 // Tests that damage rects are aggregated correctly when surfaces change.
1398 TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { 1398 TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) {
1399 std::unique_ptr<CompositorFrameSinkSupport> parent_support = 1399 std::unique_ptr<CompositorFrameSinkSupport> parent_support =
1400 CompositorFrameSinkSupport::Create( 1400 CompositorFrameSinkSupport::Create(
1401 nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot, 1401 nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot,
1402 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 1402 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
1403 test::Quad child_quads[] = {test::Quad::RenderPassQuad(1)}; 1403 test::Quad child_quads[] = {test::Quad::RenderPassQuad(1)};
1404 test::Pass child_passes[] = { 1404 test::Pass child_passes[] = {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
1562 1562
1563 const RenderPassList& aggregated_pass_list = 1563 const RenderPassList& aggregated_pass_list =
1564 aggregated_frame.render_pass_list; 1564 aggregated_frame.render_pass_list;
1565 1565
1566 ASSERT_EQ(2u, aggregated_pass_list.size()); 1566 ASSERT_EQ(2u, aggregated_pass_list.size());
1567 1567
1568 EXPECT_TRUE(aggregated_pass_list[1]->damage_rect.Contains( 1568 EXPECT_TRUE(aggregated_pass_list[1]->damage_rect.Contains(
1569 gfx::Rect(SurfaceSize()))); 1569 gfx::Rect(SurfaceSize())));
1570 } 1570 }
1571 1571
1572 parent_support->EvictFrame(); 1572 parent_support->EvictCurrentSurface();
1573 } 1573 }
1574 1574
1575 // Check that damage is correctly calculated for surfaces. 1575 // Check that damage is correctly calculated for surfaces.
1576 TEST_F(SurfaceAggregatorValidSurfaceTest, SwitchSurfaceDamage) { 1576 TEST_F(SurfaceAggregatorValidSurfaceTest, SwitchSurfaceDamage) {
1577 test::Quad root_render_pass_quads[] = {test::Quad::SolidColorQuad(1)}; 1577 test::Quad root_render_pass_quads[] = {test::Quad::SolidColorQuad(1)};
1578 1578
1579 test::Pass root_passes[] = { 1579 test::Pass root_passes[] = {
1580 test::Pass(root_render_pass_quads, arraysize(root_render_pass_quads), 2)}; 1580 test::Pass(root_render_pass_quads, arraysize(root_render_pass_quads), 2)};
1581 1581
1582 CompositorFrame root_frame = test::MakeEmptyCompositorFrame(); 1582 CompositorFrame root_frame = test::MakeEmptyCompositorFrame();
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
2022 frame = aggregator_->Aggregate(surface_id); 2022 frame = aggregator_->Aggregate(surface_id);
2023 2023
2024 ASSERT_EQ(3u, client.returned_resources().size()); 2024 ASSERT_EQ(3u, client.returned_resources().size());
2025 ResourceId returned_ids[3]; 2025 ResourceId returned_ids[3];
2026 for (size_t i = 0; i < 3; ++i) { 2026 for (size_t i = 0; i < 3; ++i) {
2027 returned_ids[i] = client.returned_resources()[i].id; 2027 returned_ids[i] = client.returned_resources()[i].id;
2028 } 2028 }
2029 EXPECT_THAT(returned_ids, 2029 EXPECT_THAT(returned_ids,
2030 testing::WhenSorted(testing::ElementsAreArray(ids))); 2030 testing::WhenSorted(testing::ElementsAreArray(ids)));
2031 2031
2032 support->EvictFrame(); 2032 support->EvictCurrentSurface();
2033 } 2033 }
2034 2034
2035 TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) { 2035 TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) {
2036 FakeCompositorFrameSinkSupportClient client; 2036 FakeCompositorFrameSinkSupportClient client;
2037 std::unique_ptr<CompositorFrameSinkSupport> support = 2037 std::unique_ptr<CompositorFrameSinkSupport> support =
2038 CompositorFrameSinkSupport::Create( 2038 CompositorFrameSinkSupport::Create(
2039 &client, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot, 2039 &client, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot,
2040 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 2040 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
2041 LocalSurfaceId local_surface_id(7u, base::UnguessableToken::Create()); 2041 LocalSurfaceId local_surface_id(7u, base::UnguessableToken::Create());
2042 SurfaceId surface_id(support->frame_sink_id(), local_surface_id); 2042 SurfaceId surface_id(support->frame_sink_id(), local_surface_id);
(...skipping 13 matching lines...) Expand all
2056 CompositorFrame returned_frame = aggregator_->Aggregate(surface_id); 2056 CompositorFrame returned_frame = aggregator_->Aggregate(surface_id);
2057 2057
2058 // Nothing should be available to be returned yet. 2058 // Nothing should be available to be returned yet.
2059 EXPECT_TRUE(client.returned_resources().empty()); 2059 EXPECT_TRUE(client.returned_resources().empty());
2060 2060
2061 SubmitCompositorFrameWithResources(NULL, 0, true, SurfaceId(), support.get(), 2061 SubmitCompositorFrameWithResources(NULL, 0, true, SurfaceId(), support.get(),
2062 surface_id); 2062 surface_id);
2063 ASSERT_EQ(1u, client.returned_resources().size()); 2063 ASSERT_EQ(1u, client.returned_resources().size());
2064 EXPECT_EQ(11u, client.returned_resources()[0].id); 2064 EXPECT_EQ(11u, client.returned_resources()[0].id);
2065 2065
2066 support->EvictFrame(); 2066 support->EvictCurrentSurface();
2067 } 2067 }
2068 2068
2069 TEST_F(SurfaceAggregatorWithResourcesTest, TwoSurfaces) { 2069 TEST_F(SurfaceAggregatorWithResourcesTest, TwoSurfaces) {
2070 FakeCompositorFrameSinkSupportClient client; 2070 FakeCompositorFrameSinkSupportClient client;
2071 std::unique_ptr<CompositorFrameSinkSupport> support1 = 2071 std::unique_ptr<CompositorFrameSinkSupport> support1 =
2072 CompositorFrameSinkSupport::Create( 2072 CompositorFrameSinkSupport::Create(
2073 &client, &manager_, FrameSinkId(1, 1), kChildIsRoot, 2073 &client, &manager_, FrameSinkId(1, 1), kChildIsRoot,
2074 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 2074 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
2075 std::unique_ptr<CompositorFrameSinkSupport> support2 = 2075 std::unique_ptr<CompositorFrameSinkSupport> support2 =
2076 CompositorFrameSinkSupport::Create( 2076 CompositorFrameSinkSupport::Create(
(...skipping 25 matching lines...) Expand all
2102 // surface1_id wasn't referenced, so its resources should be returned. 2102 // surface1_id wasn't referenced, so its resources should be returned.
2103 ASSERT_EQ(3u, client.returned_resources().size()); 2103 ASSERT_EQ(3u, client.returned_resources().size());
2104 ResourceId returned_ids[3]; 2104 ResourceId returned_ids[3];
2105 for (size_t i = 0; i < 3; ++i) { 2105 for (size_t i = 0; i < 3; ++i) {
2106 returned_ids[i] = client.returned_resources()[i].id; 2106 returned_ids[i] = client.returned_resources()[i].id;
2107 } 2107 }
2108 EXPECT_THAT(returned_ids, 2108 EXPECT_THAT(returned_ids,
2109 testing::WhenSorted(testing::ElementsAreArray(ids))); 2109 testing::WhenSorted(testing::ElementsAreArray(ids)));
2110 EXPECT_EQ(3u, resource_provider_->num_resources()); 2110 EXPECT_EQ(3u, resource_provider_->num_resources());
2111 2111
2112 support1->EvictFrame(); 2112 support1->EvictCurrentSurface();
2113 support2->EvictFrame(); 2113 support2->EvictCurrentSurface();
2114 } 2114 }
2115 2115
2116 // Ensure that aggregator completely ignores Surfaces that reference invalid 2116 // Ensure that aggregator completely ignores Surfaces that reference invalid
2117 // resources. 2117 // resources.
2118 TEST_F(SurfaceAggregatorWithResourcesTest, InvalidChildSurface) { 2118 TEST_F(SurfaceAggregatorWithResourcesTest, InvalidChildSurface) {
2119 std::unique_ptr<CompositorFrameSinkSupport> root_support = 2119 std::unique_ptr<CompositorFrameSinkSupport> root_support =
2120 CompositorFrameSinkSupport::Create( 2120 CompositorFrameSinkSupport::Create(
2121 nullptr, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot, 2121 nullptr, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot,
2122 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 2122 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
2123 std::unique_ptr<CompositorFrameSinkSupport> middle_support = 2123 std::unique_ptr<CompositorFrameSinkSupport> middle_support =
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2163 child_surface_id, middle_support.get(), 2163 child_surface_id, middle_support.get(),
2164 middle_surface_id); 2164 middle_surface_id);
2165 2165
2166 frame = aggregator_->Aggregate(root_surface_id); 2166 frame = aggregator_->Aggregate(root_surface_id);
2167 2167
2168 pass_list = &frame.render_pass_list; 2168 pass_list = &frame.render_pass_list;
2169 ASSERT_EQ(1u, pass_list->size()); 2169 ASSERT_EQ(1u, pass_list->size());
2170 EXPECT_EQ(3u, pass_list->back()->shared_quad_state_list.size()); 2170 EXPECT_EQ(3u, pass_list->back()->shared_quad_state_list.size());
2171 EXPECT_EQ(9u, pass_list->back()->quad_list.size()); 2171 EXPECT_EQ(9u, pass_list->back()->quad_list.size());
2172 2172
2173 root_support->EvictFrame(); 2173 root_support->EvictCurrentSurface();
2174 middle_support->EvictFrame(); 2174 middle_support->EvictCurrentSurface();
2175 child_support->EvictFrame(); 2175 child_support->EvictCurrentSurface();
2176 } 2176 }
2177 2177
2178 TEST_F(SurfaceAggregatorWithResourcesTest, SecureOutputTexture) { 2178 TEST_F(SurfaceAggregatorWithResourcesTest, SecureOutputTexture) {
2179 std::unique_ptr<CompositorFrameSinkSupport> support1 = 2179 std::unique_ptr<CompositorFrameSinkSupport> support1 =
2180 CompositorFrameSinkSupport::Create( 2180 CompositorFrameSinkSupport::Create(
2181 nullptr, &manager_, FrameSinkId(1, 1), kChildIsRoot, 2181 nullptr, &manager_, FrameSinkId(1, 1), kChildIsRoot,
2182 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); 2182 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints);
2183 std::unique_ptr<CompositorFrameSinkSupport> support2 = 2183 std::unique_ptr<CompositorFrameSinkSupport> support2 =
2184 CompositorFrameSinkSupport::Create( 2184 CompositorFrameSinkSupport::Create(
2185 nullptr, &manager_, FrameSinkId(2, 2), kChildIsRoot, 2185 nullptr, &manager_, FrameSinkId(2, 2), kChildIsRoot,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2234 render_pass->quad_list.front()->material); 2234 render_pass->quad_list.front()->material);
2235 2235
2236 aggregator_->set_output_is_secure(false); 2236 aggregator_->set_output_is_secure(false);
2237 2237
2238 frame = aggregator_->Aggregate(surface2_id); 2238 frame = aggregator_->Aggregate(surface2_id);
2239 render_pass = frame.render_pass_list.back().get(); 2239 render_pass = frame.render_pass_list.back().get();
2240 2240
2241 // Output is insecure, so texture should be drawn. 2241 // Output is insecure, so texture should be drawn.
2242 EXPECT_EQ(DrawQuad::SOLID_COLOR, render_pass->quad_list.back()->material); 2242 EXPECT_EQ(DrawQuad::SOLID_COLOR, render_pass->quad_list.back()->material);
2243 2243
2244 support1->EvictFrame(); 2244 support1->EvictCurrentSurface();
2245 support2->EvictFrame(); 2245 support2->EvictCurrentSurface();
2246 } 2246 }
2247 2247
2248 // Ensure that the render passes have correct color spaces. 2248 // Ensure that the render passes have correct color spaces.
2249 TEST_F(SurfaceAggregatorValidSurfaceTest, ColorSpaceTest) { 2249 TEST_F(SurfaceAggregatorValidSurfaceTest, ColorSpaceTest) {
2250 test::Quad quads[][2] = {{test::Quad::SolidColorQuad(SK_ColorWHITE), 2250 test::Quad quads[][2] = {{test::Quad::SolidColorQuad(SK_ColorWHITE),
2251 test::Quad::SolidColorQuad(SK_ColorLTGRAY)}, 2251 test::Quad::SolidColorQuad(SK_ColorLTGRAY)},
2252 {test::Quad::SolidColorQuad(SK_ColorGRAY), 2252 {test::Quad::SolidColorQuad(SK_ColorGRAY),
2253 test::Quad::SolidColorQuad(SK_ColorDKGRAY)}}; 2253 test::Quad::SolidColorQuad(SK_ColorDKGRAY)}};
2254 test::Pass passes[] = {test::Pass(quads[0], arraysize(quads[0]), 2), 2254 test::Pass passes[] = {test::Pass(quads[0], arraysize(quads[0]), 2),
2255 test::Pass(quads[1], arraysize(quads[1]), 1)}; 2255 test::Pass(quads[1], arraysize(quads[1]), 1)};
(...skipping 23 matching lines...) Expand all
2279 aggregated_frame = aggregator_.Aggregate(surface_id); 2279 aggregated_frame = aggregator_.Aggregate(surface_id);
2280 EXPECT_EQ(3u, aggregated_frame.render_pass_list.size()); 2280 EXPECT_EQ(3u, aggregated_frame.render_pass_list.size());
2281 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[0]->color_space); 2281 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[0]->color_space);
2282 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[1]->color_space); 2282 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[1]->color_space);
2283 EXPECT_EQ(color_space3, aggregated_frame.render_pass_list[2]->color_space); 2283 EXPECT_EQ(color_space3, aggregated_frame.render_pass_list[2]->color_space);
2284 } 2284 }
2285 2285
2286 } // namespace 2286 } // namespace
2287 } // namespace cc 2287 } // namespace cc
2288 2288
OLDNEW
« no previous file with comments | « cc/surfaces/surface_aggregator_perftest.cc ('k') | cc/surfaces/surface_hittest_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698