Chromium Code Reviews| 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/output/compositor_frame.h" | 5 #include "cc/output/compositor_frame.h" |
| 6 #include "cc/output/delegated_frame_data.h" | 6 #include "cc/output/delegated_frame_data.h" |
| 7 #include "cc/quads/render_pass.h" | 7 #include "cc/quads/render_pass.h" |
| 8 #include "cc/quads/render_pass_draw_quad.h" | 8 #include "cc/quads/render_pass_draw_quad.h" |
| 9 #include "cc/quads/solid_color_draw_quad.h" | 9 #include "cc/quads/solid_color_draw_quad.h" |
| 10 #include "cc/quads/surface_draw_quad.h" | 10 #include "cc/quads/surface_draw_quad.h" |
| (...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 738 | 738 |
| 739 RenderPassList child_pass_list; | 739 RenderPassList child_pass_list; |
| 740 AddPasses(&child_pass_list, | 740 AddPasses(&child_pass_list, |
| 741 gfx::Rect(SurfaceSize()), | 741 gfx::Rect(SurfaceSize()), |
| 742 child_passes, | 742 child_passes, |
| 743 arraysize(child_passes)); | 743 arraysize(child_passes)); |
| 744 | 744 |
| 745 RenderPass* child_nonroot_pass = child_pass_list.at(0u); | 745 RenderPass* child_nonroot_pass = child_pass_list.at(0u); |
| 746 child_nonroot_pass->transform_to_root_target.Translate(8, 0); | 746 child_nonroot_pass->transform_to_root_target.Translate(8, 0); |
| 747 SharedQuadState* child_nonroot_pass_sqs = | 747 SharedQuadState* child_nonroot_pass_sqs = |
| 748 child_nonroot_pass->shared_quad_state_list[0]; | 748 child_nonroot_pass->shared_quad_state_list.front(); |
| 749 child_nonroot_pass_sqs->content_to_target_transform.Translate(5, 0); | 749 child_nonroot_pass_sqs->content_to_target_transform.Translate(5, 0); |
| 750 | 750 |
| 751 RenderPass* child_root_pass = child_pass_list.at(1u); | 751 RenderPass* child_root_pass = child_pass_list.at(1u); |
| 752 SharedQuadState* child_root_pass_sqs = | 752 SharedQuadState* child_root_pass_sqs = |
| 753 child_root_pass->shared_quad_state_list[0]; | 753 child_root_pass->shared_quad_state_list.front(); |
| 754 child_root_pass_sqs->content_to_target_transform.Translate(8, 0); | 754 child_root_pass_sqs->content_to_target_transform.Translate(8, 0); |
| 755 child_root_pass_sqs->is_clipped = true; | 755 child_root_pass_sqs->is_clipped = true; |
| 756 child_root_pass_sqs->clip_rect = gfx::Rect(0, 0, 5, 5); | 756 child_root_pass_sqs->clip_rect = gfx::Rect(0, 0, 5, 5); |
| 757 | 757 |
| 758 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData); | 758 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData); |
| 759 child_pass_list.swap(child_frame_data->render_pass_list); | 759 child_pass_list.swap(child_frame_data->render_pass_list); |
| 760 | 760 |
| 761 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); | 761 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); |
| 762 child_frame->delegated_frame_data = child_frame_data.Pass(); | 762 child_frame->delegated_frame_data = child_frame_data.Pass(); |
| 763 | 763 |
| 764 factory_.SubmitFrame(child_surface_id, child_frame.Pass(), base::Closure()); | 764 factory_.SubmitFrame(child_surface_id, child_frame.Pass(), base::Closure()); |
| 765 | 765 |
| 766 test::Quad root_quads[] = {test::Quad::SolidColorQuad(1), | 766 test::Quad root_quads[] = {test::Quad::SolidColorQuad(1), |
| 767 test::Quad::SurfaceQuad(child_surface_id)}; | 767 test::Quad::SurfaceQuad(child_surface_id)}; |
| 768 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; | 768 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; |
| 769 | 769 |
| 770 RenderPassList root_pass_list; | 770 RenderPassList root_pass_list; |
| 771 AddPasses(&root_pass_list, | 771 AddPasses(&root_pass_list, |
| 772 gfx::Rect(SurfaceSize()), | 772 gfx::Rect(SurfaceSize()), |
| 773 root_passes, | 773 root_passes, |
| 774 arraysize(root_passes)); | 774 arraysize(root_passes)); |
| 775 | 775 |
| 776 root_pass_list.at(0) | 776 root_pass_list.at(0) |
| 777 ->shared_quad_state_list[0] | 777 ->shared_quad_state_list.front() |
| 778 ->content_to_target_transform.Translate(0, 7); | 778 ->content_to_target_transform.Translate(0, 7); |
| 779 root_pass_list.at(0) | 779 root_pass_list.at(0) |
| 780 ->shared_quad_state_list[1] | 780 ->shared_quad_state_list.ElementAt(1) |
| 781 ->content_to_target_transform.Translate(0, 10); | 781 ->content_to_target_transform.Translate(0, 10); |
| 782 | 782 |
| 783 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); | 783 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); |
| 784 root_pass_list.swap(root_frame_data->render_pass_list); | 784 root_pass_list.swap(root_frame_data->render_pass_list); |
| 785 | 785 |
| 786 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); | 786 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); |
| 787 root_frame->delegated_frame_data = root_frame_data.Pass(); | 787 root_frame->delegated_frame_data = root_frame_data.Pass(); |
| 788 | 788 |
| 789 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); | 789 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); |
| 790 | 790 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 841 size_t i = 0; | 841 size_t i = 0; |
| 842 for (QuadList::Iterator iter = aggregated_pass_list[1]->quad_list.begin(); | 842 for (QuadList::Iterator iter = aggregated_pass_list[1]->quad_list.begin(); |
| 843 iter != aggregated_pass_list[1]->quad_list.end(); | 843 iter != aggregated_pass_list[1]->quad_list.end(); |
| 844 ++iter) { | 844 ++iter) { |
| 845 EXPECT_EQ(expected_root_pass_quad_transforms[i].ToString(), | 845 EXPECT_EQ(expected_root_pass_quad_transforms[i].ToString(), |
| 846 iter->quadTransform().ToString()) | 846 iter->quadTransform().ToString()) |
| 847 << i; | 847 << i; |
| 848 i++; | 848 i++; |
| 849 } | 849 } |
| 850 | 850 |
| 851 EXPECT_EQ(true, | 851 SharedQuadStateList::Iterator sqs_iter = |
| 852 aggregated_pass_list[1]->shared_quad_state_list[1]->is_clipped); | 852 aggregated_pass_list[1]->shared_quad_state_list.begin(); |
| 853 ++sqs_iter; | |
|
danakj
2014/09/26 20:40:55
ElementAt
weiliangc
2014/10/01 23:02:00
Done.
| |
| 854 EXPECT_EQ(true, sqs_iter->is_clipped); | |
| 853 | 855 |
| 854 // The second quad in the root pass is aggregated from the child, so its | 856 // The second quad in the root pass is aggregated from the child, so its |
| 855 // clip rect must be transformed by the child's translation. | 857 // clip rect must be transformed by the child's translation. |
| 856 EXPECT_EQ( | 858 EXPECT_EQ(gfx::Rect(0, 10, 5, 5).ToString(), sqs_iter->clip_rect.ToString()); |
|
danakj
2014/09/26 20:40:55
ElementAt
weiliangc
2014/10/01 23:02:00
Done.
| |
| 857 gfx::Rect(0, 10, 5, 5).ToString(), | |
| 858 aggregated_pass_list[1]->shared_quad_state_list[1]->clip_rect.ToString()); | |
| 859 | 859 |
| 860 factory_.Destroy(child_surface_id); | 860 factory_.Destroy(child_surface_id); |
| 861 } | 861 } |
| 862 | 862 |
| 863 // Tests that damage rects are aggregated correctly when surfaces change. | 863 // Tests that damage rects are aggregated correctly when surfaces change. |
| 864 TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { | 864 TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { |
| 865 SurfaceId child_surface_id = allocator_.GenerateId(); | 865 SurfaceId child_surface_id = allocator_.GenerateId(); |
| 866 factory_.Create(child_surface_id, SurfaceSize()); | 866 factory_.Create(child_surface_id, SurfaceSize()); |
| 867 RenderPassId child_pass_id = RenderPassId(1, 1); | 867 RenderPassId child_pass_id = RenderPassId(1, 1); |
| 868 test::Quad child_quads[] = {test::Quad::RenderPassQuad(child_pass_id)}; | 868 test::Quad child_quads[] = {test::Quad::RenderPassQuad(child_pass_id)}; |
| 869 test::Pass child_passes[] = { | 869 test::Pass child_passes[] = { |
| 870 test::Pass(child_quads, arraysize(child_quads), child_pass_id)}; | 870 test::Pass(child_quads, arraysize(child_quads), child_pass_id)}; |
| 871 | 871 |
| 872 RenderPassList child_pass_list; | 872 RenderPassList child_pass_list; |
| 873 AddPasses(&child_pass_list, | 873 AddPasses(&child_pass_list, |
| 874 gfx::Rect(SurfaceSize()), | 874 gfx::Rect(SurfaceSize()), |
| 875 child_passes, | 875 child_passes, |
| 876 arraysize(child_passes)); | 876 arraysize(child_passes)); |
| 877 | 877 |
| 878 RenderPass* child_root_pass = child_pass_list.at(0u); | 878 RenderPass* child_root_pass = child_pass_list.at(0u); |
| 879 SharedQuadState* child_root_pass_sqs = | 879 SharedQuadState* child_root_pass_sqs = |
| 880 child_root_pass->shared_quad_state_list[0]; | 880 child_root_pass->shared_quad_state_list.front(); |
| 881 child_root_pass_sqs->content_to_target_transform.Translate(8, 0); | 881 child_root_pass_sqs->content_to_target_transform.Translate(8, 0); |
| 882 | 882 |
| 883 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData); | 883 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData); |
| 884 child_pass_list.swap(child_frame_data->render_pass_list); | 884 child_pass_list.swap(child_frame_data->render_pass_list); |
| 885 | 885 |
| 886 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); | 886 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); |
| 887 child_frame->delegated_frame_data = child_frame_data.Pass(); | 887 child_frame->delegated_frame_data = child_frame_data.Pass(); |
| 888 | 888 |
| 889 factory_.SubmitFrame(child_surface_id, child_frame.Pass(), base::Closure()); | 889 factory_.SubmitFrame(child_surface_id, child_frame.Pass(), base::Closure()); |
| 890 | 890 |
| 891 test::Quad root_quads[] = {test::Quad::SurfaceQuad(child_surface_id)}; | 891 test::Quad root_quads[] = {test::Quad::SurfaceQuad(child_surface_id)}; |
| 892 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; | 892 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; |
| 893 | 893 |
| 894 RenderPassList root_pass_list; | 894 RenderPassList root_pass_list; |
| 895 AddPasses(&root_pass_list, | 895 AddPasses(&root_pass_list, |
| 896 gfx::Rect(SurfaceSize()), | 896 gfx::Rect(SurfaceSize()), |
| 897 root_passes, | 897 root_passes, |
| 898 arraysize(root_passes)); | 898 arraysize(root_passes)); |
| 899 | 899 |
| 900 root_pass_list.at(0) | 900 root_pass_list.at(0) |
| 901 ->shared_quad_state_list[0] | 901 ->shared_quad_state_list.front() |
| 902 ->content_to_target_transform.Translate(0, 10); | 902 ->content_to_target_transform.Translate(0, 10); |
| 903 root_pass_list.at(0)->damage_rect = gfx::Rect(5, 5, 10, 10); | 903 root_pass_list.at(0)->damage_rect = gfx::Rect(5, 5, 10, 10); |
| 904 | 904 |
| 905 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); | 905 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); |
| 906 root_pass_list.swap(root_frame_data->render_pass_list); | 906 root_pass_list.swap(root_frame_data->render_pass_list); |
| 907 | 907 |
| 908 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); | 908 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); |
| 909 root_frame->delegated_frame_data = root_frame_data.Pass(); | 909 root_frame->delegated_frame_data = root_frame_data.Pass(); |
| 910 | 910 |
| 911 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); | 911 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 927 aggregated_pass_list[0]->damage_rect.Contains(gfx::Rect(SurfaceSize()))); | 927 aggregated_pass_list[0]->damage_rect.Contains(gfx::Rect(SurfaceSize()))); |
| 928 | 928 |
| 929 { | 929 { |
| 930 AddPasses(&child_pass_list, | 930 AddPasses(&child_pass_list, |
| 931 gfx::Rect(SurfaceSize()), | 931 gfx::Rect(SurfaceSize()), |
| 932 child_passes, | 932 child_passes, |
| 933 arraysize(child_passes)); | 933 arraysize(child_passes)); |
| 934 | 934 |
| 935 RenderPass* child_root_pass = child_pass_list.at(0u); | 935 RenderPass* child_root_pass = child_pass_list.at(0u); |
| 936 SharedQuadState* child_root_pass_sqs = | 936 SharedQuadState* child_root_pass_sqs = |
| 937 child_root_pass->shared_quad_state_list[0]; | 937 child_root_pass->shared_quad_state_list.front(); |
| 938 child_root_pass_sqs->content_to_target_transform.Translate(8, 0); | 938 child_root_pass_sqs->content_to_target_transform.Translate(8, 0); |
| 939 child_root_pass->damage_rect = gfx::Rect(10, 10, 10, 10); | 939 child_root_pass->damage_rect = gfx::Rect(10, 10, 10, 10); |
| 940 | 940 |
| 941 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData); | 941 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData); |
| 942 child_pass_list.swap(child_frame_data->render_pass_list); | 942 child_pass_list.swap(child_frame_data->render_pass_list); |
| 943 | 943 |
| 944 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); | 944 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); |
| 945 child_frame->delegated_frame_data = child_frame_data.Pass(); | 945 child_frame->delegated_frame_data = child_frame_data.Pass(); |
| 946 | 946 |
| 947 factory_.SubmitFrame(child_surface_id, child_frame.Pass(), base::Closure()); | 947 factory_.SubmitFrame(child_surface_id, child_frame.Pass(), base::Closure()); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 966 } | 966 } |
| 967 | 967 |
| 968 { | 968 { |
| 969 RenderPassList root_pass_list; | 969 RenderPassList root_pass_list; |
| 970 AddPasses(&root_pass_list, | 970 AddPasses(&root_pass_list, |
| 971 gfx::Rect(SurfaceSize()), | 971 gfx::Rect(SurfaceSize()), |
| 972 root_passes, | 972 root_passes, |
| 973 arraysize(root_passes)); | 973 arraysize(root_passes)); |
| 974 | 974 |
| 975 root_pass_list.at(0) | 975 root_pass_list.at(0) |
| 976 ->shared_quad_state_list[0] | 976 ->shared_quad_state_list.front() |
| 977 ->content_to_target_transform.Translate(0, 10); | 977 ->content_to_target_transform.Translate(0, 10); |
| 978 root_pass_list.at(0)->damage_rect = gfx::Rect(0, 0, 1, 1); | 978 root_pass_list.at(0)->damage_rect = gfx::Rect(0, 0, 1, 1); |
| 979 | 979 |
| 980 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); | 980 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); |
| 981 root_pass_list.swap(root_frame_data->render_pass_list); | 981 root_pass_list.swap(root_frame_data->render_pass_list); |
| 982 | 982 |
| 983 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); | 983 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); |
| 984 root_frame->delegated_frame_data = root_frame_data.Pass(); | 984 root_frame->delegated_frame_data = root_frame_data.Pass(); |
| 985 | 985 |
| 986 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); | 986 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); |
| 987 } | 987 } |
| 988 | 988 |
| 989 { | 989 { |
| 990 RenderPassList root_pass_list; | 990 RenderPassList root_pass_list; |
| 991 AddPasses(&root_pass_list, | 991 AddPasses(&root_pass_list, |
| 992 gfx::Rect(SurfaceSize()), | 992 gfx::Rect(SurfaceSize()), |
| 993 root_passes, | 993 root_passes, |
| 994 arraysize(root_passes)); | 994 arraysize(root_passes)); |
| 995 | 995 |
| 996 root_pass_list.at(0) | 996 root_pass_list.at(0) |
| 997 ->shared_quad_state_list[0] | 997 ->shared_quad_state_list.front() |
| 998 ->content_to_target_transform.Translate(0, 10); | 998 ->content_to_target_transform.Translate(0, 10); |
| 999 root_pass_list.at(0)->damage_rect = gfx::Rect(1, 1, 1, 1); | 999 root_pass_list.at(0)->damage_rect = gfx::Rect(1, 1, 1, 1); |
| 1000 | 1000 |
| 1001 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); | 1001 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); |
| 1002 root_pass_list.swap(root_frame_data->render_pass_list); | 1002 root_pass_list.swap(root_frame_data->render_pass_list); |
| 1003 | 1003 |
| 1004 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); | 1004 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); |
| 1005 root_frame->delegated_frame_data = root_frame_data.Pass(); | 1005 root_frame->delegated_frame_data = root_frame_data.Pass(); |
| 1006 | 1006 |
| 1007 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); | 1007 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure()); |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1146 returned_ids[i] = client.returned_resources()[i].id; | 1146 returned_ids[i] = client.returned_resources()[i].id; |
| 1147 } | 1147 } |
| 1148 EXPECT_THAT(returned_ids, | 1148 EXPECT_THAT(returned_ids, |
| 1149 testing::WhenSorted(testing::ElementsAreArray(ids))); | 1149 testing::WhenSorted(testing::ElementsAreArray(ids))); |
| 1150 factory.Destroy(surface_id); | 1150 factory.Destroy(surface_id); |
| 1151 } | 1151 } |
| 1152 | 1152 |
| 1153 } // namespace | 1153 } // namespace |
| 1154 } // namespace cc | 1154 } // namespace cc |
| 1155 | 1155 |
| OLD | NEW |