| 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/layers/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
| 6 | 6 |
| 7 #include "cc/base/scoped_ptr_vector.h" | 7 #include "cc/base/scoped_ptr_vector.h" |
| 8 #include "cc/layers/solid_color_layer_impl.h" | 8 #include "cc/layers/solid_color_layer_impl.h" |
| 9 #include "cc/quads/render_pass_draw_quad.h" | 9 #include "cc/quads/render_pass_draw_quad.h" |
| 10 #include "cc/quads/solid_color_draw_quad.h" | 10 #include "cc/quads/solid_color_draw_quad.h" |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 // to the frame. | 182 // to the frame. |
| 183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 184 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 184 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| 186 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 186 EXPECT_EQ(2, frame.render_passes[2]->id.index); |
| 187 | 187 |
| 188 // The DelegatedRendererLayer should have added copies of its quads to | 188 // The DelegatedRendererLayer should have added copies of its quads to |
| 189 // contributing RenderPasses. | 189 // contributing RenderPasses. |
| 190 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 190 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 191 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 191 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 192 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 192 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
| 193 | 193 |
| 194 // Verify it added the right quads. | 194 // Verify it added the right quads. |
| 195 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 195 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 196 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 196 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
| 197 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 197 frame.render_passes[2]->quad_list.front()->rect.ToString()); |
| 198 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 198 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 199 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 199 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
| 200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 202 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 202 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
| 203 | 203 |
| 204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 205 host_impl_->DidDrawAllLayers(frame); | 205 host_impl_->DidDrawAllLayers(frame); |
| 206 } | 206 } |
| 207 | 207 |
| 208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
| 209 LayerTreeHostImpl::FrameData frame; | 209 LayerTreeHostImpl::FrameData frame; |
| 210 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 210 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 211 | 211 |
| 212 // Each non-DelegatedRendererLayer added one RenderPass. The | 212 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 213 // DelegatedRendererLayer added two contributing passes. | 213 // DelegatedRendererLayer added two contributing passes. |
| 214 ASSERT_EQ(5u, frame.render_passes.size()); | 214 ASSERT_EQ(5u, frame.render_passes.size()); |
| 215 | 215 |
| 216 // The layer's target is the RenderPass from layer_after_. | 216 // The layer's target is the RenderPass from layer_after_. |
| 217 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); | 217 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); |
| 218 | 218 |
| 219 // The DelegatedRendererLayer should have added copies of quads in its root | 219 // The DelegatedRendererLayer should have added copies of quads in its root |
| 220 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 220 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
| 221 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 221 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
| 222 | 222 |
| 223 // Verify it added the right quads. | 223 // Verify it added the right quads. |
| 224 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 224 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 225 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 225 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
| 226 | 226 |
| 227 // Its target layer should have a quad as well. | 227 // Its target layer should have a quad as well. |
| 228 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 228 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
| 229 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 229 frame.render_passes[3]->quad_list.ElementAt(1)->rect.ToString()); |
| 230 | 230 |
| 231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 232 host_impl_->DidDrawAllLayers(frame); | 232 host_impl_->DidDrawAllLayers(frame); |
| 233 } | 233 } |
| 234 | 234 |
| 235 TEST_F(DelegatedRendererLayerImplTestSimple, | 235 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 236 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 236 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
| 237 LayerTreeHostImpl::FrameData frame; | 237 LayerTreeHostImpl::FrameData frame; |
| 238 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 238 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 239 | 239 |
| 240 // Each non-DelegatedRendererLayer added one RenderPass. The | 240 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 241 // DelegatedRendererLayer added two contributing passes. | 241 // DelegatedRendererLayer added two contributing passes. |
| 242 ASSERT_EQ(5u, frame.render_passes.size()); | 242 ASSERT_EQ(5u, frame.render_passes.size()); |
| 243 | 243 |
| 244 // The DelegatedRendererLayer is at position 3,3 compared to its target, and | 244 // The DelegatedRendererLayer is at position 3,3 compared to its target, and |
| 245 // has a translation transform of 1,1. So its root RenderPass' quads should | 245 // has a translation transform of 1,1. So its root RenderPass' quads should |
| 246 // all be transformed by that combined amount. | 246 // all be transformed by that combined amount. |
| 247 gfx::Transform transform; | 247 gfx::Transform transform; |
| 248 transform.Translate(4.0, 4.0); | 248 transform.Translate(4.0, 4.0); |
| 249 EXPECT_TRANSFORMATION_MATRIX_EQ( | 249 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 250 transform, frame.render_passes[3]->quad_list[0]->quadTransform()); | 250 transform, frame.render_passes[3]->quad_list.front()->quadTransform()); |
| 251 | 251 |
| 252 // Quads from non-root RenderPasses should not be shifted though. | 252 // Quads from non-root RenderPasses should not be shifted though. |
| 253 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 253 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 254 |
| 254 EXPECT_TRANSFORMATION_MATRIX_EQ( | 255 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 255 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 256 gfx::Transform(), |
| 257 frame.render_passes[2]->quad_list.front()->quadTransform()); |
| 256 EXPECT_TRANSFORMATION_MATRIX_EQ( | 258 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 257 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 259 gfx::Transform(), |
| 260 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); |
| 258 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 261 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 259 EXPECT_TRANSFORMATION_MATRIX_EQ( | 262 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 260 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 263 gfx::Transform(), |
| 264 frame.render_passes[1]->quad_list.front()->quadTransform()); |
| 261 | 265 |
| 262 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 266 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 263 host_impl_->DidDrawAllLayers(frame); | 267 host_impl_->DidDrawAllLayers(frame); |
| 264 } | 268 } |
| 265 | 269 |
| 266 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 270 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
| 267 LayerTreeHostImpl::FrameData frame; | 271 LayerTreeHostImpl::FrameData frame; |
| 268 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 272 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 269 | 273 |
| 270 // The delegated layer has a surface between it and the root. | 274 // The delegated layer has a surface between it and the root. |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 // to the frame. | 409 // to the frame. |
| 406 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 410 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 407 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 411 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 408 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 412 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| 409 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 413 EXPECT_EQ(2, frame.render_passes[2]->id.index); |
| 410 | 414 |
| 411 // The DelegatedRendererLayer should have added copies of its quads to | 415 // The DelegatedRendererLayer should have added copies of its quads to |
| 412 // contributing RenderPasses. | 416 // contributing RenderPasses. |
| 413 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 417 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 414 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 418 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 415 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 419 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
| 416 | 420 |
| 417 // Verify it added the right quads. | 421 // Verify it added the right quads. |
| 418 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 422 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 423 |
| 419 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 424 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
| 420 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 425 frame.render_passes[2]->quad_list.front()->rect.ToString()); |
| 421 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 426 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 422 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 427 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
| 423 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 428 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 424 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 429 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 425 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 430 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
| 426 | 431 |
| 427 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 432 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 428 host_impl_->DidDrawAllLayers(frame); | 433 host_impl_->DidDrawAllLayers(frame); |
| 429 } | 434 } |
| 430 | 435 |
| 431 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 436 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
| 432 LayerTreeHostImpl::FrameData frame; | 437 LayerTreeHostImpl::FrameData frame; |
| 433 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 438 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 434 | 439 |
| 435 // Each non-DelegatedRendererLayer added one RenderPass. The | 440 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 436 // DelegatedRendererLayer added two contributing passes and its owned surface | 441 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 437 // added one pass. | 442 // added one pass. |
| 438 ASSERT_EQ(6u, frame.render_passes.size()); | 443 ASSERT_EQ(6u, frame.render_passes.size()); |
| 439 | 444 |
| 440 // The layer's target is the RenderPass owned by itself. | 445 // The layer's target is the RenderPass owned by itself. |
| 441 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); | 446 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); |
| 442 | 447 |
| 443 // The DelegatedRendererLayer should have added copies of quads in its root | 448 // The DelegatedRendererLayer should have added copies of quads in its root |
| 444 // RenderPass to its target RenderPass. | 449 // RenderPass to its target RenderPass. |
| 445 // The layer_after also adds one quad. | 450 // The layer_after also adds one quad. |
| 446 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 451 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
| 447 | 452 |
| 448 // Verify it added the right quads. | 453 // Verify it added the right quads. |
| 449 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 454 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 450 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 455 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
| 451 | 456 |
| 452 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 457 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 453 host_impl_->DidDrawAllLayers(frame); | 458 host_impl_->DidDrawAllLayers(frame); |
| 454 } | 459 } |
| 455 | 460 |
| 456 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 461 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 457 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 462 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
| 458 LayerTreeHostImpl::FrameData frame; | 463 LayerTreeHostImpl::FrameData frame; |
| 459 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 464 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 460 | 465 |
| 461 // Each non-DelegatedRendererLayer added one RenderPass. The | 466 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 462 // DelegatedRendererLayer added two contributing passes and its owned surface | 467 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 463 // added one pass. | 468 // added one pass. |
| 464 ASSERT_EQ(6u, frame.render_passes.size()); | 469 ASSERT_EQ(6u, frame.render_passes.size()); |
| 465 | 470 |
| 466 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 471 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
| 467 // RenderPass' quads do not need to be translated at all. | 472 // RenderPass' quads do not need to be translated at all. |
| 468 EXPECT_TRANSFORMATION_MATRIX_EQ( | 473 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 469 gfx::Transform(), frame.render_passes[3]->quad_list[0]->quadTransform()); | 474 gfx::Transform(), |
| 475 frame.render_passes[3]->quad_list.front()->quadTransform()); |
| 470 | 476 |
| 471 // Quads from non-root RenderPasses should not be shifted either. | 477 // Quads from non-root RenderPasses should not be shifted either. |
| 472 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 478 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 479 |
| 473 EXPECT_TRANSFORMATION_MATRIX_EQ( | 480 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 474 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 481 gfx::Transform(), |
| 482 frame.render_passes[2]->quad_list.front()->quadTransform()); |
| 475 EXPECT_TRANSFORMATION_MATRIX_EQ( | 483 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 476 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 484 gfx::Transform(), |
| 485 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); |
| 477 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 486 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 478 EXPECT_TRANSFORMATION_MATRIX_EQ( | 487 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 479 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 488 gfx::Transform(), |
| 489 frame.render_passes[1]->quad_list.front()->quadTransform()); |
| 480 | 490 |
| 481 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 491 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 482 host_impl_->DidDrawAllLayers(frame); | 492 host_impl_->DidDrawAllLayers(frame); |
| 483 } | 493 } |
| 484 | 494 |
| 485 class DelegatedRendererLayerImplTestTransform | 495 class DelegatedRendererLayerImplTestTransform |
| 486 : public DelegatedRendererLayerImplTest { | 496 : public DelegatedRendererLayerImplTest { |
| 487 public: | 497 public: |
| 488 DelegatedRendererLayerImplTestTransform() | 498 DelegatedRendererLayerImplTestTransform() |
| 489 : root_delegated_render_pass_is_clipped_(false), | 499 : root_delegated_render_pass_is_clipped_(false), |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 const QuadList& contrib_delegated_quad_list = | 653 const QuadList& contrib_delegated_quad_list = |
| 644 frame.render_passes[0]->quad_list; | 654 frame.render_passes[0]->quad_list; |
| 645 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 655 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 646 | 656 |
| 647 const QuadList& root_delegated_quad_list = | 657 const QuadList& root_delegated_quad_list = |
| 648 frame.render_passes[1]->quad_list; | 658 frame.render_passes[1]->quad_list; |
| 649 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 659 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 650 | 660 |
| 651 // All quads in a render pass should share the same state. | 661 // All quads in a render pass should share the same state. |
| 652 *contrib_delegated_shared_quad_state = | 662 *contrib_delegated_shared_quad_state = |
| 653 contrib_delegated_quad_list[0]->shared_quad_state; | 663 contrib_delegated_quad_list.front()->shared_quad_state; |
| 654 EXPECT_EQ(*contrib_delegated_shared_quad_state, | 664 EXPECT_EQ(*contrib_delegated_shared_quad_state, |
| 655 contrib_delegated_quad_list[1]->shared_quad_state); | 665 contrib_delegated_quad_list.ElementAt(1)->shared_quad_state); |
| 656 | 666 |
| 657 *root_delegated_shared_quad_state = | 667 *root_delegated_shared_quad_state = |
| 658 root_delegated_quad_list[0]->shared_quad_state; | 668 root_delegated_quad_list.front()->shared_quad_state; |
| 659 EXPECT_EQ(*root_delegated_shared_quad_state, | 669 EXPECT_EQ(*root_delegated_shared_quad_state, |
| 660 root_delegated_quad_list[1]->shared_quad_state); | 670 root_delegated_quad_list.ElementAt(1)->shared_quad_state); |
| 661 EXPECT_EQ(*root_delegated_shared_quad_state, | 671 EXPECT_EQ(*root_delegated_shared_quad_state, |
| 662 root_delegated_quad_list[2]->shared_quad_state); | 672 root_delegated_quad_list.ElementAt(2)->shared_quad_state); |
| 663 EXPECT_EQ(*root_delegated_shared_quad_state, | 673 EXPECT_EQ(*root_delegated_shared_quad_state, |
| 664 root_delegated_quad_list[3]->shared_quad_state); | 674 root_delegated_quad_list.ElementAt(3)->shared_quad_state); |
| 665 EXPECT_EQ(*root_delegated_shared_quad_state, | 675 EXPECT_EQ(*root_delegated_shared_quad_state, |
| 666 root_delegated_quad_list[4]->shared_quad_state); | 676 root_delegated_quad_list.ElementAt(4)->shared_quad_state); |
| 667 | 677 |
| 668 EXPECT_NE(*contrib_delegated_shared_quad_state, | 678 EXPECT_NE(*contrib_delegated_shared_quad_state, |
| 669 *root_delegated_shared_quad_state); | 679 *root_delegated_shared_quad_state); |
| 670 } | 680 } |
| 671 | 681 |
| 672 protected: | 682 protected: |
| 673 LayerImpl* root_layer_; | 683 LayerImpl* root_layer_; |
| 674 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 684 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 675 bool root_delegated_render_pass_is_clipped_; | 685 bool root_delegated_render_pass_is_clipped_; |
| 676 float delegated_device_scale_factor_; | 686 float delegated_device_scale_factor_; |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1092 LayerTreeHostImpl::FrameData frame; | 1102 LayerTreeHostImpl::FrameData frame; |
| 1093 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1103 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1094 | 1104 |
| 1095 ASSERT_EQ(2u, frame.render_passes.size()); | 1105 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1096 const QuadList& contrib_delegated_quad_list = | 1106 const QuadList& contrib_delegated_quad_list = |
| 1097 frame.render_passes[0]->quad_list; | 1107 frame.render_passes[0]->quad_list; |
| 1098 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1108 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1099 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1109 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1100 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1110 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1101 const SharedQuadState* root_delegated_shared_quad_state = | 1111 const SharedQuadState* root_delegated_shared_quad_state = |
| 1102 root_delegated_quad_list[0]->shared_quad_state; | 1112 root_delegated_quad_list.front()->shared_quad_state; |
| 1103 | 1113 |
| 1104 // When the quads don't have a clip of their own, the clip rect is set to | 1114 // When the quads don't have a clip of their own, the clip rect is set to |
| 1105 // the drawable_content_rect of the delegated renderer layer. | 1115 // the drawable_content_rect of the delegated renderer layer. |
| 1106 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1116 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
| 1107 root_delegated_shared_quad_state->clip_rect.ToString()); | 1117 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1108 // Quads are clipped to the delegated renderer layer. | 1118 // Quads are clipped to the delegated renderer layer. |
| 1109 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1119 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1110 | 1120 |
| 1111 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1121 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1112 host_impl_->DidDrawAllLayers(frame); | 1122 host_impl_->DidDrawAllLayers(frame); |
| 1113 } | 1123 } |
| 1114 | 1124 |
| 1115 TEST_F(DelegatedRendererLayerImplTestClip, | 1125 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1116 QuadsClipped_LayerUnclipped_NoSurface) { | 1126 QuadsClipped_LayerUnclipped_NoSurface) { |
| 1117 root_delegated_render_pass_is_clipped_ = true; | 1127 root_delegated_render_pass_is_clipped_ = true; |
| 1118 clip_delegated_renderer_layer_ = false; | 1128 clip_delegated_renderer_layer_ = false; |
| 1119 SetUpTest(); | 1129 SetUpTest(); |
| 1120 | 1130 |
| 1121 LayerTreeHostImpl::FrameData frame; | 1131 LayerTreeHostImpl::FrameData frame; |
| 1122 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1132 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1123 | 1133 |
| 1124 ASSERT_EQ(2u, frame.render_passes.size()); | 1134 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1125 const QuadList& contrib_delegated_quad_list = | 1135 const QuadList& contrib_delegated_quad_list = |
| 1126 frame.render_passes[0]->quad_list; | 1136 frame.render_passes[0]->quad_list; |
| 1127 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1137 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1128 const QuadList& root_delegated_quad_list = | 1138 const QuadList& root_delegated_quad_list = |
| 1129 frame.render_passes[1]->quad_list; | 1139 frame.render_passes[1]->quad_list; |
| 1130 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1140 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1131 const SharedQuadState* root_delegated_shared_quad_state = | 1141 const SharedQuadState* root_delegated_shared_quad_state = |
| 1132 root_delegated_quad_list[0]->shared_quad_state; | 1142 root_delegated_quad_list.front()->shared_quad_state; |
| 1133 | 1143 |
| 1134 // When the quads have a clip of their own, it is used. | 1144 // When the quads have a clip of their own, it is used. |
| 1135 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1145 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
| 1136 root_delegated_shared_quad_state->clip_rect.ToString()); | 1146 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1137 // Quads came with a clip rect. | 1147 // Quads came with a clip rect. |
| 1138 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1148 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1139 | 1149 |
| 1140 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1150 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1141 host_impl_->DidDrawAllLayers(frame); | 1151 host_impl_->DidDrawAllLayers(frame); |
| 1142 } | 1152 } |
| 1143 | 1153 |
| 1144 TEST_F(DelegatedRendererLayerImplTestClip, | 1154 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1145 QuadsUnclipped_LayerClipped_NoSurface) { | 1155 QuadsUnclipped_LayerClipped_NoSurface) { |
| 1146 root_delegated_render_pass_is_clipped_ = false; | 1156 root_delegated_render_pass_is_clipped_ = false; |
| 1147 clip_delegated_renderer_layer_ = true; | 1157 clip_delegated_renderer_layer_ = true; |
| 1148 SetUpTest(); | 1158 SetUpTest(); |
| 1149 | 1159 |
| 1150 LayerTreeHostImpl::FrameData frame; | 1160 LayerTreeHostImpl::FrameData frame; |
| 1151 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1161 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1152 | 1162 |
| 1153 ASSERT_EQ(2u, frame.render_passes.size()); | 1163 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1154 const QuadList& contrib_delegated_quad_list = | 1164 const QuadList& contrib_delegated_quad_list = |
| 1155 frame.render_passes[0]->quad_list; | 1165 frame.render_passes[0]->quad_list; |
| 1156 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1166 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1157 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1167 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1158 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1168 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1159 const SharedQuadState* root_delegated_shared_quad_state = | 1169 const SharedQuadState* root_delegated_shared_quad_state = |
| 1160 root_delegated_quad_list[0]->shared_quad_state; | 1170 root_delegated_quad_list.front()->shared_quad_state; |
| 1161 | 1171 |
| 1162 // When the quads don't have a clip of their own, the clip rect is set to | 1172 // When the quads don't have a clip of their own, the clip rect is set to |
| 1163 // the drawable_content_rect of the delegated renderer layer. When the layer | 1173 // the drawable_content_rect of the delegated renderer layer. When the layer |
| 1164 // is clipped, that should be seen in the quads' clip_rect. | 1174 // is clipped, that should be seen in the quads' clip_rect. |
| 1165 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1175 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
| 1166 root_delegated_shared_quad_state->clip_rect.ToString()); | 1176 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1167 // Quads are clipped to the delegated renderer layer. | 1177 // Quads are clipped to the delegated renderer layer. |
| 1168 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1178 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1169 | 1179 |
| 1170 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1180 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1171 host_impl_->DidDrawAllLayers(frame); | 1181 host_impl_->DidDrawAllLayers(frame); |
| 1172 } | 1182 } |
| 1173 | 1183 |
| 1174 TEST_F(DelegatedRendererLayerImplTestClip, | 1184 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1175 QuadsClipped_LayerClipped_NoSurface) { | 1185 QuadsClipped_LayerClipped_NoSurface) { |
| 1176 root_delegated_render_pass_is_clipped_ = true; | 1186 root_delegated_render_pass_is_clipped_ = true; |
| 1177 clip_delegated_renderer_layer_ = true; | 1187 clip_delegated_renderer_layer_ = true; |
| 1178 SetUpTest(); | 1188 SetUpTest(); |
| 1179 | 1189 |
| 1180 LayerTreeHostImpl::FrameData frame; | 1190 LayerTreeHostImpl::FrameData frame; |
| 1181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1191 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1182 | 1192 |
| 1183 ASSERT_EQ(2u, frame.render_passes.size()); | 1193 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1184 const QuadList& contrib_delegated_quad_list = | 1194 const QuadList& contrib_delegated_quad_list = |
| 1185 frame.render_passes[0]->quad_list; | 1195 frame.render_passes[0]->quad_list; |
| 1186 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1196 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1187 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1197 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1188 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1198 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1189 const SharedQuadState* root_delegated_shared_quad_state = | 1199 const SharedQuadState* root_delegated_shared_quad_state = |
| 1190 root_delegated_quad_list[0]->shared_quad_state; | 1200 root_delegated_quad_list.front()->shared_quad_state; |
| 1191 | 1201 |
| 1192 // When the quads have a clip of their own, it is used, but it is | 1202 // When the quads have a clip of their own, it is used, but it is |
| 1193 // combined with the clip rect of the delegated renderer layer. | 1203 // combined with the clip rect of the delegated renderer layer. |
| 1194 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), | 1204 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), |
| 1195 root_delegated_shared_quad_state->clip_rect.ToString()); | 1205 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1196 // Quads came with a clip rect. | 1206 // Quads came with a clip rect. |
| 1197 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1207 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1198 | 1208 |
| 1199 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1209 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1200 host_impl_->DidDrawAllLayers(frame); | 1210 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1211 LayerTreeHostImpl::FrameData frame; | 1221 LayerTreeHostImpl::FrameData frame; |
| 1212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1222 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1213 | 1223 |
| 1214 ASSERT_EQ(3u, frame.render_passes.size()); | 1224 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1215 const QuadList& contrib_delegated_quad_list = | 1225 const QuadList& contrib_delegated_quad_list = |
| 1216 frame.render_passes[0]->quad_list; | 1226 frame.render_passes[0]->quad_list; |
| 1217 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1227 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1218 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1228 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1219 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1229 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1220 const SharedQuadState* root_delegated_shared_quad_state = | 1230 const SharedQuadState* root_delegated_shared_quad_state = |
| 1221 root_delegated_quad_list[0]->shared_quad_state; | 1231 root_delegated_quad_list.front()->shared_quad_state; |
| 1222 | 1232 |
| 1223 // When the layer owns a surface, the quads don't need to be clipped | 1233 // When the layer owns a surface, the quads don't need to be clipped |
| 1224 // further than they already specify. If they aren't clipped, then their | 1234 // further than they already specify. If they aren't clipped, then their |
| 1225 // clip rect is ignored, and they are not set as clipped. | 1235 // clip rect is ignored, and they are not set as clipped. |
| 1226 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1236 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1227 | 1237 |
| 1228 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1238 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1229 host_impl_->DidDrawAllLayers(frame); | 1239 host_impl_->DidDrawAllLayers(frame); |
| 1230 } | 1240 } |
| 1231 | 1241 |
| 1232 TEST_F(DelegatedRendererLayerImplTestClip, | 1242 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1233 QuadsClipped_LayerUnclipped_Surface) { | 1243 QuadsClipped_LayerUnclipped_Surface) { |
| 1234 root_delegated_render_pass_is_clipped_ = true; | 1244 root_delegated_render_pass_is_clipped_ = true; |
| 1235 clip_delegated_renderer_layer_ = false; | 1245 clip_delegated_renderer_layer_ = false; |
| 1236 SetUpTest(); | 1246 SetUpTest(); |
| 1237 | 1247 |
| 1238 delegated_renderer_layer_->SetForceRenderSurface(true); | 1248 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1239 | 1249 |
| 1240 LayerTreeHostImpl::FrameData frame; | 1250 LayerTreeHostImpl::FrameData frame; |
| 1241 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1251 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1242 | 1252 |
| 1243 ASSERT_EQ(3u, frame.render_passes.size()); | 1253 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1244 const QuadList& contrib_delegated_quad_list = | 1254 const QuadList& contrib_delegated_quad_list = |
| 1245 frame.render_passes[0]->quad_list; | 1255 frame.render_passes[0]->quad_list; |
| 1246 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1256 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1247 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1257 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1248 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1258 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1249 const SharedQuadState* root_delegated_shared_quad_state = | 1259 const SharedQuadState* root_delegated_shared_quad_state = |
| 1250 root_delegated_quad_list[0]->shared_quad_state; | 1260 root_delegated_quad_list.front()->shared_quad_state; |
| 1251 | 1261 |
| 1252 // When the quads have a clip of their own, it is used. | 1262 // When the quads have a clip of their own, it is used. |
| 1253 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1263 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1254 root_delegated_shared_quad_state->clip_rect.ToString()); | 1264 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1255 // Quads came with a clip rect. | 1265 // Quads came with a clip rect. |
| 1256 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1266 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1257 | 1267 |
| 1258 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1268 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1259 host_impl_->DidDrawAllLayers(frame); | 1269 host_impl_->DidDrawAllLayers(frame); |
| 1260 } | 1270 } |
| 1261 | 1271 |
| 1262 TEST_F(DelegatedRendererLayerImplTestClip, | 1272 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1263 QuadsUnclipped_LayerClipped_Surface) { | 1273 QuadsUnclipped_LayerClipped_Surface) { |
| 1264 root_delegated_render_pass_is_clipped_ = false; | 1274 root_delegated_render_pass_is_clipped_ = false; |
| 1265 clip_delegated_renderer_layer_ = true; | 1275 clip_delegated_renderer_layer_ = true; |
| 1266 SetUpTest(); | 1276 SetUpTest(); |
| 1267 | 1277 |
| 1268 delegated_renderer_layer_->SetForceRenderSurface(true); | 1278 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1269 | 1279 |
| 1270 LayerTreeHostImpl::FrameData frame; | 1280 LayerTreeHostImpl::FrameData frame; |
| 1271 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1281 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1272 | 1282 |
| 1273 ASSERT_EQ(3u, frame.render_passes.size()); | 1283 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1274 const QuadList& contrib_delegated_quad_list = | 1284 const QuadList& contrib_delegated_quad_list = |
| 1275 frame.render_passes[0]->quad_list; | 1285 frame.render_passes[0]->quad_list; |
| 1276 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1286 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1277 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1287 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1278 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1288 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1279 const SharedQuadState* root_delegated_shared_quad_state = | 1289 const SharedQuadState* root_delegated_shared_quad_state = |
| 1280 root_delegated_quad_list[0]->shared_quad_state; | 1290 root_delegated_quad_list.front()->shared_quad_state; |
| 1281 | 1291 |
| 1282 // When the layer owns a surface, the quads don't need to be clipped | 1292 // When the layer owns a surface, the quads don't need to be clipped |
| 1283 // further than they already specify. If they aren't clipped, then their | 1293 // further than they already specify. If they aren't clipped, then their |
| 1284 // clip rect is ignored, and they are not set as clipped. | 1294 // clip rect is ignored, and they are not set as clipped. |
| 1285 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1295 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1286 | 1296 |
| 1287 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1297 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1288 host_impl_->DidDrawAllLayers(frame); | 1298 host_impl_->DidDrawAllLayers(frame); |
| 1289 } | 1299 } |
| 1290 | 1300 |
| 1291 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1301 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1292 root_delegated_render_pass_is_clipped_ = true; | 1302 root_delegated_render_pass_is_clipped_ = true; |
| 1293 clip_delegated_renderer_layer_ = true; | 1303 clip_delegated_renderer_layer_ = true; |
| 1294 SetUpTest(); | 1304 SetUpTest(); |
| 1295 | 1305 |
| 1296 delegated_renderer_layer_->SetForceRenderSurface(true); | 1306 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1297 | 1307 |
| 1298 LayerTreeHostImpl::FrameData frame; | 1308 LayerTreeHostImpl::FrameData frame; |
| 1299 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1309 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1300 | 1310 |
| 1301 ASSERT_EQ(3u, frame.render_passes.size()); | 1311 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1302 const QuadList& contrib_delegated_quad_list = | 1312 const QuadList& contrib_delegated_quad_list = |
| 1303 frame.render_passes[0]->quad_list; | 1313 frame.render_passes[0]->quad_list; |
| 1304 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1314 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1305 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1315 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1306 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1316 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1307 const SharedQuadState* root_delegated_shared_quad_state = | 1317 const SharedQuadState* root_delegated_shared_quad_state = |
| 1308 root_delegated_quad_list[0]->shared_quad_state; | 1318 root_delegated_quad_list.front()->shared_quad_state; |
| 1309 | 1319 |
| 1310 // When the quads have a clip of their own, it is used, but it is | 1320 // When the quads have a clip of their own, it is used, but it is |
| 1311 // combined with the clip rect of the delegated renderer layer. If the | 1321 // combined with the clip rect of the delegated renderer layer. If the |
| 1312 // layer owns a surface, then it does not have a clip rect of its own. | 1322 // layer owns a surface, then it does not have a clip rect of its own. |
| 1313 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1323 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1314 root_delegated_shared_quad_state->clip_rect.ToString()); | 1324 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1315 // Quads came with a clip rect. | 1325 // Quads came with a clip rect. |
| 1316 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1326 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1317 | 1327 |
| 1318 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1328 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1358 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 1368 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 1359 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 1369 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
| 1360 | 1370 |
| 1361 LayerTreeHostImpl::FrameData frame; | 1371 LayerTreeHostImpl::FrameData frame; |
| 1362 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1372 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1363 | 1373 |
| 1364 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1374 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
| 1365 ASSERT_EQ(1u, frame.render_passes.size()); | 1375 ASSERT_EQ(1u, frame.render_passes.size()); |
| 1366 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1376 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 1367 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1377 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 1368 frame.render_passes[0]->quad_list[0]->material); | 1378 frame.render_passes[0]->quad_list.front()->material); |
| 1369 | 1379 |
| 1370 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1380 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1371 host_impl_->DidDrawAllLayers(frame); | 1381 host_impl_->DidDrawAllLayers(frame); |
| 1372 } | 1382 } |
| 1373 | 1383 |
| 1374 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { | 1384 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { |
| 1375 gfx::Size layer_size(1000, 1000); | 1385 gfx::Size layer_size(1000, 1000); |
| 1376 gfx::Size viewport_size(1000, 1000); | 1386 gfx::Size viewport_size(1000, 1000); |
| 1377 gfx::Rect quad_screen_rect(211, 300, 400, 500); | 1387 gfx::Rect quad_screen_rect(211, 300, 400, 500); |
| 1378 | 1388 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1415 SCOPED_TRACE("No occlusion"); | 1425 SCOPED_TRACE("No occlusion"); |
| 1416 gfx::Rect occluded; | 1426 gfx::Rect occluded; |
| 1417 | 1427 |
| 1418 { | 1428 { |
| 1419 SCOPED_TRACE("Root render pass"); | 1429 SCOPED_TRACE("Root render pass"); |
| 1420 impl.AppendQuadsForPassWithOcclusion( | 1430 impl.AppendQuadsForPassWithOcclusion( |
| 1421 delegated_renderer_layer_impl, pass1_id, occluded); | 1431 delegated_renderer_layer_impl, pass1_id, occluded); |
| 1422 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), | 1432 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), |
| 1423 quad_screen_rect); | 1433 quad_screen_rect); |
| 1424 ASSERT_EQ(1u, impl.quad_list().size()); | 1434 ASSERT_EQ(1u, impl.quad_list().size()); |
| 1425 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list()[0]->material); | 1435 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list().front()->material); |
| 1426 } | 1436 } |
| 1427 { | 1437 { |
| 1428 SCOPED_TRACE("Contributing render pass"); | 1438 SCOPED_TRACE("Contributing render pass"); |
| 1429 impl.AppendQuadsForPassWithOcclusion( | 1439 impl.AppendQuadsForPassWithOcclusion( |
| 1430 delegated_renderer_layer_impl, pass2_id, occluded); | 1440 delegated_renderer_layer_impl, pass2_id, occluded); |
| 1431 LayerTestCommon::VerifyQuadsExactlyCoverRect( | 1441 LayerTestCommon::VerifyQuadsExactlyCoverRect( |
| 1432 impl.quad_list(), gfx::Rect(quad_screen_rect.size())); | 1442 impl.quad_list(), gfx::Rect(quad_screen_rect.size())); |
| 1433 ASSERT_EQ(1u, impl.quad_list().size()); | 1443 ASSERT_EQ(1u, impl.quad_list().size()); |
| 1434 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list()[0]->material); | 1444 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list().front()->material); |
| 1435 } | 1445 } |
| 1436 } | 1446 } |
| 1437 | 1447 |
| 1438 { | 1448 { |
| 1439 SCOPED_TRACE("Full occlusion"); | 1449 SCOPED_TRACE("Full occlusion"); |
| 1440 { | 1450 { |
| 1441 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect()); | 1451 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect()); |
| 1442 | 1452 |
| 1443 SCOPED_TRACE("Root render pass"); | 1453 SCOPED_TRACE("Root render pass"); |
| 1444 impl.AppendQuadsForPassWithOcclusion( | 1454 impl.AppendQuadsForPassWithOcclusion( |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1489 impl.quad_list(), | 1499 impl.quad_list(), |
| 1490 occlusion_in_target_of_delegated_quad, | 1500 occlusion_in_target_of_delegated_quad, |
| 1491 &partially_occluded_count); | 1501 &partially_occluded_count); |
| 1492 // The layer outputs one quad, which is partially occluded. | 1502 // The layer outputs one quad, which is partially occluded. |
| 1493 EXPECT_EQ(1u, impl.quad_list().size()); | 1503 EXPECT_EQ(1u, impl.quad_list().size()); |
| 1494 EXPECT_EQ(1u, partially_occluded_count); | 1504 EXPECT_EQ(1u, partially_occluded_count); |
| 1495 // The quad in the contributing surface is at (211,300) in the root. | 1505 // The quad in the contributing surface is at (211,300) in the root. |
| 1496 // The occlusion extends to 500 in the x-axis, pushing the left of the | 1506 // The occlusion extends to 500 in the x-axis, pushing the left of the |
| 1497 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. | 1507 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. |
| 1498 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), | 1508 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), |
| 1499 impl.quad_list()[0]->visible_rect.ToString()); | 1509 impl.quad_list().front()->visible_rect.ToString()); |
| 1500 } | 1510 } |
| 1501 { | 1511 { |
| 1502 gfx::Rect occlusion_in_root_target(0, 0, 500, 1000); | 1512 gfx::Rect occlusion_in_root_target(0, 0, 500, 1000); |
| 1503 // Move the occlusion to where it is in the contributing surface. | 1513 // Move the occlusion to where it is in the contributing surface. |
| 1504 gfx::Rect occlusion_in_target_of_delegated_quad = | 1514 gfx::Rect occlusion_in_target_of_delegated_quad = |
| 1505 occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin(); | 1515 occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin(); |
| 1506 | 1516 |
| 1507 SCOPED_TRACE("Contributing render pass with transformed root"); | 1517 SCOPED_TRACE("Contributing render pass with transformed root"); |
| 1508 | 1518 |
| 1509 gfx::Transform layer_transform; | 1519 gfx::Transform layer_transform; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1521 impl.quad_list(), | 1531 impl.quad_list(), |
| 1522 occlusion_in_target_of_delegated_quad, | 1532 occlusion_in_target_of_delegated_quad, |
| 1523 &partially_occluded_count); | 1533 &partially_occluded_count); |
| 1524 // The layer outputs one quad, which is partially occluded. | 1534 // The layer outputs one quad, which is partially occluded. |
| 1525 EXPECT_EQ(1u, impl.quad_list().size()); | 1535 EXPECT_EQ(1u, impl.quad_list().size()); |
| 1526 EXPECT_EQ(1u, partially_occluded_count); | 1536 EXPECT_EQ(1u, partially_occluded_count); |
| 1527 // The quad in the contributing surface is at (222,300) in the transformed | 1537 // The quad in the contributing surface is at (222,300) in the transformed |
| 1528 // root. The occlusion extends to 500 in the x-axis, pushing the left of | 1538 // root. The occlusion extends to 500 in the x-axis, pushing the left of |
| 1529 // the visible part of the quad to 500 - 222 = 300 - 22 inside the quad. | 1539 // the visible part of the quad to 500 - 222 = 300 - 22 inside the quad. |
| 1530 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(), | 1540 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(), |
| 1531 impl.quad_list()[0]->visible_rect.ToString()); | 1541 impl.quad_list().front()->visible_rect.ToString()); |
| 1532 } | 1542 } |
| 1533 } | 1543 } |
| 1534 } | 1544 } |
| 1535 | 1545 |
| 1536 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) { | 1546 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) { |
| 1537 gfx::Size layer_size(1000, 1000); | 1547 gfx::Size layer_size(1000, 1000); |
| 1538 | 1548 |
| 1539 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl = | 1549 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl = |
| 1540 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5); | 1550 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5); |
| 1541 delegated_renderer_layer_impl->SetBounds(layer_size); | 1551 delegated_renderer_layer_impl->SetBounds(layer_size); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1556 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1566 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
| 1557 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1567 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
| 1558 | 1568 |
| 1559 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1569 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
| 1560 | 1570 |
| 1561 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1571 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
| 1562 } | 1572 } |
| 1563 | 1573 |
| 1564 } // namespace | 1574 } // namespace |
| 1565 } // namespace cc | 1575 } // namespace cc |
| OLD | NEW |