OLD | NEW |
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 881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 | 892 |
893 RenderPassId pass_id(1, 1); | 893 RenderPassId pass_id(1, 1); |
894 LocalFrameId grandchild_local_frame_id = allocator_.GenerateId(); | 894 LocalFrameId grandchild_local_frame_id = allocator_.GenerateId(); |
895 SurfaceId grandchild_surface_id(factory_.frame_sink_id(), | 895 SurfaceId grandchild_surface_id(factory_.frame_sink_id(), |
896 grandchild_local_frame_id); | 896 grandchild_local_frame_id); |
897 factory_.Create(grandchild_local_frame_id); | 897 factory_.Create(grandchild_local_frame_id); |
898 std::unique_ptr<RenderPass> grandchild_pass = RenderPass::Create(); | 898 std::unique_ptr<RenderPass> grandchild_pass = RenderPass::Create(); |
899 gfx::Rect output_rect(SurfaceSize()); | 899 gfx::Rect output_rect(SurfaceSize()); |
900 gfx::Rect damage_rect(SurfaceSize()); | 900 gfx::Rect damage_rect(SurfaceSize()); |
901 gfx::Transform transform_to_root_target; | 901 gfx::Transform transform_to_root_target; |
902 grandchild_pass->SetNew( | 902 grandchild_pass->SetNew(pass_id, output_rect, damage_rect, |
903 pass_id, output_rect, damage_rect, transform_to_root_target); | 903 transform_to_root_target, FilterOperations(), |
| 904 FilterOperations()); |
904 AddSolidColorQuadWithBlendMode( | 905 AddSolidColorQuadWithBlendMode( |
905 SurfaceSize(), grandchild_pass.get(), blend_modes[2]); | 906 SurfaceSize(), grandchild_pass.get(), blend_modes[2]); |
906 QueuePassAsFrame(std::move(grandchild_pass), grandchild_local_frame_id); | 907 QueuePassAsFrame(std::move(grandchild_pass), grandchild_local_frame_id); |
907 | 908 |
908 LocalFrameId child_one_local_frame_id = allocator_.GenerateId(); | 909 LocalFrameId child_one_local_frame_id = allocator_.GenerateId(); |
909 SurfaceId child_one_surface_id(factory_.frame_sink_id(), | 910 SurfaceId child_one_surface_id(factory_.frame_sink_id(), |
910 child_one_local_frame_id); | 911 child_one_local_frame_id); |
911 factory_.Create(child_one_local_frame_id); | 912 factory_.Create(child_one_local_frame_id); |
912 | 913 |
913 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create(); | 914 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create(); |
914 child_one_pass->SetNew( | 915 child_one_pass->SetNew(pass_id, output_rect, damage_rect, |
915 pass_id, output_rect, damage_rect, transform_to_root_target); | 916 transform_to_root_target, FilterOperations(), |
| 917 FilterOperations()); |
916 AddSolidColorQuadWithBlendMode( | 918 AddSolidColorQuadWithBlendMode( |
917 SurfaceSize(), child_one_pass.get(), blend_modes[1]); | 919 SurfaceSize(), child_one_pass.get(), blend_modes[1]); |
918 SurfaceDrawQuad* grandchild_surface_quad = | 920 SurfaceDrawQuad* grandchild_surface_quad = |
919 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 921 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
920 grandchild_surface_quad->SetNew(child_one_pass->shared_quad_state_list.back(), | 922 grandchild_surface_quad->SetNew(child_one_pass->shared_quad_state_list.back(), |
921 gfx::Rect(SurfaceSize()), | 923 gfx::Rect(SurfaceSize()), |
922 gfx::Rect(SurfaceSize()), | 924 gfx::Rect(SurfaceSize()), |
923 grandchild_surface_id); | 925 grandchild_surface_id); |
924 AddSolidColorQuadWithBlendMode( | 926 AddSolidColorQuadWithBlendMode( |
925 SurfaceSize(), child_one_pass.get(), blend_modes[3]); | 927 SurfaceSize(), child_one_pass.get(), blend_modes[3]); |
926 QueuePassAsFrame(std::move(child_one_pass), child_one_local_frame_id); | 928 QueuePassAsFrame(std::move(child_one_pass), child_one_local_frame_id); |
927 | 929 |
928 LocalFrameId child_two_local_frame_id = allocator_.GenerateId(); | 930 LocalFrameId child_two_local_frame_id = allocator_.GenerateId(); |
929 SurfaceId child_two_surface_id(factory_.frame_sink_id(), | 931 SurfaceId child_two_surface_id(factory_.frame_sink_id(), |
930 child_two_local_frame_id); | 932 child_two_local_frame_id); |
931 factory_.Create(child_two_local_frame_id); | 933 factory_.Create(child_two_local_frame_id); |
932 | 934 |
933 std::unique_ptr<RenderPass> child_two_pass = RenderPass::Create(); | 935 std::unique_ptr<RenderPass> child_two_pass = RenderPass::Create(); |
934 child_two_pass->SetNew( | 936 child_two_pass->SetNew(pass_id, output_rect, damage_rect, |
935 pass_id, output_rect, damage_rect, transform_to_root_target); | 937 transform_to_root_target, FilterOperations(), |
| 938 FilterOperations()); |
936 AddSolidColorQuadWithBlendMode( | 939 AddSolidColorQuadWithBlendMode( |
937 SurfaceSize(), child_two_pass.get(), blend_modes[5]); | 940 SurfaceSize(), child_two_pass.get(), blend_modes[5]); |
938 QueuePassAsFrame(std::move(child_two_pass), child_two_local_frame_id); | 941 QueuePassAsFrame(std::move(child_two_pass), child_two_local_frame_id); |
939 | 942 |
940 std::unique_ptr<RenderPass> root_pass = RenderPass::Create(); | 943 std::unique_ptr<RenderPass> root_pass = RenderPass::Create(); |
941 root_pass->SetNew( | 944 root_pass->SetNew(pass_id, output_rect, damage_rect, transform_to_root_target, |
942 pass_id, output_rect, damage_rect, transform_to_root_target); | 945 FilterOperations(), FilterOperations()); |
943 | 946 |
944 AddSolidColorQuadWithBlendMode( | 947 AddSolidColorQuadWithBlendMode( |
945 SurfaceSize(), root_pass.get(), blend_modes[0]); | 948 SurfaceSize(), root_pass.get(), blend_modes[0]); |
946 SurfaceDrawQuad* child_one_surface_quad = | 949 SurfaceDrawQuad* child_one_surface_quad = |
947 root_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 950 root_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
948 child_one_surface_quad->SetNew(root_pass->shared_quad_state_list.back(), | 951 child_one_surface_quad->SetNew(root_pass->shared_quad_state_list.back(), |
949 gfx::Rect(SurfaceSize()), | 952 gfx::Rect(SurfaceSize()), |
950 gfx::Rect(SurfaceSize()), | 953 gfx::Rect(SurfaceSize()), |
951 child_one_surface_id); | 954 child_one_surface_id); |
952 AddSolidColorQuadWithBlendMode( | 955 AddSolidColorQuadWithBlendMode( |
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1623 test::Pass(root_quads2, arraysize(root_quads2), root_pass_ids[1])}; | 1626 test::Pass(root_quads2, arraysize(root_quads2), root_pass_ids[1])}; |
1624 | 1627 |
1625 RenderPassList root_pass_list; | 1628 RenderPassList root_pass_list; |
1626 AddPasses(&root_pass_list, gfx::Rect(SurfaceSize()), root_passes, | 1629 AddPasses(&root_pass_list, gfx::Rect(SurfaceSize()), root_passes, |
1627 arraysize(root_passes)); | 1630 arraysize(root_passes)); |
1628 | 1631 |
1629 RenderPass* pass = root_pass_list[0].get(); | 1632 RenderPass* pass = root_pass_list[0].get(); |
1630 pass->shared_quad_state_list.front()->quad_to_target_transform.Translate( | 1633 pass->shared_quad_state_list.front()->quad_to_target_transform.Translate( |
1631 10, 10); | 1634 10, 10); |
1632 RenderPass* root_pass = root_pass_list[1].get(); | 1635 RenderPass* root_pass = root_pass_list[1].get(); |
1633 RenderPassDrawQuad* quad = | 1636 pass->filters.Append(FilterOperation::CreateBlurFilter(2)); |
1634 static_cast<RenderPassDrawQuad*>(root_pass->quad_list.front()); | |
1635 quad->filters.Append(FilterOperation::CreateBlurFilter(2)); | |
1636 root_pass->damage_rect = gfx::Rect(10, 10, 2, 2); | 1637 root_pass->damage_rect = gfx::Rect(10, 10, 2, 2); |
1637 SubmitPassListAsFrame(&factory_, root_local_frame_id_, &root_pass_list); | 1638 SubmitPassListAsFrame(&factory_, root_local_frame_id_, &root_pass_list); |
1638 } | 1639 } |
1639 | 1640 |
1640 { | 1641 { |
1641 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); | 1642 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); |
1642 | 1643 |
1643 const RenderPassList& aggregated_pass_list = | 1644 const RenderPassList& aggregated_pass_list = |
1644 aggregated_frame.render_pass_list; | 1645 aggregated_frame.render_pass_list; |
1645 | 1646 |
(...skipping 20 matching lines...) Expand all Loading... |
1666 test::Quad root_quads2[] = {test::Quad::RenderPassQuad(root_pass_ids[0]), | 1667 test::Quad root_quads2[] = {test::Quad::RenderPassQuad(root_pass_ids[0]), |
1667 test::Quad::SurfaceQuad(child_surface_id, 1.f)}; | 1668 test::Quad::SurfaceQuad(child_surface_id, 1.f)}; |
1668 test::Pass root_passes[] = { | 1669 test::Pass root_passes[] = { |
1669 test::Pass(root_quads1, arraysize(root_quads1), root_pass_ids[0]), | 1670 test::Pass(root_quads1, arraysize(root_quads1), root_pass_ids[0]), |
1670 test::Pass(root_quads2, arraysize(root_quads2), root_pass_ids[1])}; | 1671 test::Pass(root_quads2, arraysize(root_quads2), root_pass_ids[1])}; |
1671 | 1672 |
1672 RenderPassList root_pass_list; | 1673 RenderPassList root_pass_list; |
1673 AddPasses(&root_pass_list, gfx::Rect(SurfaceSize()), root_passes, | 1674 AddPasses(&root_pass_list, gfx::Rect(SurfaceSize()), root_passes, |
1674 arraysize(root_passes)); | 1675 arraysize(root_passes)); |
1675 | 1676 |
| 1677 RenderPass* pass = root_pass_list[0].get(); |
1676 RenderPass* root_pass = root_pass_list[1].get(); | 1678 RenderPass* root_pass = root_pass_list[1].get(); |
1677 root_pass->shared_quad_state_list.ElementAt(1) | 1679 root_pass->shared_quad_state_list.ElementAt(1) |
1678 ->quad_to_target_transform.Translate(10, 10); | 1680 ->quad_to_target_transform.Translate(10, 10); |
1679 RenderPassDrawQuad* quad = | 1681 pass->background_filters.Append(FilterOperation::CreateBlurFilter(2)); |
1680 static_cast<RenderPassDrawQuad*>(root_pass->quad_list.front()); | |
1681 quad->background_filters.Append(FilterOperation::CreateBlurFilter(2)); | |
1682 root_pass->damage_rect = gfx::Rect(10, 10, 2, 2); | 1682 root_pass->damage_rect = gfx::Rect(10, 10, 2, 2); |
1683 SubmitPassListAsFrame(&factory_, root_local_frame_id_, &root_pass_list); | 1683 SubmitPassListAsFrame(&factory_, root_local_frame_id_, &root_pass_list); |
1684 } | 1684 } |
1685 | 1685 |
1686 { | 1686 { |
1687 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); | 1687 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); |
1688 | 1688 |
1689 const RenderPassList& aggregated_pass_list = | 1689 const RenderPassList& aggregated_pass_list = |
1690 aggregated_frame.render_pass_list; | 1690 aggregated_frame.render_pass_list; |
1691 | 1691 |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2013 // Output is insecure, so texture should be drawn. | 2013 // Output is insecure, so texture should be drawn. |
2014 EXPECT_EQ(DrawQuad::SOLID_COLOR, render_pass->quad_list.back()->material); | 2014 EXPECT_EQ(DrawQuad::SOLID_COLOR, render_pass->quad_list.back()->material); |
2015 | 2015 |
2016 factory.Destroy(local_frame1_id); | 2016 factory.Destroy(local_frame1_id); |
2017 factory.Destroy(local_frame2_id); | 2017 factory.Destroy(local_frame2_id); |
2018 } | 2018 } |
2019 | 2019 |
2020 } // namespace | 2020 } // namespace |
2021 } // namespace cc | 2021 } // namespace cc |
2022 | 2022 |
OLD | NEW |