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

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

Issue 2485473003: Remove SurfaceFactory::Create and SurfaceFactory::Destroy (Closed)
Patch Set: up Created 4 years 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
« no previous file with comments | « cc/surfaces/surface_unittest.cc ('k') | cc/test/test_compositor_frame_sink.cc » ('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/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"
11 #include "cc/surfaces/surface_factory.h" 11 #include "cc/surfaces/surface_factory.h"
12 #include "cc/surfaces/surface_factory_client.h" 12 #include "cc/surfaces/surface_factory_client.h"
13 #include "cc/surfaces/surface_id_allocator.h" 13 #include "cc/surfaces/surface_id_allocator.h"
14 #include "cc/surfaces/surface_manager.h" 14 #include "cc/surfaces/surface_manager.h"
15 #include "cc/test/pixel_comparator.h" 15 #include "cc/test/pixel_comparator.h"
16 #include "cc/test/pixel_test.h" 16 #include "cc/test/pixel_test.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 #if !defined(OS_ANDROID) 19 #if !defined(OS_ANDROID)
20 20
21 namespace cc { 21 namespace cc {
22 namespace { 22 namespace {
23 23
24 static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1); 24 static constexpr FrameSinkId kArbitraryRootFrameSinkId(1, 1);
25 static constexpr FrameSinkId kArbitraryChildFrameSinkId(2, 2);
26 static constexpr FrameSinkId kArbitraryLeftFrameSinkId(3, 3);
27 static constexpr FrameSinkId kArbitraryRightFrameSinkId(4, 4);
25 28
26 class EmptySurfaceFactoryClient : public SurfaceFactoryClient { 29 class EmptySurfaceFactoryClient : public SurfaceFactoryClient {
27 public: 30 public:
28 void ReturnResources(const ReturnedResourceArray& resources) override {} 31 void ReturnResources(const ReturnedResourceArray& resources) override {}
29 void SetBeginFrameSource(BeginFrameSource* begin_frame_source) override {} 32 void SetBeginFrameSource(BeginFrameSource* begin_frame_source) override {}
30 }; 33 };
31 34
32 class SurfacesPixelTest : public RendererPixelTest<GLRenderer> { 35 class SurfacesPixelTest : public RendererPixelTest<GLRenderer> {
33 public: 36 public:
34 SurfacesPixelTest() : factory_(kArbitraryFrameSinkId, &manager_, &client_) {} 37 SurfacesPixelTest()
38 : factory_(kArbitraryRootFrameSinkId, &manager_, &client_) {}
39 ~SurfacesPixelTest() override { factory_.EvictSurface(); }
35 40
36 protected: 41 protected:
37 SurfaceManager manager_; 42 SurfaceManager manager_;
38 SurfaceIdAllocator allocator_; 43 SurfaceIdAllocator allocator_;
39 EmptySurfaceFactoryClient client_; 44 EmptySurfaceFactoryClient client_;
40 SurfaceFactory factory_; 45 SurfaceFactory factory_;
41 }; 46 };
42 47
43 SharedQuadState* CreateAndAppendTestSharedQuadState( 48 SharedQuadState* CreateAndAppendTestSharedQuadState(
44 RenderPass* render_pass, 49 RenderPass* render_pass,
(...skipping 29 matching lines...) Expand all
74 rect, 79 rect,
75 SK_ColorGREEN, 80 SK_ColorGREEN,
76 force_anti_aliasing_off); 81 force_anti_aliasing_off);
77 82
78 83
79 CompositorFrame root_frame; 84 CompositorFrame root_frame;
80 root_frame.render_pass_list.push_back(std::move(pass)); 85 root_frame.render_pass_list.push_back(std::move(pass));
81 86
82 LocalFrameId root_local_frame_id = allocator_.GenerateId(); 87 LocalFrameId root_local_frame_id = allocator_.GenerateId();
83 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id); 88 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id);
84 factory_.Create(root_local_frame_id);
85 factory_.SubmitCompositorFrame(root_local_frame_id, std::move(root_frame), 89 factory_.SubmitCompositorFrame(root_local_frame_id, std::move(root_frame),
86 SurfaceFactory::DrawCallback()); 90 SurfaceFactory::DrawCallback());
87 91
88 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true); 92 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true);
89 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id); 93 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id);
90 factory_.Destroy(root_local_frame_id);
91 94
92 bool discard_alpha = false; 95 bool discard_alpha = false;
93 ExactPixelComparator pixel_comparator(discard_alpha); 96 ExactPixelComparator pixel_comparator(discard_alpha);
94 RenderPassList* pass_list = &aggregated_frame.render_pass_list; 97 RenderPassList* pass_list = &aggregated_frame.render_pass_list;
95 EXPECT_TRUE(RunPixelTest(pass_list, 98 EXPECT_TRUE(RunPixelTest(pass_list,
96 base::FilePath(FILE_PATH_LITERAL("green.png")), 99 base::FilePath(FILE_PATH_LITERAL("green.png")),
97 pixel_comparator)); 100 pixel_comparator));
98 } 101 }
99 102
100 // Draws a frame with simple surface embedding. 103 // Draws a frame with simple surface embedding.
101 TEST_F(SurfacesPixelTest, DrawSimpleAggregatedFrame) { 104 TEST_F(SurfacesPixelTest, DrawSimpleAggregatedFrame) {
102 gfx::Size child_size(200, 100); 105 gfx::Size child_size(200, 100);
106 SurfaceFactory child_factory(kArbitraryChildFrameSinkId, &manager_, &client_);
103 LocalFrameId child_local_frame_id = allocator_.GenerateId(); 107 LocalFrameId child_local_frame_id = allocator_.GenerateId();
104 SurfaceId child_surface_id(factory_.frame_sink_id(), child_local_frame_id); 108 SurfaceId child_surface_id(child_factory.frame_sink_id(),
109 child_local_frame_id);
105 LocalFrameId root_local_frame_id = allocator_.GenerateId(); 110 LocalFrameId root_local_frame_id = allocator_.GenerateId();
106 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id); 111 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id);
107 112
108 factory_.Create(child_local_frame_id);
109 factory_.Create(root_local_frame_id);
110 { 113 {
111 gfx::Rect rect(device_viewport_size_); 114 gfx::Rect rect(device_viewport_size_);
112 RenderPassId id(1, 1); 115 RenderPassId id(1, 1);
113 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 116 std::unique_ptr<RenderPass> pass = RenderPass::Create();
114 pass->SetNew(id, rect, rect, gfx::Transform()); 117 pass->SetNew(id, rect, rect, gfx::Transform());
115 118
116 CreateAndAppendTestSharedQuadState( 119 CreateAndAppendTestSharedQuadState(
117 pass.get(), gfx::Transform(), device_viewport_size_); 120 pass.get(), gfx::Transform(), device_viewport_size_);
118 121
119 SurfaceDrawQuad* surface_quad = 122 SurfaceDrawQuad* surface_quad =
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 bool force_anti_aliasing_off = false; 156 bool force_anti_aliasing_off = false;
154 color_quad->SetNew(pass->shared_quad_state_list.back(), 157 color_quad->SetNew(pass->shared_quad_state_list.back(),
155 rect, 158 rect,
156 rect, 159 rect,
157 SK_ColorBLUE, 160 SK_ColorBLUE,
158 force_anti_aliasing_off); 161 force_anti_aliasing_off);
159 162
160 CompositorFrame child_frame; 163 CompositorFrame child_frame;
161 child_frame.render_pass_list.push_back(std::move(pass)); 164 child_frame.render_pass_list.push_back(std::move(pass));
162 165
163 factory_.SubmitCompositorFrame(child_local_frame_id, std::move(child_frame), 166 child_factory.SubmitCompositorFrame(child_local_frame_id,
164 SurfaceFactory::DrawCallback()); 167 std::move(child_frame),
168 SurfaceFactory::DrawCallback());
165 } 169 }
166 170
167 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true); 171 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true);
168 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id); 172 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id);
169 173
170 bool discard_alpha = false; 174 bool discard_alpha = false;
171 ExactPixelComparator pixel_comparator(discard_alpha); 175 ExactPixelComparator pixel_comparator(discard_alpha);
172 RenderPassList* pass_list = &aggregated_frame.render_pass_list; 176 RenderPassList* pass_list = &aggregated_frame.render_pass_list;
173 EXPECT_TRUE(RunPixelTest(pass_list, 177 EXPECT_TRUE(RunPixelTest(pass_list,
174 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")), 178 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")),
175 pixel_comparator)); 179 pixel_comparator));
176 factory_.Destroy(root_local_frame_id); 180
177 factory_.Destroy(child_local_frame_id); 181 child_factory.EvictSurface();
178 } 182 }
179 183
180 // Tests a surface quad that has a non-identity transform into its pass. 184 // Tests a surface quad that has a non-identity transform into its pass.
181 TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) { 185 TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) {
182 gfx::Size child_size(100, 200); 186 gfx::Size child_size(100, 200);
183 gfx::Size quad_size(100, 100); 187 gfx::Size quad_size(100, 100);
184 // Structure: 188 // Structure:
185 // root (200x200) -> left_child (100x200 @ 0x0, 189 // root (200x200) -> left_child (100x200 @ 0x0,
186 // right_child (100x200 @ 0x100) 190 // right_child (100x200 @ 0x100)
187 // left_child -> top_green_quad (100x100 @ 0x0), 191 // left_child -> top_green_quad (100x100 @ 0x0),
188 // bottom_blue_quad (100x100 @ 0x100) 192 // bottom_blue_quad (100x100 @ 0x100)
189 // right_child -> top_blue_quad (100x100 @ 0x0), 193 // right_child -> top_blue_quad (100x100 @ 0x0),
190 // bottom_green_quad (100x100 @ 0x100) 194 // bottom_green_quad (100x100 @ 0x100)
195 SurfaceFactory left_factory(kArbitraryLeftFrameSinkId, &manager_, &client_);
196 SurfaceFactory right_factory(kArbitraryRightFrameSinkId, &manager_, &client_);
191 LocalFrameId left_child_local_id = allocator_.GenerateId(); 197 LocalFrameId left_child_local_id = allocator_.GenerateId();
192 SurfaceId left_child_id(factory_.frame_sink_id(), left_child_local_id); 198 SurfaceId left_child_id(left_factory.frame_sink_id(), left_child_local_id);
193 LocalFrameId right_child_local_id = allocator_.GenerateId(); 199 LocalFrameId right_child_local_id = allocator_.GenerateId();
194 SurfaceId right_child_id(factory_.frame_sink_id(), right_child_local_id); 200 SurfaceId right_child_id(right_factory.frame_sink_id(), right_child_local_id);
195 LocalFrameId root_local_frame_id = allocator_.GenerateId(); 201 LocalFrameId root_local_frame_id = allocator_.GenerateId();
196 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id); 202 SurfaceId root_surface_id(factory_.frame_sink_id(), root_local_frame_id);
197 factory_.Create(left_child_local_id);
198 factory_.Create(right_child_local_id);
199 factory_.Create(root_local_frame_id);
200 203
201 { 204 {
202 gfx::Rect rect(device_viewport_size_); 205 gfx::Rect rect(device_viewport_size_);
203 RenderPassId id(1, 1); 206 RenderPassId id(1, 1);
204 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 207 std::unique_ptr<RenderPass> pass = RenderPass::Create();
205 pass->SetNew(id, rect, rect, gfx::Transform()); 208 pass->SetNew(id, rect, rect, gfx::Transform());
206 209
207 gfx::Transform surface_transform; 210 gfx::Transform surface_transform;
208 CreateAndAppendTestSharedQuadState( 211 CreateAndAppendTestSharedQuadState(
209 pass.get(), surface_transform, device_viewport_size_); 212 pass.get(), surface_transform, device_viewport_size_);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 258 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
256 bottom_color_quad->SetNew(pass->shared_quad_state_list.back(), 259 bottom_color_quad->SetNew(pass->shared_quad_state_list.back(),
257 gfx::Rect(0, 100, 100, 100), 260 gfx::Rect(0, 100, 100, 100),
258 gfx::Rect(0, 100, 100, 100), 261 gfx::Rect(0, 100, 100, 100),
259 SK_ColorBLUE, 262 SK_ColorBLUE,
260 force_anti_aliasing_off); 263 force_anti_aliasing_off);
261 264
262 CompositorFrame child_frame; 265 CompositorFrame child_frame;
263 child_frame.render_pass_list.push_back(std::move(pass)); 266 child_frame.render_pass_list.push_back(std::move(pass));
264 267
265 factory_.SubmitCompositorFrame(left_child_local_id, std::move(child_frame), 268 left_factory.SubmitCompositorFrame(left_child_local_id,
266 SurfaceFactory::DrawCallback()); 269 std::move(child_frame),
270 SurfaceFactory::DrawCallback());
267 } 271 }
268 272
269 { 273 {
270 gfx::Rect rect(child_size); 274 gfx::Rect rect(child_size);
271 RenderPassId id(1, 1); 275 RenderPassId id(1, 1);
272 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 276 std::unique_ptr<RenderPass> pass = RenderPass::Create();
273 pass->SetNew(id, rect, rect, gfx::Transform()); 277 pass->SetNew(id, rect, rect, gfx::Transform());
274 278
275 CreateAndAppendTestSharedQuadState( 279 CreateAndAppendTestSharedQuadState(
276 pass.get(), gfx::Transform(), child_size); 280 pass.get(), gfx::Transform(), child_size);
(...skipping 11 matching lines...) Expand all
288 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 292 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
289 bottom_color_quad->SetNew(pass->shared_quad_state_list.back(), 293 bottom_color_quad->SetNew(pass->shared_quad_state_list.back(),
290 gfx::Rect(0, 100, 100, 100), 294 gfx::Rect(0, 100, 100, 100),
291 gfx::Rect(0, 100, 100, 100), 295 gfx::Rect(0, 100, 100, 100),
292 SK_ColorGREEN, 296 SK_ColorGREEN,
293 force_anti_aliasing_off); 297 force_anti_aliasing_off);
294 298
295 CompositorFrame child_frame; 299 CompositorFrame child_frame;
296 child_frame.render_pass_list.push_back(std::move(pass)); 300 child_frame.render_pass_list.push_back(std::move(pass));
297 301
298 factory_.SubmitCompositorFrame(right_child_local_id, std::move(child_frame), 302 right_factory.SubmitCompositorFrame(right_child_local_id,
299 SurfaceFactory::DrawCallback()); 303 std::move(child_frame),
304 SurfaceFactory::DrawCallback());
300 } 305 }
301 306
302 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true); 307 SurfaceAggregator aggregator(&manager_, resource_provider_.get(), true);
303 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id); 308 CompositorFrame aggregated_frame = aggregator.Aggregate(root_surface_id);
304 309
305 bool discard_alpha = false; 310 bool discard_alpha = false;
306 ExactPixelComparator pixel_comparator(discard_alpha); 311 ExactPixelComparator pixel_comparator(discard_alpha);
307 RenderPassList* pass_list = &aggregated_frame.render_pass_list; 312 RenderPassList* pass_list = &aggregated_frame.render_pass_list;
308 EXPECT_TRUE(RunPixelTest( 313 EXPECT_TRUE(RunPixelTest(
309 pass_list, 314 pass_list,
310 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), 315 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
311 pixel_comparator)); 316 pixel_comparator));
312 317
313 factory_.Destroy(root_local_frame_id); 318 left_factory.EvictSurface();
314 factory_.Destroy(left_child_local_id); 319 right_factory.EvictSurface();
315 factory_.Destroy(right_child_local_id);
316 } 320 }
317 321
318 } // namespace 322 } // namespace
319 } // namespace cc 323 } // namespace cc
320 324
321 #endif // !defined(OS_ANDROID) 325 #endif // !defined(OS_ANDROID)
OLDNEW
« no previous file with comments | « cc/surfaces/surface_unittest.cc ('k') | cc/test/test_compositor_frame_sink.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698