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 |