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

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

Issue 465673003: Add callback when queueing frame on Surface to create backpressure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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
« no previous file with comments | « cc/surfaces/surface.cc ('k') | cc/surfaces/surface_factory.h » ('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/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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 SurfaceId surface_id) { 111 SurfaceId surface_id) {
112 RenderPassList pass_list; 112 RenderPassList pass_list;
113 AddPasses(&pass_list, gfx::Rect(SurfaceSize()), passes, pass_count); 113 AddPasses(&pass_list, gfx::Rect(SurfaceSize()), passes, pass_count);
114 114
115 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); 115 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
116 pass_list.swap(frame_data->render_pass_list); 116 pass_list.swap(frame_data->render_pass_list);
117 117
118 scoped_ptr<CompositorFrame> frame(new CompositorFrame); 118 scoped_ptr<CompositorFrame> frame(new CompositorFrame);
119 frame->delegated_frame_data = frame_data.Pass(); 119 frame->delegated_frame_data = frame_data.Pass();
120 120
121 factory_.SubmitFrame(surface_id, frame.Pass()); 121 factory_.SubmitFrame(surface_id, frame.Pass(), base::Closure());
122 } 122 }
123 123
124 void QueuePassAsFrame(scoped_ptr<RenderPass> pass, SurfaceId surface_id) { 124 void QueuePassAsFrame(scoped_ptr<RenderPass> pass, SurfaceId surface_id) {
125 scoped_ptr<DelegatedFrameData> delegated_frame_data(new DelegatedFrameData); 125 scoped_ptr<DelegatedFrameData> delegated_frame_data(new DelegatedFrameData);
126 delegated_frame_data->render_pass_list.push_back(pass.Pass()); 126 delegated_frame_data->render_pass_list.push_back(pass.Pass());
127 127
128 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); 128 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame);
129 child_frame->delegated_frame_data = delegated_frame_data.Pass(); 129 child_frame->delegated_frame_data = delegated_frame_data.Pass();
130 130
131 factory_.SubmitFrame(surface_id, child_frame.Pass()); 131 factory_.SubmitFrame(surface_id, child_frame.Pass(), base::Closure());
132 } 132 }
133 133
134 protected: 134 protected:
135 SurfaceId root_surface_id_; 135 SurfaceId root_surface_id_;
136 SurfaceIdAllocator allocator_; 136 SurfaceIdAllocator allocator_;
137 }; 137 };
138 138
139 // Tests that a very simple frame containing only two solid color quads makes it 139 // Tests that a very simple frame containing only two solid color quads makes it
140 // through the aggregator correctly. 140 // through the aggregator correctly.
141 TEST_F(SurfaceAggregatorValidSurfaceTest, SimpleFrame) { 141 TEST_F(SurfaceAggregatorValidSurfaceTest, SimpleFrame) {
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 child_root_pass_sqs->content_to_target_transform.Translate(8, 0); 694 child_root_pass_sqs->content_to_target_transform.Translate(8, 0);
695 child_root_pass_sqs->is_clipped = true; 695 child_root_pass_sqs->is_clipped = true;
696 child_root_pass_sqs->clip_rect = gfx::Rect(0, 0, 5, 5); 696 child_root_pass_sqs->clip_rect = gfx::Rect(0, 0, 5, 5);
697 697
698 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData); 698 scoped_ptr<DelegatedFrameData> child_frame_data(new DelegatedFrameData);
699 child_pass_list.swap(child_frame_data->render_pass_list); 699 child_pass_list.swap(child_frame_data->render_pass_list);
700 700
701 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); 701 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame);
702 child_frame->delegated_frame_data = child_frame_data.Pass(); 702 child_frame->delegated_frame_data = child_frame_data.Pass();
703 703
704 factory_.SubmitFrame(child_surface_id, child_frame.Pass()); 704 factory_.SubmitFrame(child_surface_id, child_frame.Pass(), base::Closure());
705 705
706 test::Quad root_quads[] = {test::Quad::SolidColorQuad(1), 706 test::Quad root_quads[] = {test::Quad::SolidColorQuad(1),
707 test::Quad::SurfaceQuad(child_surface_id)}; 707 test::Quad::SurfaceQuad(child_surface_id)};
708 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; 708 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))};
709 709
710 RenderPassList root_pass_list; 710 RenderPassList root_pass_list;
711 AddPasses(&root_pass_list, 711 AddPasses(&root_pass_list,
712 gfx::Rect(SurfaceSize()), 712 gfx::Rect(SurfaceSize()),
713 root_passes, 713 root_passes,
714 arraysize(root_passes)); 714 arraysize(root_passes));
715 715
716 root_pass_list.at(0) 716 root_pass_list.at(0)
717 ->shared_quad_state_list[0] 717 ->shared_quad_state_list[0]
718 ->content_to_target_transform.Translate(0, 7); 718 ->content_to_target_transform.Translate(0, 7);
719 root_pass_list.at(0) 719 root_pass_list.at(0)
720 ->shared_quad_state_list[1] 720 ->shared_quad_state_list[1]
721 ->content_to_target_transform.Translate(0, 10); 721 ->content_to_target_transform.Translate(0, 10);
722 722
723 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData); 723 scoped_ptr<DelegatedFrameData> root_frame_data(new DelegatedFrameData);
724 root_pass_list.swap(root_frame_data->render_pass_list); 724 root_pass_list.swap(root_frame_data->render_pass_list);
725 725
726 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame); 726 scoped_ptr<CompositorFrame> root_frame(new CompositorFrame);
727 root_frame->delegated_frame_data = root_frame_data.Pass(); 727 root_frame->delegated_frame_data = root_frame_data.Pass();
728 728
729 factory_.SubmitFrame(root_surface_id_, root_frame.Pass()); 729 factory_.SubmitFrame(root_surface_id_, root_frame.Pass(), base::Closure());
730 730
731 std::set<SurfaceId> surface_set; 731 std::set<SurfaceId> surface_set;
732 scoped_ptr<CompositorFrame> aggregated_frame = 732 scoped_ptr<CompositorFrame> aggregated_frame =
733 aggregator_.Aggregate(root_surface_id_, &surface_set); 733 aggregator_.Aggregate(root_surface_id_, &surface_set);
734 734
735 ASSERT_TRUE(aggregated_frame); 735 ASSERT_TRUE(aggregated_frame);
736 ASSERT_TRUE(aggregated_frame->delegated_frame_data); 736 ASSERT_TRUE(aggregated_frame->delegated_frame_data);
737 737
738 DelegatedFrameData* frame_data = aggregated_frame->delegated_frame_data.get(); 738 DelegatedFrameData* frame_data = aggregated_frame->delegated_frame_data.get();
739 739
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 uv_bottom_right, 881 uv_bottom_right,
882 background_color, 882 background_color,
883 vertex_opacity, 883 vertex_opacity,
884 flipped); 884 flipped);
885 885
886 quad->shared_quad_state = sqs; 886 quad->shared_quad_state = sqs;
887 } 887 }
888 frame_data->render_pass_list.push_back(pass.Pass()); 888 frame_data->render_pass_list.push_back(pass.Pass());
889 scoped_ptr<CompositorFrame> frame(new CompositorFrame); 889 scoped_ptr<CompositorFrame> frame(new CompositorFrame);
890 frame->delegated_frame_data = frame_data.Pass(); 890 frame->delegated_frame_data = frame_data.Pass();
891 factory->SubmitFrame(surface_id, frame.Pass()); 891 factory->SubmitFrame(surface_id, frame.Pass(), base::Closure());
892 } 892 }
893 893
894 TEST_F(SurfaceAggregatorWithResourcesTest, TakeResourcesOneSurface) { 894 TEST_F(SurfaceAggregatorWithResourcesTest, TakeResourcesOneSurface) {
895 ResourceTrackingSurfaceFactoryClient client; 895 ResourceTrackingSurfaceFactoryClient client;
896 SurfaceFactory factory(&manager_, &client); 896 SurfaceFactory factory(&manager_, &client);
897 SurfaceId surface_id(7u); 897 SurfaceId surface_id(7u);
898 factory.Create(surface_id, SurfaceSize()); 898 factory.Create(surface_id, SurfaceSize());
899 899
900 ResourceProvider::ResourceId ids[] = {11, 12, 13}; 900 ResourceProvider::ResourceId ids[] = {11, 12, 13};
901 SubmitFrameWithResources(ids, arraysize(ids), &factory, surface_id); 901 SubmitFrameWithResources(ids, arraysize(ids), &factory, surface_id);
(...skipping 16 matching lines...) Expand all
918 returned_ids[i] = client.returned_resources()[i].id; 918 returned_ids[i] = client.returned_resources()[i].id;
919 } 919 }
920 EXPECT_THAT(returned_ids, 920 EXPECT_THAT(returned_ids,
921 testing::WhenSorted(testing::ElementsAreArray(ids))); 921 testing::WhenSorted(testing::ElementsAreArray(ids)));
922 factory.Destroy(surface_id); 922 factory.Destroy(surface_id);
923 } 923 }
924 924
925 } // namespace 925 } // namespace
926 } // namespace cc 926 } // namespace cc
927 927
OLDNEW
« no previous file with comments | « cc/surfaces/surface.cc ('k') | cc/surfaces/surface_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698