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