diff options
author | jbauman <jbauman@chromium.org> | 2015-03-12 19:51:15 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-13 02:51:43 +0000 |
commit | bd0e7ec118ef1b5799e58bd1035317e93b123e8e (patch) | |
tree | acbcaf8076bb80164e938853b950b0fe7b969992 /cc/surfaces/surface_aggregator_unittest.cc | |
parent | 6ad6ef3a1f7cd6b84cdefcfcce8880979186b4f3 (diff) | |
download | chromium_src-bd0e7ec118ef1b5799e58bd1035317e93b123e8e.zip chromium_src-bd0e7ec118ef1b5799e58bd1035317e93b123e8e.tar.gz chromium_src-bd0e7ec118ef1b5799e58bd1035317e93b123e8e.tar.bz2 |
Accumulate damage from SurfaceDrawQuads in non-root RenderPasses.
If a Surface in a non-root RenderPass has damage, then its damage must be transformed and accumulated into the root RenderPass.
BUG=465670,463860,464344
Review URL: https://codereview.chromium.org/993243002
Cr-Commit-Position: refs/heads/master@{#320441}
Diffstat (limited to 'cc/surfaces/surface_aggregator_unittest.cc')
-rw-r--r-- | cc/surfaces/surface_aggregator_unittest.cc | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/cc/surfaces/surface_aggregator_unittest.cc b/cc/surfaces/surface_aggregator_unittest.cc index cf54568..72aa3f1 100644 --- a/cc/surfaces/surface_aggregator_unittest.cc +++ b/cc/surfaces/surface_aggregator_unittest.cc @@ -1083,8 +1083,13 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { factory_.SubmitFrame(child_surface_id, child_frame.Pass(), SurfaceFactory::DrawCallback()); - test::Quad root_quads[] = {test::Quad::SurfaceQuad(child_surface_id, 1.f)}; - test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; + RenderPassId pass_id(5, 10); + test::Quad first_quads[] = {test::Quad::SurfaceQuad(child_surface_id, 1.f)}; + test::Quad root_quads[] = {test::Quad::RenderPassQuad(pass_id)}; + + test::Pass root_passes[] = { + test::Pass(first_quads, arraysize(first_quads), pass_id), + test::Pass(root_quads, arraysize(root_quads))}; RenderPassList root_pass_list; AddPasses(&root_pass_list, @@ -1096,6 +1101,7 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { ->shared_quad_state_list.front() ->content_to_target_transform.Translate(0, 10); root_pass_list.at(0)->damage_rect = gfx::Rect(5, 5, 10, 10); + root_pass_list.at(1)->damage_rect = gfx::Rect(5, 5, 100, 100); scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); root_pass_list.swap(root_frame_data->render_pass_list); @@ -1116,11 +1122,11 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { const RenderPassList& aggregated_pass_list = frame_data->render_pass_list; - ASSERT_EQ(1u, aggregated_pass_list.size()); + ASSERT_EQ(2u, aggregated_pass_list.size()); // Damage rect for first aggregation should contain entire root surface. EXPECT_TRUE( - aggregated_pass_list[0]->damage_rect.Contains(gfx::Rect(SurfaceSize()))); + aggregated_pass_list[1]->damage_rect.Contains(gfx::Rect(SurfaceSize()))); { AddPasses(&child_pass_list, @@ -1154,12 +1160,12 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { const RenderPassList& aggregated_pass_list = frame_data->render_pass_list; - ASSERT_EQ(1u, aggregated_pass_list.size()); + ASSERT_EQ(2u, aggregated_pass_list.size()); // Outer surface didn't change, so transformed inner damage rect should be // used. EXPECT_EQ(gfx::Rect(10, 20, 10, 10).ToString(), - aggregated_pass_list[0]->damage_rect.ToString()); + aggregated_pass_list[1]->damage_rect.ToString()); } { @@ -1216,11 +1222,11 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { const RenderPassList& aggregated_pass_list = frame_data->render_pass_list; - ASSERT_EQ(1u, aggregated_pass_list.size()); + ASSERT_EQ(2u, aggregated_pass_list.size()); // The root surface was enqueued without being aggregated once, so it should // be treated as completely damaged. - EXPECT_TRUE(aggregated_pass_list[0]->damage_rect.Contains( + EXPECT_TRUE(aggregated_pass_list[1]->damage_rect.Contains( gfx::Rect(SurfaceSize()))); } |