| 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/quads/render_pass.h" | 6 #include "cc/quads/render_pass.h" |
| 7 #include "cc/quads/solid_color_draw_quad.h" | 7 #include "cc/quads/solid_color_draw_quad.h" |
| 8 #include "cc/quads/surface_draw_quad.h" | 8 #include "cc/quads/surface_draw_quad.h" |
| 9 #include "cc/surfaces/surface.h" | 9 #include "cc/surfaces/surface.h" |
| 10 #include "cc/surfaces/surface_aggregator.h" | 10 #include "cc/surfaces/surface_aggregator.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 color_quad->SetNew(pass->shared_quad_state_list.back(), | 77 color_quad->SetNew(pass->shared_quad_state_list.back(), |
| 78 rect, | 78 rect, |
| 79 rect, | 79 rect, |
| 80 SK_ColorGREEN, | 80 SK_ColorGREEN, |
| 81 force_anti_aliasing_off); | 81 force_anti_aliasing_off); |
| 82 | 82 |
| 83 | 83 |
| 84 CompositorFrame root_frame; | 84 CompositorFrame root_frame; |
| 85 root_frame.render_pass_list.push_back(std::move(pass)); | 85 root_frame.render_pass_list.push_back(std::move(pass)); |
| 86 | 86 |
| 87 LocalFrameId root_local_frame_id = allocator_.GenerateId(); | 87 LocalSurfaceId root_local_surface_id = allocator_.GenerateId(); |
| 88 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id); | 88 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_surface_id); |
| 89 factory_.SubmitCompositorFrame(root_local_frame_id, std::move(root_frame), | 89 factory_.SubmitCompositorFrame(root_local_surface_id, std::move(root_frame), |
| 90 SurfaceFactory::DrawCallback()); | 90 SurfaceFactory::DrawCallback()); |
| 91 | 91 |
| 92 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true); | 92 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true); |
| 93 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id); | 93 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id); |
| 94 | 94 |
| 95 bool discard_alpha = false; | 95 bool discard_alpha = false; |
| 96 ExactPixelComparator pixel_comparator(discard_alpha); | 96 ExactPixelComparator pixel_comparator(discard_alpha); |
| 97 RenderPassList* pass_list = &aggregated_frame.render_pass_list; | 97 RenderPassList* pass_list = &aggregated_frame.render_pass_list; |
| 98 EXPECT_TRUE(RunPixelTest(pass_list, | 98 EXPECT_TRUE(RunPixelTest(pass_list, |
| 99 base::FilePath(FILE_PATH_LITERAL("green.png")), | 99 base::FilePath(FILE_PATH_LITERAL("green.png")), |
| 100 pixel_comparator)); | 100 pixel_comparator)); |
| 101 } | 101 } |
| 102 | 102 |
| 103 // Draws a frame with simple surface embedding. | 103 // Draws a frame with simple surface embedding. |
| 104 TEST_F(SurfacesPixelTest, DrawSimpleAggregatedFrame) { | 104 TEST_F(SurfacesPixelTest, DrawSimpleAggregatedFrame) { |
| 105 gfx::Size child_size(200, 100); | 105 gfx::Size child_size(200, 100); |
| 106 SurfaceFactory child_factory(kArbitraryChildFrameSinkId, &manager_, &client_); | 106 SurfaceFactory child_factory(kArbitraryChildFrameSinkId, &manager_, &client_); |
| 107 LocalFrameId child_local_frame_id = allocator_.GenerateId(); | 107 LocalSurfaceId child_local_surface_id = allocator_.GenerateId(); |
| 108 SurfaceId child_surface_id(child_factory.frame_sink_id(), | 108 SurfaceId child_surface_id(child_factory.frame_sink_id(), |
| 109 child_local_frame_id); | 109 child_local_surface_id); |
| 110 LocalFrameId root_local_frame_id = allocator_.GenerateId(); | 110 LocalSurfaceId root_local_surface_id = allocator_.GenerateId(); |
| 111 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id); | 111 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_surface_id); |
| 112 | 112 |
| 113 { | 113 { |
| 114 gfx::Rect rect(device_viewport_size_); | 114 gfx::Rect rect(device_viewport_size_); |
| 115 int id = 1; | 115 int id = 1; |
| 116 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 116 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
| 117 pass->SetNew(id, rect, rect, gfx::Transform()); | 117 pass->SetNew(id, rect, rect, gfx::Transform()); |
| 118 | 118 |
| 119 CreateAndAppendTestSharedQuadState( | 119 CreateAndAppendTestSharedQuadState( |
| 120 pass.get(), gfx::Transform(), device_viewport_size_); | 120 pass.get(), gfx::Transform(), device_viewport_size_); |
| 121 | 121 |
| 122 SurfaceDrawQuad* surface_quad = | 122 SurfaceDrawQuad* surface_quad = |
| 123 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 123 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
| 124 surface_quad->SetNew(pass->shared_quad_state_list.back(), | 124 surface_quad->SetNew(pass->shared_quad_state_list.back(), |
| 125 gfx::Rect(child_size), | 125 gfx::Rect(child_size), |
| 126 gfx::Rect(child_size), | 126 gfx::Rect(child_size), |
| 127 child_surface_id); | 127 child_surface_id); |
| 128 | 128 |
| 129 SolidColorDrawQuad* color_quad = | 129 SolidColorDrawQuad* color_quad = |
| 130 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 130 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 131 bool force_anti_aliasing_off = false; | 131 bool force_anti_aliasing_off = false; |
| 132 color_quad->SetNew(pass->shared_quad_state_list.back(), | 132 color_quad->SetNew(pass->shared_quad_state_list.back(), |
| 133 rect, | 133 rect, |
| 134 rect, | 134 rect, |
| 135 SK_ColorYELLOW, | 135 SK_ColorYELLOW, |
| 136 force_anti_aliasing_off); | 136 force_anti_aliasing_off); |
| 137 | 137 |
| 138 CompositorFrame root_frame; | 138 CompositorFrame root_frame; |
| 139 root_frame.render_pass_list.push_back(std::move(pass)); | 139 root_frame.render_pass_list.push_back(std::move(pass)); |
| 140 | 140 |
| 141 factory_.SubmitCompositorFrame(root_local_frame_id, std::move(root_frame), | 141 factory_.SubmitCompositorFrame(root_local_surface_id, std::move(root_frame), |
| 142 SurfaceFactory::DrawCallback()); | 142 SurfaceFactory::DrawCallback()); |
| 143 } | 143 } |
| 144 | 144 |
| 145 { | 145 { |
| 146 gfx::Rect rect(child_size); | 146 gfx::Rect rect(child_size); |
| 147 int id = 1; | 147 int id = 1; |
| 148 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 148 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
| 149 pass->SetNew(id, rect, rect, gfx::Transform()); | 149 pass->SetNew(id, rect, rect, gfx::Transform()); |
| 150 | 150 |
| 151 CreateAndAppendTestSharedQuadState( | 151 CreateAndAppendTestSharedQuadState( |
| 152 pass.get(), gfx::Transform(), child_size); | 152 pass.get(), gfx::Transform(), child_size); |
| 153 | 153 |
| 154 SolidColorDrawQuad* color_quad = | 154 SolidColorDrawQuad* color_quad = |
| 155 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 155 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 156 bool force_anti_aliasing_off = false; | 156 bool force_anti_aliasing_off = false; |
| 157 color_quad->SetNew(pass->shared_quad_state_list.back(), | 157 color_quad->SetNew(pass->shared_quad_state_list.back(), |
| 158 rect, | 158 rect, |
| 159 rect, | 159 rect, |
| 160 SK_ColorBLUE, | 160 SK_ColorBLUE, |
| 161 force_anti_aliasing_off); | 161 force_anti_aliasing_off); |
| 162 | 162 |
| 163 CompositorFrame child_frame; | 163 CompositorFrame child_frame; |
| 164 child_frame.render_pass_list.push_back(std::move(pass)); | 164 child_frame.render_pass_list.push_back(std::move(pass)); |
| 165 | 165 |
| 166 child_factory.SubmitCompositorFrame(child_local_frame_id, | 166 child_factory.SubmitCompositorFrame(child_local_surface_id, |
| 167 std::move(child_frame), | 167 std::move(child_frame), |
| 168 SurfaceFactory::DrawCallback()); | 168 SurfaceFactory::DrawCallback()); |
| 169 } | 169 } |
| 170 | 170 |
| 171 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true); | 171 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true); |
| 172 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id); | 172 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id); |
| 173 | 173 |
| 174 bool discard_alpha = false; | 174 bool discard_alpha = false; |
| 175 ExactPixelComparator pixel_comparator(discard_alpha); | 175 ExactPixelComparator pixel_comparator(discard_alpha); |
| 176 RenderPassList* pass_list = &aggregated_frame.render_pass_list; | 176 RenderPassList* pass_list = &aggregated_frame.render_pass_list; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 187 gfx::Size quad_size(100, 100); | 187 gfx::Size quad_size(100, 100); |
| 188 // Structure: | 188 // Structure: |
| 189 // root (200x200) -> left_child (100x200 @ 0x0, | 189 // root (200x200) -> left_child (100x200 @ 0x0, |
| 190 // right_child (100x200 @ 0x100) | 190 // right_child (100x200 @ 0x100) |
| 191 // left_child -> top_green_quad (100x100 @ 0x0), | 191 // left_child -> top_green_quad (100x100 @ 0x0), |
| 192 // bottom_blue_quad (100x100 @ 0x100) | 192 // bottom_blue_quad (100x100 @ 0x100) |
| 193 // right_child -> top_blue_quad (100x100 @ 0x0), | 193 // right_child -> top_blue_quad (100x100 @ 0x0), |
| 194 // bottom_green_quad (100x100 @ 0x100) | 194 // bottom_green_quad (100x100 @ 0x100) |
| 195 SurfaceFactory left_factory(kArbitraryLeftFrameSinkId, &manager_, &client_); | 195 SurfaceFactory left_factory(kArbitraryLeftFrameSinkId, &manager_, &client_); |
| 196 SurfaceFactory right_factory(kArbitraryRightFrameSinkId, &manager_, &client_); | 196 SurfaceFactory right_factory(kArbitraryRightFrameSinkId, &manager_, &client_); |
| 197 LocalFrameId left_child_local_id = allocator_.GenerateId(); | 197 LocalSurfaceId left_child_local_id = allocator_.GenerateId(); |
| 198 SurfaceId left_child_id(left_factory.frame_sink_id(), left_child_local_id); | 198 SurfaceId left_child_id(left_factory.frame_sink_id(), left_child_local_id); |
| 199 LocalFrameId right_child_local_id = allocator_.GenerateId(); | 199 LocalSurfaceId right_child_local_id = allocator_.GenerateId(); |
| 200 SurfaceId right_child_id(right_factory.frame_sink_id(), right_child_local_id); | 200 SurfaceId right_child_id(right_factory.frame_sink_id(), right_child_local_id); |
| 201 LocalFrameId root_local_frame_id = allocator_.GenerateId(); | 201 LocalSurfaceId root_local_surface_id = allocator_.GenerateId(); |
| 202 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id); | 202 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_surface_id); |
| 203 | 203 |
| 204 { | 204 { |
| 205 gfx::Rect rect(device_viewport_size_); | 205 gfx::Rect rect(device_viewport_size_); |
| 206 int id = 1; | 206 int id = 1; |
| 207 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 207 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
| 208 pass->SetNew(id, rect, rect, gfx::Transform()); | 208 pass->SetNew(id, rect, rect, gfx::Transform()); |
| 209 | 209 |
| 210 gfx::Transform surface_transform; | 210 gfx::Transform surface_transform; |
| 211 CreateAndAppendTestSharedQuadState( | 211 CreateAndAppendTestSharedQuadState( |
| 212 pass.get(), surface_transform, device_viewport_size_); | 212 pass.get(), surface_transform, device_viewport_size_); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 225 SurfaceDrawQuad* right_surface_quad = | 225 SurfaceDrawQuad* right_surface_quad = |
| 226 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 226 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
| 227 right_surface_quad->SetNew(pass->shared_quad_state_list.back(), | 227 right_surface_quad->SetNew(pass->shared_quad_state_list.back(), |
| 228 gfx::Rect(child_size), | 228 gfx::Rect(child_size), |
| 229 gfx::Rect(child_size), | 229 gfx::Rect(child_size), |
| 230 right_child_id); | 230 right_child_id); |
| 231 | 231 |
| 232 CompositorFrame root_frame; | 232 CompositorFrame root_frame; |
| 233 root_frame.render_pass_list.push_back(std::move(pass)); | 233 root_frame.render_pass_list.push_back(std::move(pass)); |
| 234 | 234 |
| 235 factory_.SubmitCompositorFrame(root_local_frame_id, std::move(root_frame), | 235 factory_.SubmitCompositorFrame(root_local_surface_id, std::move(root_frame), |
| 236 SurfaceFactory::DrawCallback()); | 236 SurfaceFactory::DrawCallback()); |
| 237 } | 237 } |
| 238 | 238 |
| 239 { | 239 { |
| 240 gfx::Rect rect(child_size); | 240 gfx::Rect rect(child_size); |
| 241 int id = 1; | 241 int id = 1; |
| 242 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 242 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
| 243 pass->SetNew(id, rect, rect, gfx::Transform()); | 243 pass->SetNew(id, rect, rect, gfx::Transform()); |
| 244 | 244 |
| 245 CreateAndAppendTestSharedQuadState( | 245 CreateAndAppendTestSharedQuadState( |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 pixel_comparator)); | 316 pixel_comparator)); |
| 317 | 317 |
| 318 left_factory.EvictSurface(); | 318 left_factory.EvictSurface(); |
| 319 right_factory.EvictSurface(); | 319 right_factory.EvictSurface(); |
| 320 } | 320 } |
| 321 | 321 |
| 322 } // namespace | 322 } // namespace |
| 323 } // namespace cc | 323 } // namespace cc |
| 324 | 324 |
| 325 #endif // !defined(OS_ANDROID) | 325 #endif // !defined(OS_ANDROID) |
| OLD | NEW |