OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/software_renderer.h" | 5 #include "cc/output/software_renderer.h" |
6 | 6 |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "cc/output/compositor_frame_metadata.h" | 8 #include "cc/output/compositor_frame_metadata.h" |
9 #include "cc/output/copy_output_request.h" | 9 #include "cc/output/copy_output_request.h" |
10 #include "cc/output/copy_output_result.h" | 10 #include "cc/output/copy_output_result.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 | 93 |
94 TEST_F(SoftwareRendererTest, SolidColorQuad) { | 94 TEST_F(SoftwareRendererTest, SolidColorQuad) { |
95 gfx::Size outer_size(100, 100); | 95 gfx::Size outer_size(100, 100); |
96 gfx::Size inner_size(98, 98); | 96 gfx::Size inner_size(98, 98); |
97 gfx::Rect outer_rect(outer_size); | 97 gfx::Rect outer_rect(outer_size); |
98 gfx::Rect inner_rect(gfx::Point(1, 1), inner_size); | 98 gfx::Rect inner_rect(gfx::Point(1, 1), inner_size); |
99 gfx::Rect visible_rect(gfx::Point(1, 2), gfx::Size(98, 97)); | 99 gfx::Rect visible_rect(gfx::Point(1, 2), gfx::Size(98, 97)); |
100 | 100 |
101 InitializeRenderer(make_scoped_ptr(new SoftwareOutputDevice)); | 101 InitializeRenderer(make_scoped_ptr(new SoftwareOutputDevice)); |
102 | 102 |
103 RenderPass::Id root_render_pass_id = RenderPass::Id(1, 1); | 103 RenderPassId root_render_pass_id = RenderPassId(1, 1); |
104 scoped_ptr<TestRenderPass> root_render_pass = TestRenderPass::Create(); | 104 scoped_ptr<TestRenderPass> root_render_pass = TestRenderPass::Create(); |
105 root_render_pass->SetNew( | 105 root_render_pass->SetNew( |
106 root_render_pass_id, outer_rect, outer_rect, gfx::Transform()); | 106 root_render_pass_id, outer_rect, outer_rect, gfx::Transform()); |
107 SharedQuadState* shared_quad_state = | 107 SharedQuadState* shared_quad_state = |
108 root_render_pass->CreateAndAppendSharedQuadState(); | 108 root_render_pass->CreateAndAppendSharedQuadState(); |
109 shared_quad_state->SetAll(gfx::Transform(), | 109 shared_quad_state->SetAll(gfx::Transform(), |
110 outer_size, | 110 outer_size, |
111 outer_rect, | 111 outer_rect, |
112 outer_rect, | 112 outer_rect, |
113 false, | 113 false, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 gfx::Rect(outer_size), | 176 gfx::Rect(outer_size), |
177 gfx::Vector2d()); | 177 gfx::Vector2d()); |
178 resource_provider()->SetPixels(resource_cyan, | 178 resource_provider()->SetPixels(resource_cyan, |
179 static_cast<uint8_t*>(cyan_tile.getPixels()), | 179 static_cast<uint8_t*>(cyan_tile.getPixels()), |
180 gfx::Rect(inner_size), | 180 gfx::Rect(inner_size), |
181 gfx::Rect(inner_size), | 181 gfx::Rect(inner_size), |
182 gfx::Vector2d()); | 182 gfx::Vector2d()); |
183 | 183 |
184 gfx::Rect root_rect = outer_rect; | 184 gfx::Rect root_rect = outer_rect; |
185 | 185 |
186 RenderPass::Id root_render_pass_id = RenderPass::Id(1, 1); | 186 RenderPassId root_render_pass_id = RenderPassId(1, 1); |
187 scoped_ptr<TestRenderPass> root_render_pass = TestRenderPass::Create(); | 187 scoped_ptr<TestRenderPass> root_render_pass = TestRenderPass::Create(); |
188 root_render_pass->SetNew( | 188 root_render_pass->SetNew( |
189 root_render_pass_id, root_rect, root_rect, gfx::Transform()); | 189 root_render_pass_id, root_rect, root_rect, gfx::Transform()); |
190 SharedQuadState* shared_quad_state = | 190 SharedQuadState* shared_quad_state = |
191 root_render_pass->CreateAndAppendSharedQuadState(); | 191 root_render_pass->CreateAndAppendSharedQuadState(); |
192 shared_quad_state->SetAll(gfx::Transform(), | 192 shared_quad_state->SetAll(gfx::Transform(), |
193 outer_size, | 193 outer_size, |
194 outer_rect, | 194 outer_rect, |
195 outer_rect, | 195 outer_rect, |
196 false, | 196 false, |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 SK_ColorYELLOW); | 258 SK_ColorYELLOW); |
259 | 259 |
260 resource_provider()->SetPixels(resource_cyan, | 260 resource_provider()->SetPixels(resource_cyan, |
261 static_cast<uint8_t*>(cyan_tile.getPixels()), | 261 static_cast<uint8_t*>(cyan_tile.getPixels()), |
262 gfx::Rect(tile_size), | 262 gfx::Rect(tile_size), |
263 gfx::Rect(tile_size), | 263 gfx::Rect(tile_size), |
264 gfx::Vector2d()); | 264 gfx::Vector2d()); |
265 | 265 |
266 gfx::Rect root_rect(tile_size); | 266 gfx::Rect root_rect(tile_size); |
267 | 267 |
268 RenderPass::Id root_render_pass_id = RenderPass::Id(1, 1); | 268 RenderPassId root_render_pass_id = RenderPassId(1, 1); |
269 scoped_ptr<TestRenderPass> root_render_pass = TestRenderPass::Create(); | 269 scoped_ptr<TestRenderPass> root_render_pass = TestRenderPass::Create(); |
270 root_render_pass->SetNew( | 270 root_render_pass->SetNew( |
271 root_render_pass_id, root_rect, root_rect, gfx::Transform()); | 271 root_render_pass_id, root_rect, root_rect, gfx::Transform()); |
272 SharedQuadState* shared_quad_state = | 272 SharedQuadState* shared_quad_state = |
273 root_render_pass->CreateAndAppendSharedQuadState(); | 273 root_render_pass->CreateAndAppendSharedQuadState(); |
274 shared_quad_state->SetAll(gfx::Transform(), | 274 shared_quad_state->SetAll(gfx::Transform(), |
275 tile_size, | 275 tile_size, |
276 tile_rect, | 276 tile_rect, |
277 tile_rect, | 277 tile_rect, |
278 false, | 278 false, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) { | 324 TEST_F(SoftwareRendererTest, ShouldClearRootRenderPass) { |
325 float device_scale_factor = 1.f; | 325 float device_scale_factor = 1.f; |
326 gfx::Rect device_viewport_rect(0, 0, 100, 100); | 326 gfx::Rect device_viewport_rect(0, 0, 100, 100); |
327 | 327 |
328 settings_.should_clear_root_render_pass = false; | 328 settings_.should_clear_root_render_pass = false; |
329 InitializeRenderer(make_scoped_ptr(new SoftwareOutputDevice)); | 329 InitializeRenderer(make_scoped_ptr(new SoftwareOutputDevice)); |
330 | 330 |
331 RenderPassList list; | 331 RenderPassList list; |
332 | 332 |
333 // Draw a fullscreen green quad in a first frame. | 333 // Draw a fullscreen green quad in a first frame. |
334 RenderPass::Id root_clear_pass_id(1, 0); | 334 RenderPassId root_clear_pass_id(1, 0); |
335 TestRenderPass* root_clear_pass = AddRenderPass( | 335 TestRenderPass* root_clear_pass = AddRenderPass( |
336 &list, root_clear_pass_id, device_viewport_rect, gfx::Transform()); | 336 &list, root_clear_pass_id, device_viewport_rect, gfx::Transform()); |
337 AddQuad(root_clear_pass, device_viewport_rect, SK_ColorGREEN); | 337 AddQuad(root_clear_pass, device_viewport_rect, SK_ColorGREEN); |
338 | 338 |
339 renderer()->DecideRenderPassAllocationsForFrame(list); | 339 renderer()->DecideRenderPassAllocationsForFrame(list); |
340 | 340 |
341 scoped_ptr<SkBitmap> output = | 341 scoped_ptr<SkBitmap> output = |
342 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); | 342 DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); |
343 EXPECT_EQ(device_viewport_rect.width(), output->info().fWidth); | 343 EXPECT_EQ(device_viewport_rect.width(), output->info().fWidth); |
344 EXPECT_EQ(device_viewport_rect.width(), output->info().fHeight); | 344 EXPECT_EQ(device_viewport_rect.width(), output->info().fHeight); |
345 | 345 |
346 EXPECT_EQ(SK_ColorGREEN, output->getColor(0, 0)); | 346 EXPECT_EQ(SK_ColorGREEN, output->getColor(0, 0)); |
347 EXPECT_EQ(SK_ColorGREEN, | 347 EXPECT_EQ(SK_ColorGREEN, |
348 output->getColor(device_viewport_rect.width() - 1, | 348 output->getColor(device_viewport_rect.width() - 1, |
349 device_viewport_rect.height() - 1)); | 349 device_viewport_rect.height() - 1)); |
350 | 350 |
351 list.clear(); | 351 list.clear(); |
352 | 352 |
353 // Draw a smaller magenta rect without filling the viewport in a separate | 353 // Draw a smaller magenta rect without filling the viewport in a separate |
354 // frame. | 354 // frame. |
355 gfx::Rect smaller_rect(20, 20, 60, 60); | 355 gfx::Rect smaller_rect(20, 20, 60, 60); |
356 | 356 |
357 RenderPass::Id root_smaller_pass_id(2, 0); | 357 RenderPassId root_smaller_pass_id(2, 0); |
358 TestRenderPass* root_smaller_pass = AddRenderPass( | 358 TestRenderPass* root_smaller_pass = AddRenderPass( |
359 &list, root_smaller_pass_id, device_viewport_rect, gfx::Transform()); | 359 &list, root_smaller_pass_id, device_viewport_rect, gfx::Transform()); |
360 AddQuad(root_smaller_pass, smaller_rect, SK_ColorMAGENTA); | 360 AddQuad(root_smaller_pass, smaller_rect, SK_ColorMAGENTA); |
361 | 361 |
362 renderer()->DecideRenderPassAllocationsForFrame(list); | 362 renderer()->DecideRenderPassAllocationsForFrame(list); |
363 | 363 |
364 output = DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); | 364 output = DrawAndCopyOutput(&list, device_scale_factor, device_viewport_rect); |
365 EXPECT_EQ(device_viewport_rect.width(), output->info().fWidth); | 365 EXPECT_EQ(device_viewport_rect.width(), output->info().fWidth); |
366 EXPECT_EQ(device_viewport_rect.width(), output->info().fHeight); | 366 EXPECT_EQ(device_viewport_rect.width(), output->info().fHeight); |
367 | 367 |
(...skipping 12 matching lines...) Expand all Loading... |
380 | 380 |
381 TEST_F(SoftwareRendererTest, RenderPassVisibleRect) { | 381 TEST_F(SoftwareRendererTest, RenderPassVisibleRect) { |
382 float device_scale_factor = 1.f; | 382 float device_scale_factor = 1.f; |
383 gfx::Rect device_viewport_rect(0, 0, 100, 100); | 383 gfx::Rect device_viewport_rect(0, 0, 100, 100); |
384 InitializeRenderer(make_scoped_ptr(new SoftwareOutputDevice)); | 384 InitializeRenderer(make_scoped_ptr(new SoftwareOutputDevice)); |
385 | 385 |
386 RenderPassList list; | 386 RenderPassList list; |
387 | 387 |
388 // Pass drawn as inner quad is magenta. | 388 // Pass drawn as inner quad is magenta. |
389 gfx::Rect smaller_rect(20, 20, 60, 60); | 389 gfx::Rect smaller_rect(20, 20, 60, 60); |
390 RenderPass::Id smaller_pass_id(2, 1); | 390 RenderPassId smaller_pass_id(2, 1); |
391 TestRenderPass* smaller_pass = | 391 TestRenderPass* smaller_pass = |
392 AddRenderPass(&list, smaller_pass_id, smaller_rect, gfx::Transform()); | 392 AddRenderPass(&list, smaller_pass_id, smaller_rect, gfx::Transform()); |
393 AddQuad(smaller_pass, smaller_rect, SK_ColorMAGENTA); | 393 AddQuad(smaller_pass, smaller_rect, SK_ColorMAGENTA); |
394 | 394 |
395 // Root pass is green. | 395 // Root pass is green. |
396 RenderPass::Id root_clear_pass_id(1, 0); | 396 RenderPassId root_clear_pass_id(1, 0); |
397 TestRenderPass* root_clear_pass = AddRenderPass( | 397 TestRenderPass* root_clear_pass = AddRenderPass( |
398 &list, root_clear_pass_id, device_viewport_rect, gfx::Transform()); | 398 &list, root_clear_pass_id, device_viewport_rect, gfx::Transform()); |
399 AddRenderPassQuad(root_clear_pass, smaller_pass); | 399 AddRenderPassQuad(root_clear_pass, smaller_pass); |
400 AddQuad(root_clear_pass, device_viewport_rect, SK_ColorGREEN); | 400 AddQuad(root_clear_pass, device_viewport_rect, SK_ColorGREEN); |
401 | 401 |
402 // Interior pass quad has smaller visible rect. | 402 // Interior pass quad has smaller visible rect. |
403 gfx::Rect interior_visible_rect(30, 30, 40, 40); | 403 gfx::Rect interior_visible_rect(30, 30, 40, 40); |
404 root_clear_pass->quad_list[0]->visible_rect = interior_visible_rect; | 404 root_clear_pass->quad_list[0]->visible_rect = interior_visible_rect; |
405 | 405 |
406 renderer()->DecideRenderPassAllocationsForFrame(list); | 406 renderer()->DecideRenderPassAllocationsForFrame(list); |
(...skipping 18 matching lines...) Expand all Loading... |
425 EXPECT_EQ( | 425 EXPECT_EQ( |
426 SK_ColorMAGENTA, | 426 SK_ColorMAGENTA, |
427 output->getColor(interior_visible_rect.x(), interior_visible_rect.y())); | 427 output->getColor(interior_visible_rect.x(), interior_visible_rect.y())); |
428 EXPECT_EQ(SK_ColorMAGENTA, | 428 EXPECT_EQ(SK_ColorMAGENTA, |
429 output->getColor(interior_visible_rect.right() - 1, | 429 output->getColor(interior_visible_rect.right() - 1, |
430 interior_visible_rect.bottom() - 1)); | 430 interior_visible_rect.bottom() - 1)); |
431 } | 431 } |
432 | 432 |
433 } // namespace | 433 } // namespace |
434 } // namespace cc | 434 } // namespace cc |
OLD | NEW |