| 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/delegated_renderer_layer_impl.h" | 5 #include "cc/delegated_renderer_layer_impl.h" |
| 6 | 6 |
| 7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
| 8 #include "cc/layer_tree_host_impl.h" | 8 #include "cc/layer_tree_host_impl.h" |
| 9 #include "cc/layer_tree_impl.h" | 9 #include "cc/layer_tree_impl.h" |
| 10 #include "cc/quad_sink.h" | 10 #include "cc/quad_sink.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 scoped_ptr<LayerImpl> root_layer = SolidColorLayerImpl::Create( | 58 scoped_ptr<LayerImpl> root_layer = SolidColorLayerImpl::Create( |
| 59 host_impl_->activeTree(), 1).PassAs<LayerImpl>(); | 59 host_impl_->activeTree(), 1).PassAs<LayerImpl>(); |
| 60 scoped_ptr<LayerImpl> layer_before = SolidColorLayerImpl::Create( | 60 scoped_ptr<LayerImpl> layer_before = SolidColorLayerImpl::Create( |
| 61 host_impl_->activeTree(), 2).PassAs<LayerImpl>(); | 61 host_impl_->activeTree(), 2).PassAs<LayerImpl>(); |
| 62 scoped_ptr<LayerImpl> layer_after = SolidColorLayerImpl::Create( | 62 scoped_ptr<LayerImpl> layer_after = SolidColorLayerImpl::Create( |
| 63 host_impl_->activeTree(), 3).PassAs<LayerImpl>(); | 63 host_impl_->activeTree(), 3).PassAs<LayerImpl>(); |
| 64 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 64 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 65 FakeDelegatedRendererLayerImpl::Create(host_impl_->activeTree(), 4); | 65 FakeDelegatedRendererLayerImpl::Create(host_impl_->activeTree(), 4); |
| 66 | 66 |
| 67 host_impl_->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); | 67 host_impl_->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
| 68 root_layer->setBounds(gfx::Size(100, 100)); | 68 root_layer->SetBounds(gfx::Size(100, 100)); |
| 69 | 69 |
| 70 layer_before->setPosition(gfx::Point(20, 20)); | 70 layer_before->SetPosition(gfx::Point(20, 20)); |
| 71 layer_before->setBounds(gfx::Size(14, 14)); | 71 layer_before->SetBounds(gfx::Size(14, 14)); |
| 72 layer_before->setContentBounds(gfx::Size(14, 14)); | 72 layer_before->SetContentBounds(gfx::Size(14, 14)); |
| 73 layer_before->setDrawsContent(true); | 73 layer_before->SetDrawsContent(true); |
| 74 layer_before->setForceRenderSurface(true); | 74 layer_before->SetForceRenderSurface(true); |
| 75 | 75 |
| 76 layer_after->setPosition(gfx::Point(5, 5)); | 76 layer_after->SetPosition(gfx::Point(5, 5)); |
| 77 layer_after->setBounds(gfx::Size(15, 15)); | 77 layer_after->SetBounds(gfx::Size(15, 15)); |
| 78 layer_after->setContentBounds(gfx::Size(15, 15)); | 78 layer_after->SetContentBounds(gfx::Size(15, 15)); |
| 79 layer_after->setDrawsContent(true); | 79 layer_after->SetDrawsContent(true); |
| 80 layer_after->setForceRenderSurface(true); | 80 layer_after->SetForceRenderSurface(true); |
| 81 | 81 |
| 82 delegated_renderer_layer->setPosition(gfx::Point(3, 3)); | 82 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); |
| 83 delegated_renderer_layer->setBounds(gfx::Size(10, 10)); | 83 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); |
| 84 delegated_renderer_layer->setContentBounds(gfx::Size(10, 10)); | 84 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); |
| 85 delegated_renderer_layer->setDrawsContent(true); | 85 delegated_renderer_layer->SetDrawsContent(true); |
| 86 gfx::Transform transform; | 86 gfx::Transform transform; |
| 87 transform.Translate(1.0, 1.0); | 87 transform.Translate(1.0, 1.0); |
| 88 delegated_renderer_layer->setTransform(transform); | 88 delegated_renderer_layer->SetTransform(transform); |
| 89 | 89 |
| 90 ScopedPtrVector<RenderPass> delegated_render_passes; | 90 ScopedPtrVector<RenderPass> delegated_render_passes; |
| 91 TestRenderPass* pass1 = addRenderPass( | 91 TestRenderPass* pass1 = addRenderPass( |
| 92 delegated_render_passes, | 92 delegated_render_passes, |
| 93 RenderPass::Id(9, 6), | 93 RenderPass::Id(9, 6), |
| 94 gfx::Rect(6, 6, 6, 6), | 94 gfx::Rect(6, 6, 6, 6), |
| 95 gfx::Transform()); | 95 gfx::Transform()); |
| 96 addQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u); | 96 addQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u); |
| 97 TestRenderPass* pass2 = addRenderPass( | 97 TestRenderPass* pass2 = addRenderPass( |
| 98 delegated_render_passes, | 98 delegated_render_passes, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 113 // The RenderPasses should be taken by the layer. | 113 // The RenderPasses should be taken by the layer. |
| 114 EXPECT_EQ(0u, delegated_render_passes.size()); | 114 EXPECT_EQ(0u, delegated_render_passes.size()); |
| 115 | 115 |
| 116 root_layer_ = root_layer.get(); | 116 root_layer_ = root_layer.get(); |
| 117 layer_before_ = layer_before.get(); | 117 layer_before_ = layer_before.get(); |
| 118 layer_after_ = layer_after.get(); | 118 layer_after_ = layer_after.get(); |
| 119 delegated_renderer_layer_ = delegated_renderer_layer.get(); | 119 delegated_renderer_layer_ = delegated_renderer_layer.get(); |
| 120 | 120 |
| 121 // Force the delegated RenderPasses to come before the RenderPass from | 121 // Force the delegated RenderPasses to come before the RenderPass from |
| 122 // layer_after. | 122 // layer_after. |
| 123 layer_after->addChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 123 layer_after->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 124 root_layer->addChild(layer_after.Pass()); | 124 root_layer->AddChild(layer_after.Pass()); |
| 125 | 125 |
| 126 // Get the RenderPass generated by layer_before to come before the delegated | 126 // Get the RenderPass generated by layer_before to come before the delegated |
| 127 // RenderPasses. | 127 // RenderPasses. |
| 128 root_layer->addChild(layer_before.Pass()); | 128 root_layer->AddChild(layer_before.Pass()); |
| 129 host_impl_->activeTree()->SetRootLayer(root_layer.Pass()); | 129 host_impl_->activeTree()->SetRootLayer(root_layer.Pass()); |
| 130 } | 130 } |
| 131 | 131 |
| 132 protected: | 132 protected: |
| 133 LayerImpl* root_layer_; | 133 LayerImpl* root_layer_; |
| 134 LayerImpl* layer_before_; | 134 LayerImpl* layer_before_; |
| 135 LayerImpl* layer_after_; | 135 LayerImpl* layer_after_; |
| 136 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 136 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 137 }; | 137 }; |
| 138 | 138 |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 host_impl_->drawLayers(frame); | 265 host_impl_->drawLayers(frame); |
| 266 host_impl_->didDrawAllLayers(frame); | 266 host_impl_->didDrawAllLayers(frame); |
| 267 } | 267 } |
| 268 | 268 |
| 269 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 269 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
| 270 LayerTreeHostImpl::FrameData frame; | 270 LayerTreeHostImpl::FrameData frame; |
| 271 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 271 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 272 | 272 |
| 273 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 273 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
| 274 // has no need to be a renderSurface for the quads it carries. | 274 // has no need to be a renderSurface for the quads it carries. |
| 275 EXPECT_FALSE(delegated_renderer_layer_->renderSurface()); | 275 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
| 276 | 276 |
| 277 host_impl_->drawLayers(frame); | 277 host_impl_->drawLayers(frame); |
| 278 host_impl_->didDrawAllLayers(frame); | 278 host_impl_->didDrawAllLayers(frame); |
| 279 } | 279 } |
| 280 | 280 |
| 281 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 281 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
| 282 delegated_renderer_layer_->setOpacity(0.5f); | 282 delegated_renderer_layer_->SetOpacity(0.5f); |
| 283 | 283 |
| 284 LayerTreeHostImpl::FrameData frame; | 284 LayerTreeHostImpl::FrameData frame; |
| 285 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 285 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 286 | 286 |
| 287 // This test case has quads from multiple layers in the delegated renderer, so | 287 // This test case has quads from multiple layers in the delegated renderer, so |
| 288 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 288 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 289 // render surface. | 289 // render surface. |
| 290 EXPECT_TRUE(delegated_renderer_layer_->renderSurface()); | 290 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 291 | 291 |
| 292 host_impl_->drawLayers(frame); | 292 host_impl_->drawLayers(frame); |
| 293 host_impl_->didDrawAllLayers(frame); | 293 host_impl_->didDrawAllLayers(frame); |
| 294 } | 294 } |
| 295 | 295 |
| 296 TEST_F(DelegatedRendererLayerImplTestSimple, | 296 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 297 DoesOwnARenderSurfaceForTransform) { | 297 DoesOwnARenderSurfaceForTransform) { |
| 298 gfx::Transform rotation; | 298 gfx::Transform rotation; |
| 299 rotation.RotateAboutZAxis(30.0); | 299 rotation.RotateAboutZAxis(30.0); |
| 300 delegated_renderer_layer_->setTransform(rotation); | 300 delegated_renderer_layer_->SetTransform(rotation); |
| 301 | 301 |
| 302 LayerTreeHostImpl::FrameData frame; | 302 LayerTreeHostImpl::FrameData frame; |
| 303 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 303 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 304 | 304 |
| 305 // This test case has quads from multiple layers in the delegated renderer, so | 305 // This test case has quads from multiple layers in the delegated renderer, so |
| 306 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 306 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 307 // render surface. | 307 // render surface. |
| 308 EXPECT_TRUE(delegated_renderer_layer_->renderSurface()); | 308 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 309 | 309 |
| 310 host_impl_->drawLayers(frame); | 310 host_impl_->drawLayers(frame); |
| 311 host_impl_->didDrawAllLayers(frame); | 311 host_impl_->didDrawAllLayers(frame); |
| 312 } | 312 } |
| 313 | 313 |
| 314 class DelegatedRendererLayerImplTestOwnSurface | 314 class DelegatedRendererLayerImplTestOwnSurface |
| 315 : public DelegatedRendererLayerImplTestSimple { | 315 : public DelegatedRendererLayerImplTestSimple { |
| 316 public: | 316 public: |
| 317 DelegatedRendererLayerImplTestOwnSurface() | 317 DelegatedRendererLayerImplTestOwnSurface() |
| 318 : DelegatedRendererLayerImplTestSimple() { | 318 : DelegatedRendererLayerImplTestSimple() { |
| 319 delegated_renderer_layer_->setForceRenderSurface(true); | 319 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 320 } | 320 } |
| 321 }; | 321 }; |
| 322 | 322 |
| 323 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 323 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
| 324 LayerTreeHostImpl::FrameData frame; | 324 LayerTreeHostImpl::FrameData frame; |
| 325 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 325 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 326 | 326 |
| 327 // Each non-DelegatedRendererLayer added one RenderPass. The | 327 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 328 // DelegatedRendererLayer added two contributing passes and its owned surface | 328 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 329 // added one pass. | 329 // added one pass. |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 gfx::Transform(), frame.renderPasses[1]->quad_list[0]->quadTransform()); | 449 gfx::Transform(), frame.renderPasses[1]->quad_list[0]->quadTransform()); |
| 450 | 450 |
| 451 host_impl_->drawLayers(frame); | 451 host_impl_->drawLayers(frame); |
| 452 host_impl_->didDrawAllLayers(frame); | 452 host_impl_->didDrawAllLayers(frame); |
| 453 } | 453 } |
| 454 | 454 |
| 455 class DelegatedRendererLayerImplTestTransform | 455 class DelegatedRendererLayerImplTestTransform |
| 456 : public DelegatedRendererLayerImplTest { | 456 : public DelegatedRendererLayerImplTest { |
| 457 public: | 457 public: |
| 458 void SetUpTest() { | 458 void SetUpTest() { |
| 459 scoped_ptr<LayerImpl> root_layer = LayerImpl::create( | 459 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| 460 host_impl_->activeTree(), 1); | 460 host_impl_->activeTree(), 1); |
| 461 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 461 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 462 FakeDelegatedRendererLayerImpl::Create(host_impl_->activeTree(), 2); | 462 FakeDelegatedRendererLayerImpl::Create(host_impl_->activeTree(), 2); |
| 463 | 463 |
| 464 host_impl_->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); | 464 host_impl_->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
| 465 root_layer->setBounds(gfx::Size(100, 100)); | 465 root_layer->SetBounds(gfx::Size(100, 100)); |
| 466 | 466 |
| 467 delegated_renderer_layer->setPosition(gfx::Point(20, 20)); | 467 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); |
| 468 delegated_renderer_layer->setBounds(gfx::Size(30, 30)); | 468 delegated_renderer_layer->SetBounds(gfx::Size(30, 30)); |
| 469 delegated_renderer_layer->setContentBounds(gfx::Size(30, 30)); | 469 delegated_renderer_layer->SetContentBounds(gfx::Size(30, 30)); |
| 470 delegated_renderer_layer->setDrawsContent(true); | 470 delegated_renderer_layer->SetDrawsContent(true); |
| 471 gfx::Transform transform; | 471 gfx::Transform transform; |
| 472 transform.Scale(2.0, 2.0); | 472 transform.Scale(2.0, 2.0); |
| 473 transform.Translate(8.0, 8.0); | 473 transform.Translate(8.0, 8.0); |
| 474 delegated_renderer_layer->setTransform(transform); | 474 delegated_renderer_layer->SetTransform(transform); |
| 475 | 475 |
| 476 ScopedPtrVector<RenderPass> delegated_render_passes; | 476 ScopedPtrVector<RenderPass> delegated_render_passes; |
| 477 | 477 |
| 478 gfx::Size child_pass_content_bounds(7, 7); | 478 gfx::Size child_pass_content_bounds(7, 7); |
| 479 gfx::Rect child_pass_rect(20, 20, 7, 7); | 479 gfx::Rect child_pass_rect(20, 20, 7, 7); |
| 480 gfx::Transform child_pass_transform; | 480 gfx::Transform child_pass_transform; |
| 481 child_pass_transform.Scale(0.8, 0.8); | 481 child_pass_transform.Scale(0.8, 0.8); |
| 482 child_pass_transform.Translate(9.0, 9.0); | 482 child_pass_transform.Translate(9.0, 9.0); |
| 483 gfx::Rect child_pass_clip_rect(21, 21, 3, 3); | 483 gfx::Rect child_pass_clip_rect(21, 21, 3, 3); |
| 484 bool child_pass_clipped = false; | 484 bool child_pass_clipped = false; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 497 child_pass_transform, | 497 child_pass_transform, |
| 498 child_pass_content_bounds, | 498 child_pass_content_bounds, |
| 499 child_pass_rect, | 499 child_pass_rect, |
| 500 child_pass_clip_rect, | 500 child_pass_clip_rect, |
| 501 child_pass_clipped, | 501 child_pass_clipped, |
| 502 1.f); | 502 1.f); |
| 503 | 503 |
| 504 scoped_ptr<SolidColorDrawQuad> color_quad; | 504 scoped_ptr<SolidColorDrawQuad> color_quad; |
| 505 color_quad = SolidColorDrawQuad::Create(); | 505 color_quad = SolidColorDrawQuad::Create(); |
| 506 color_quad->SetNew(shared_quad_state, gfx::Rect(20, 20, 3, 7), 1u); | 506 color_quad->SetNew(shared_quad_state, gfx::Rect(20, 20, 3, 7), 1u); |
| 507 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 507 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 508 | 508 |
| 509 color_quad = SolidColorDrawQuad::Create(); | 509 color_quad = SolidColorDrawQuad::Create(); |
| 510 color_quad->SetNew(shared_quad_state, gfx::Rect(23, 20, 4, 7), 1u); | 510 color_quad->SetNew(shared_quad_state, gfx::Rect(23, 20, 4, 7), 1u); |
| 511 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 511 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 512 } | 512 } |
| 513 | 513 |
| 514 gfx::Size root_pass_content_bounds(50, 50); | 514 gfx::Size root_pass_content_bounds(50, 50); |
| 515 gfx::Rect root_pass_rect(0, 0, 50, 50); | 515 gfx::Rect root_pass_rect(0, 0, 50, 50); |
| 516 gfx::Transform root_pass_transform; | 516 gfx::Transform root_pass_transform; |
| 517 root_pass_transform.Scale(1.5, 1.5); | 517 root_pass_transform.Scale(1.5, 1.5); |
| 518 root_pass_transform.Translate(7.0, 7.0); | 518 root_pass_transform.Translate(7.0, 7.0); |
| 519 gfx::Rect root_pass_clip_rect(10, 10, 35, 35); | 519 gfx::Rect root_pass_clip_rect(10, 10, 35, 35); |
| 520 bool root_pass_clipped = root_delegated_render_pass_is_clipped_; | 520 bool root_pass_clipped = root_delegated_render_pass_is_clipped_; |
| 521 | 521 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 541 shared_quad_state, | 541 shared_quad_state, |
| 542 gfx::Rect(5, 5, 7, 7), // rect | 542 gfx::Rect(5, 5, 7, 7), // rect |
| 543 RenderPass::Id(10, 7), // render_pass_id | 543 RenderPass::Id(10, 7), // render_pass_id |
| 544 false, // is_replica | 544 false, // is_replica |
| 545 0, // mask_resource_id | 545 0, // mask_resource_id |
| 546 child_pass_rect, // contents_changed_since_last_frame | 546 child_pass_rect, // contents_changed_since_last_frame |
| 547 gfx::RectF(), // mask_uv_rect | 547 gfx::RectF(), // mask_uv_rect |
| 548 WebKit::WebFilterOperations(), // filters | 548 WebKit::WebFilterOperations(), // filters |
| 549 skia::RefPtr<SkImageFilter>(), // filter | 549 skia::RefPtr<SkImageFilter>(), // filter |
| 550 WebKit::WebFilterOperations()); // background_filters | 550 WebKit::WebFilterOperations()); // background_filters |
| 551 quad_sink.append(render_pass_quad.PassAs<DrawQuad>(), data); | 551 quad_sink.append(render_pass_quad.PassAs<DrawQuad>(), &data); |
| 552 | 552 |
| 553 scoped_ptr<SolidColorDrawQuad> color_quad; | 553 scoped_ptr<SolidColorDrawQuad> color_quad; |
| 554 color_quad = SolidColorDrawQuad::Create(); | 554 color_quad = SolidColorDrawQuad::Create(); |
| 555 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 0, 10, 10), 1u); | 555 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 0, 10, 10), 1u); |
| 556 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 556 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 557 | 557 |
| 558 color_quad = SolidColorDrawQuad::Create(); | 558 color_quad = SolidColorDrawQuad::Create(); |
| 559 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 10, 10, 10), 2u); | 559 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 10, 10, 10), 2u); |
| 560 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 560 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 561 | 561 |
| 562 color_quad = SolidColorDrawQuad::Create(); | 562 color_quad = SolidColorDrawQuad::Create(); |
| 563 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 0, 10, 10), 3u); | 563 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 0, 10, 10), 3u); |
| 564 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 564 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 565 | 565 |
| 566 color_quad = SolidColorDrawQuad::Create(); | 566 color_quad = SolidColorDrawQuad::Create(); |
| 567 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 10, 10, 10), 4u); | 567 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 10, 10, 10), 4u); |
| 568 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 568 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 569 | 569 |
| 570 delegated_renderer_layer->SetFrameDataForRenderPasses( | 570 delegated_renderer_layer->SetFrameDataForRenderPasses( |
| 571 &delegated_render_passes); | 571 &delegated_render_passes); |
| 572 | 572 |
| 573 // The RenderPasses should be taken by the layer. | 573 // The RenderPasses should be taken by the layer. |
| 574 EXPECT_EQ(0u, delegated_render_passes.size()); | 574 EXPECT_EQ(0u, delegated_render_passes.size()); |
| 575 | 575 |
| 576 root_layer_ = root_layer.get(); | 576 root_layer_ = root_layer.get(); |
| 577 delegated_renderer_layer_ = delegated_renderer_layer.get(); | 577 delegated_renderer_layer_ = delegated_renderer_layer.get(); |
| 578 | 578 |
| 579 root_layer->addChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 579 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 580 host_impl_->activeTree()->SetRootLayer(root_layer.Pass()); | 580 host_impl_->activeTree()->SetRootLayer(root_layer.Pass()); |
| 581 } | 581 } |
| 582 | 582 |
| 583 void VerifyRenderPasses( | 583 void VerifyRenderPasses( |
| 584 const LayerTreeHostImpl::FrameData& frame, | 584 const LayerTreeHostImpl::FrameData& frame, |
| 585 size_t num_render_passes, | 585 size_t num_render_passes, |
| 586 const SharedQuadState** root_delegated_shared_quad_state, | 586 const SharedQuadState** root_delegated_shared_quad_state, |
| 587 const SharedQuadState** contrib_delegated_shared_quad_state) { | 587 const SharedQuadState** contrib_delegated_shared_quad_state) { |
| 588 ASSERT_EQ(num_render_passes, frame.renderPasses.size()); | 588 ASSERT_EQ(num_render_passes, frame.renderPasses.size()); |
| 589 // The contributing render pass in the DelegatedRendererLayer. | 589 // The contributing render pass in the DelegatedRendererLayer. |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 contrib_delegated_shared_quad_state->content_to_target_transform); | 737 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 738 | 738 |
| 739 host_impl_->drawLayers(frame); | 739 host_impl_->drawLayers(frame); |
| 740 host_impl_->didDrawAllLayers(frame); | 740 host_impl_->didDrawAllLayers(frame); |
| 741 } | 741 } |
| 742 | 742 |
| 743 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 743 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 744 root_delegated_render_pass_is_clipped_ = false; | 744 root_delegated_render_pass_is_clipped_ = false; |
| 745 SetUpTest(); | 745 SetUpTest(); |
| 746 | 746 |
| 747 delegated_renderer_layer_->setForceRenderSurface(true); | 747 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 748 | 748 |
| 749 LayerTreeHostImpl::FrameData frame; | 749 LayerTreeHostImpl::FrameData frame; |
| 750 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 750 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 751 | 751 |
| 752 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 752 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 753 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 753 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 754 VerifyRenderPasses( | 754 VerifyRenderPasses( |
| 755 frame, | 755 frame, |
| 756 3, | 756 3, |
| 757 &root_delegated_shared_quad_state, | 757 &root_delegated_shared_quad_state, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 792 contrib_delegated_shared_quad_state->content_to_target_transform); | 792 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 793 | 793 |
| 794 host_impl_->drawLayers(frame); | 794 host_impl_->drawLayers(frame); |
| 795 host_impl_->didDrawAllLayers(frame); | 795 host_impl_->didDrawAllLayers(frame); |
| 796 } | 796 } |
| 797 | 797 |
| 798 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 798 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 799 root_delegated_render_pass_is_clipped_ = true; | 799 root_delegated_render_pass_is_clipped_ = true; |
| 800 SetUpTest(); | 800 SetUpTest(); |
| 801 | 801 |
| 802 delegated_renderer_layer_->setForceRenderSurface(true); | 802 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 803 | 803 |
| 804 LayerTreeHostImpl::FrameData frame; | 804 LayerTreeHostImpl::FrameData frame; |
| 805 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 805 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 806 | 806 |
| 807 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 807 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 808 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 808 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 809 VerifyRenderPasses( | 809 VerifyRenderPasses( |
| 810 frame, | 810 frame, |
| 811 3, | 811 3, |
| 812 &root_delegated_shared_quad_state, | 812 &root_delegated_shared_quad_state, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 | 847 |
| 848 host_impl_->drawLayers(frame); | 848 host_impl_->drawLayers(frame); |
| 849 host_impl_->didDrawAllLayers(frame); | 849 host_impl_->didDrawAllLayers(frame); |
| 850 } | 850 } |
| 851 | 851 |
| 852 class DelegatedRendererLayerImplTestClip | 852 class DelegatedRendererLayerImplTestClip |
| 853 : public DelegatedRendererLayerImplTest { | 853 : public DelegatedRendererLayerImplTest { |
| 854 public: | 854 public: |
| 855 void SetUpTest() { | 855 void SetUpTest() { |
| 856 scoped_ptr<LayerImpl> root_layer = | 856 scoped_ptr<LayerImpl> root_layer = |
| 857 LayerImpl::create(host_impl_->activeTree(), 1); | 857 LayerImpl::Create(host_impl_->activeTree(), 1); |
| 858 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 858 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 859 FakeDelegatedRendererLayerImpl::Create(host_impl_->activeTree(), 2); | 859 FakeDelegatedRendererLayerImpl::Create(host_impl_->activeTree(), 2); |
| 860 scoped_ptr<LayerImpl> clip_layer = | 860 scoped_ptr<LayerImpl> clip_layer = |
| 861 LayerImpl::create(host_impl_->activeTree(), 3); | 861 LayerImpl::Create(host_impl_->activeTree(), 3); |
| 862 scoped_ptr<LayerImpl> origin_layer = | 862 scoped_ptr<LayerImpl> origin_layer = |
| 863 LayerImpl::create(host_impl_->activeTree(), 4); | 863 LayerImpl::Create(host_impl_->activeTree(), 4); |
| 864 | 864 |
| 865 host_impl_->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); | 865 host_impl_->setViewportSize(gfx::Size(100, 100), gfx::Size(100, 100)); |
| 866 root_layer->setBounds(gfx::Size(100, 100)); | 866 root_layer->SetBounds(gfx::Size(100, 100)); |
| 867 | 867 |
| 868 delegated_renderer_layer->setPosition(gfx::Point(20, 20)); | 868 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); |
| 869 delegated_renderer_layer->setBounds(gfx::Size(50, 50)); | 869 delegated_renderer_layer->SetBounds(gfx::Size(50, 50)); |
| 870 delegated_renderer_layer->setContentBounds(gfx::Size(50, 50)); | 870 delegated_renderer_layer->SetContentBounds(gfx::Size(50, 50)); |
| 871 delegated_renderer_layer->setDrawsContent(true); | 871 delegated_renderer_layer->SetDrawsContent(true); |
| 872 | 872 |
| 873 ScopedPtrVector<RenderPass> delegated_render_passes; | 873 ScopedPtrVector<RenderPass> delegated_render_passes; |
| 874 | 874 |
| 875 gfx::Size child_pass_content_bounds(7, 7); | 875 gfx::Size child_pass_content_bounds(7, 7); |
| 876 gfx::Rect child_pass_rect(20, 20, 7, 7); | 876 gfx::Rect child_pass_rect(20, 20, 7, 7); |
| 877 gfx::Transform child_pass_transform; | 877 gfx::Transform child_pass_transform; |
| 878 gfx::Rect child_pass_clip_rect(21, 21, 3, 3); | 878 gfx::Rect child_pass_clip_rect(21, 21, 3, 3); |
| 879 bool child_pass_clipped = false; | 879 bool child_pass_clipped = false; |
| 880 | 880 |
| 881 { | 881 { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 892 child_pass_transform, | 892 child_pass_transform, |
| 893 child_pass_content_bounds, | 893 child_pass_content_bounds, |
| 894 child_pass_rect, | 894 child_pass_rect, |
| 895 child_pass_clip_rect, | 895 child_pass_clip_rect, |
| 896 child_pass_clipped, | 896 child_pass_clipped, |
| 897 1.f); | 897 1.f); |
| 898 | 898 |
| 899 scoped_ptr<SolidColorDrawQuad> color_quad; | 899 scoped_ptr<SolidColorDrawQuad> color_quad; |
| 900 color_quad = SolidColorDrawQuad::Create(); | 900 color_quad = SolidColorDrawQuad::Create(); |
| 901 color_quad->SetNew(shared_quad_state, gfx::Rect(20, 20, 3, 7), 1u); | 901 color_quad->SetNew(shared_quad_state, gfx::Rect(20, 20, 3, 7), 1u); |
| 902 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 902 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 903 | 903 |
| 904 color_quad = SolidColorDrawQuad::Create(); | 904 color_quad = SolidColorDrawQuad::Create(); |
| 905 color_quad->SetNew(shared_quad_state, gfx::Rect(23, 20, 4, 7), 1u); | 905 color_quad->SetNew(shared_quad_state, gfx::Rect(23, 20, 4, 7), 1u); |
| 906 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 906 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 907 } | 907 } |
| 908 | 908 |
| 909 gfx::Size root_pass_content_bounds(50, 50); | 909 gfx::Size root_pass_content_bounds(50, 50); |
| 910 gfx::Rect root_pass_rect(0, 0, 50, 50); | 910 gfx::Rect root_pass_rect(0, 0, 50, 50); |
| 911 gfx::Transform root_pass_transform; | 911 gfx::Transform root_pass_transform; |
| 912 gfx::Rect root_pass_clip_rect(5, 5, 40, 40); | 912 gfx::Rect root_pass_clip_rect(5, 5, 40, 40); |
| 913 bool root_pass_clipped = root_delegated_render_pass_is_clipped_; | 913 bool root_pass_clipped = root_delegated_render_pass_is_clipped_; |
| 914 | 914 |
| 915 TestRenderPass* pass = addRenderPass( | 915 TestRenderPass* pass = addRenderPass( |
| 916 delegated_render_passes, | 916 delegated_render_passes, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 934 shared_quad_state, | 934 shared_quad_state, |
| 935 gfx::Rect(5, 5, 7, 7), // rect | 935 gfx::Rect(5, 5, 7, 7), // rect |
| 936 RenderPass::Id(10, 7), // render_pass_id | 936 RenderPass::Id(10, 7), // render_pass_id |
| 937 false, // is_replica | 937 false, // is_replica |
| 938 0, // mask_resource_id | 938 0, // mask_resource_id |
| 939 child_pass_rect, // contents_changed_since_last_frame | 939 child_pass_rect, // contents_changed_since_last_frame |
| 940 gfx::RectF(), // mask_uv_rect | 940 gfx::RectF(), // mask_uv_rect |
| 941 WebKit::WebFilterOperations(), // filters | 941 WebKit::WebFilterOperations(), // filters |
| 942 skia::RefPtr<SkImageFilter>(), // filter | 942 skia::RefPtr<SkImageFilter>(), // filter |
| 943 WebKit::WebFilterOperations()); // background_filters | 943 WebKit::WebFilterOperations()); // background_filters |
| 944 quad_sink.append(render_pass_quad.PassAs<DrawQuad>(), data); | 944 quad_sink.append(render_pass_quad.PassAs<DrawQuad>(), &data); |
| 945 | 945 |
| 946 scoped_ptr<SolidColorDrawQuad> color_quad; | 946 scoped_ptr<SolidColorDrawQuad> color_quad; |
| 947 color_quad = SolidColorDrawQuad::Create(); | 947 color_quad = SolidColorDrawQuad::Create(); |
| 948 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 0, 10, 10), 1u); | 948 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 0, 10, 10), 1u); |
| 949 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 949 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 950 | 950 |
| 951 color_quad = SolidColorDrawQuad::Create(); | 951 color_quad = SolidColorDrawQuad::Create(); |
| 952 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 10, 10, 10), 2u); | 952 color_quad->SetNew(shared_quad_state, gfx::Rect(0, 10, 10, 10), 2u); |
| 953 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 953 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 954 | 954 |
| 955 color_quad = SolidColorDrawQuad::Create(); | 955 color_quad = SolidColorDrawQuad::Create(); |
| 956 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 0, 10, 10), 3u); | 956 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 0, 10, 10), 3u); |
| 957 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 957 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 958 | 958 |
| 959 color_quad = SolidColorDrawQuad::Create(); | 959 color_quad = SolidColorDrawQuad::Create(); |
| 960 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 10, 10, 10), 4u); | 960 color_quad->SetNew(shared_quad_state, gfx::Rect(10, 10, 10, 10), 4u); |
| 961 quad_sink.append(color_quad.PassAs<DrawQuad>(), data); | 961 quad_sink.append(color_quad.PassAs<DrawQuad>(), &data); |
| 962 | 962 |
| 963 delegated_renderer_layer->SetFrameDataForRenderPasses( | 963 delegated_renderer_layer->SetFrameDataForRenderPasses( |
| 964 &delegated_render_passes); | 964 &delegated_render_passes); |
| 965 | 965 |
| 966 // The RenderPasses should be taken by the layer. | 966 // The RenderPasses should be taken by the layer. |
| 967 EXPECT_EQ(0u, delegated_render_passes.size()); | 967 EXPECT_EQ(0u, delegated_render_passes.size()); |
| 968 | 968 |
| 969 root_layer_ = root_layer.get(); | 969 root_layer_ = root_layer.get(); |
| 970 delegated_renderer_layer_ = delegated_renderer_layer.get(); | 970 delegated_renderer_layer_ = delegated_renderer_layer.get(); |
| 971 | 971 |
| 972 if (clip_delegated_renderer_layer_) { | 972 if (clip_delegated_renderer_layer_) { |
| 973 gfx::Rect clip_rect(21, 27, 23, 21); | 973 gfx::Rect clip_rect(21, 27, 23, 21); |
| 974 | 974 |
| 975 clip_layer->setPosition(clip_rect.origin()); | 975 clip_layer->SetPosition(clip_rect.origin()); |
| 976 clip_layer->setBounds(clip_rect.size()); | 976 clip_layer->SetBounds(clip_rect.size()); |
| 977 clip_layer->setContentBounds(clip_rect.size()); | 977 clip_layer->SetContentBounds(clip_rect.size()); |
| 978 clip_layer->setMasksToBounds(true); | 978 clip_layer->SetMasksToBounds(true); |
| 979 | 979 |
| 980 origin_layer->setPosition( | 980 origin_layer->SetPosition( |
| 981 gfx::PointAtOffsetFromOrigin(-clip_rect.OffsetFromOrigin())); | 981 gfx::PointAtOffsetFromOrigin(-clip_rect.OffsetFromOrigin())); |
| 982 | 982 |
| 983 origin_layer->addChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 983 origin_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 984 clip_layer->addChild(origin_layer.Pass()); | 984 clip_layer->AddChild(origin_layer.Pass()); |
| 985 root_layer->addChild(clip_layer.Pass()); | 985 root_layer->AddChild(clip_layer.Pass()); |
| 986 } else { | 986 } else { |
| 987 root_layer->addChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 987 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 988 } | 988 } |
| 989 | 989 |
| 990 host_impl_->activeTree()->SetRootLayer(root_layer.Pass()); | 990 host_impl_->activeTree()->SetRootLayer(root_layer.Pass()); |
| 991 } | 991 } |
| 992 | 992 |
| 993 protected: | 993 protected: |
| 994 LayerImpl* root_layer_; | 994 LayerImpl* root_layer_; |
| 995 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 995 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 996 bool root_delegated_render_pass_is_clipped_; | 996 bool root_delegated_render_pass_is_clipped_; |
| 997 bool clip_delegated_renderer_layer_; | 997 bool clip_delegated_renderer_layer_; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1121 host_impl_->drawLayers(frame); | 1121 host_impl_->drawLayers(frame); |
| 1122 host_impl_->didDrawAllLayers(frame); | 1122 host_impl_->didDrawAllLayers(frame); |
| 1123 } | 1123 } |
| 1124 | 1124 |
| 1125 TEST_F(DelegatedRendererLayerImplTestClip, | 1125 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1126 QuadsUnclipped_LayerUnclipped_Surface) { | 1126 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1127 root_delegated_render_pass_is_clipped_ = false; | 1127 root_delegated_render_pass_is_clipped_ = false; |
| 1128 clip_delegated_renderer_layer_ = false; | 1128 clip_delegated_renderer_layer_ = false; |
| 1129 SetUpTest(); | 1129 SetUpTest(); |
| 1130 | 1130 |
| 1131 delegated_renderer_layer_->setForceRenderSurface(true); | 1131 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1132 | 1132 |
| 1133 LayerTreeHostImpl::FrameData frame; | 1133 LayerTreeHostImpl::FrameData frame; |
| 1134 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 1134 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 1135 | 1135 |
| 1136 ASSERT_EQ(3u, frame.renderPasses.size()); | 1136 ASSERT_EQ(3u, frame.renderPasses.size()); |
| 1137 const QuadList& contrib_delegated_quad_list = | 1137 const QuadList& contrib_delegated_quad_list = |
| 1138 frame.renderPasses[0]->quad_list; | 1138 frame.renderPasses[0]->quad_list; |
| 1139 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1139 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1140 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; | 1140 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; |
| 1141 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1141 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1152 host_impl_->drawLayers(frame); | 1152 host_impl_->drawLayers(frame); |
| 1153 host_impl_->didDrawAllLayers(frame); | 1153 host_impl_->didDrawAllLayers(frame); |
| 1154 } | 1154 } |
| 1155 | 1155 |
| 1156 TEST_F(DelegatedRendererLayerImplTestClip, | 1156 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1157 QuadsClipped_LayerUnclipped_Surface) { | 1157 QuadsClipped_LayerUnclipped_Surface) { |
| 1158 root_delegated_render_pass_is_clipped_ = true; | 1158 root_delegated_render_pass_is_clipped_ = true; |
| 1159 clip_delegated_renderer_layer_ = false; | 1159 clip_delegated_renderer_layer_ = false; |
| 1160 SetUpTest(); | 1160 SetUpTest(); |
| 1161 | 1161 |
| 1162 delegated_renderer_layer_->setForceRenderSurface(true); | 1162 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1163 | 1163 |
| 1164 LayerTreeHostImpl::FrameData frame; | 1164 LayerTreeHostImpl::FrameData frame; |
| 1165 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 1165 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 1166 | 1166 |
| 1167 ASSERT_EQ(3u, frame.renderPasses.size()); | 1167 ASSERT_EQ(3u, frame.renderPasses.size()); |
| 1168 const QuadList& contrib_delegated_quad_list = frame.renderPasses[0]->quad_list
; | 1168 const QuadList& contrib_delegated_quad_list = frame.renderPasses[0]->quad_list
; |
| 1169 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1169 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1170 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; | 1170 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; |
| 1171 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1171 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1172 const SharedQuadState* root_delegated_shared_quad_state = root_delegated_quad_
list[0]->shared_quad_state; | 1172 const SharedQuadState* root_delegated_shared_quad_state = root_delegated_quad_
list[0]->shared_quad_state; |
| 1173 const SharedQuadState* contrib_delegated_shared_quad_state = | 1173 const SharedQuadState* contrib_delegated_shared_quad_state = |
| 1174 contrib_delegated_quad_list[0]->shared_quad_state; | 1174 contrib_delegated_quad_list[0]->shared_quad_state; |
| 1175 | 1175 |
| 1176 // When the quads have a clip of their own, it is used. | 1176 // When the quads have a clip of their own, it is used. |
| 1177 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1177 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1178 root_delegated_shared_quad_state->clip_rect.ToString()); | 1178 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1179 // Quads came with a clip rect. | 1179 // Quads came with a clip rect. |
| 1180 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1180 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1181 | 1181 |
| 1182 host_impl_->drawLayers(frame); | 1182 host_impl_->drawLayers(frame); |
| 1183 host_impl_->didDrawAllLayers(frame); | 1183 host_impl_->didDrawAllLayers(frame); |
| 1184 } | 1184 } |
| 1185 | 1185 |
| 1186 TEST_F(DelegatedRendererLayerImplTestClip, | 1186 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1187 QuadsUnclipped_LayerClipped_Surface) { | 1187 QuadsUnclipped_LayerClipped_Surface) { |
| 1188 root_delegated_render_pass_is_clipped_ = false; | 1188 root_delegated_render_pass_is_clipped_ = false; |
| 1189 clip_delegated_renderer_layer_ = true; | 1189 clip_delegated_renderer_layer_ = true; |
| 1190 SetUpTest(); | 1190 SetUpTest(); |
| 1191 | 1191 |
| 1192 delegated_renderer_layer_->setForceRenderSurface(true); | 1192 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1193 | 1193 |
| 1194 LayerTreeHostImpl::FrameData frame; | 1194 LayerTreeHostImpl::FrameData frame; |
| 1195 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 1195 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 1196 | 1196 |
| 1197 ASSERT_EQ(3u, frame.renderPasses.size()); | 1197 ASSERT_EQ(3u, frame.renderPasses.size()); |
| 1198 const QuadList& contrib_delegated_quad_list = | 1198 const QuadList& contrib_delegated_quad_list = |
| 1199 frame.renderPasses[0]->quad_list; | 1199 frame.renderPasses[0]->quad_list; |
| 1200 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1200 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1201 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; | 1201 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; |
| 1202 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1202 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1203 const SharedQuadState* root_delegated_shared_quad_state = | 1203 const SharedQuadState* root_delegated_shared_quad_state = |
| 1204 root_delegated_quad_list[0]->shared_quad_state; | 1204 root_delegated_quad_list[0]->shared_quad_state; |
| 1205 const SharedQuadState* contrib_delegated_shared_quad_state = | 1205 const SharedQuadState* contrib_delegated_shared_quad_state = |
| 1206 contrib_delegated_quad_list[0]->shared_quad_state; | 1206 contrib_delegated_quad_list[0]->shared_quad_state; |
| 1207 | 1207 |
| 1208 // When the layer owns a surface, the quads don't need to be clipped | 1208 // When the layer owns a surface, the quads don't need to be clipped |
| 1209 // further than they already specify. If they aren't clipped, then their | 1209 // further than they already specify. If they aren't clipped, then their |
| 1210 // clip rect is ignored, and they are not set as clipped. | 1210 // clip rect is ignored, and they are not set as clipped. |
| 1211 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1211 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1212 | 1212 |
| 1213 host_impl_->drawLayers(frame); | 1213 host_impl_->drawLayers(frame); |
| 1214 host_impl_->didDrawAllLayers(frame); | 1214 host_impl_->didDrawAllLayers(frame); |
| 1215 } | 1215 } |
| 1216 | 1216 |
| 1217 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1217 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1218 root_delegated_render_pass_is_clipped_ = true; | 1218 root_delegated_render_pass_is_clipped_ = true; |
| 1219 clip_delegated_renderer_layer_ = true; | 1219 clip_delegated_renderer_layer_ = true; |
| 1220 SetUpTest(); | 1220 SetUpTest(); |
| 1221 | 1221 |
| 1222 delegated_renderer_layer_->setForceRenderSurface(true); | 1222 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1223 | 1223 |
| 1224 LayerTreeHostImpl::FrameData frame; | 1224 LayerTreeHostImpl::FrameData frame; |
| 1225 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); | 1225 EXPECT_TRUE(host_impl_->prepareToDraw(frame)); |
| 1226 | 1226 |
| 1227 ASSERT_EQ(3u, frame.renderPasses.size()); | 1227 ASSERT_EQ(3u, frame.renderPasses.size()); |
| 1228 const QuadList& contrib_delegated_quad_list = | 1228 const QuadList& contrib_delegated_quad_list = |
| 1229 frame.renderPasses[0]->quad_list; | 1229 frame.renderPasses[0]->quad_list; |
| 1230 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1230 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1231 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; | 1231 const QuadList& root_delegated_quad_list = frame.renderPasses[1]->quad_list; |
| 1232 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1232 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1233 const SharedQuadState* root_delegated_shared_quad_state = | 1233 const SharedQuadState* root_delegated_shared_quad_state = |
| 1234 root_delegated_quad_list[0]->shared_quad_state; | 1234 root_delegated_quad_list[0]->shared_quad_state; |
| 1235 const SharedQuadState* contrib_delegated_shared_quad_state = | 1235 const SharedQuadState* contrib_delegated_shared_quad_state = |
| 1236 contrib_delegated_quad_list[0]->shared_quad_state; | 1236 contrib_delegated_quad_list[0]->shared_quad_state; |
| 1237 | 1237 |
| 1238 // When the quads have a clip of their own, it is used, but it is | 1238 // When the quads have a clip of their own, it is used, but it is |
| 1239 // combined with the clip rect of the delegated renderer layer. If the | 1239 // combined with the clip rect of the delegated renderer layer. If the |
| 1240 // layer owns a surface, then it does not have a clip rect of its own. | 1240 // layer owns a surface, then it does not have a clip rect of its own. |
| 1241 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1241 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1242 root_delegated_shared_quad_state->clip_rect.ToString()); | 1242 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1243 // Quads came with a clip rect. | 1243 // Quads came with a clip rect. |
| 1244 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1244 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1245 | 1245 |
| 1246 host_impl_->drawLayers(frame); | 1246 host_impl_->drawLayers(frame); |
| 1247 host_impl_->didDrawAllLayers(frame); | 1247 host_impl_->didDrawAllLayers(frame); |
| 1248 } | 1248 } |
| 1249 | 1249 |
| 1250 } // namespace | 1250 } // namespace |
| 1251 } // namespace cc | 1251 } // namespace cc |
| OLD | NEW |