| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/delegated_renderer_layer_impl.h" | 5 #include "cc/delegated_renderer_layer_impl.h" |
| 6 | 6 |
| 7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
| 8 #include "cc/layer_tree_host_impl.h" | 8 #include "cc/layer_tree_host_impl.h" |
| 9 #include "cc/quad_sink.h" | 9 #include "cc/quad_sink.h" |
| 10 #include "cc/render_pass_draw_quad.h" | 10 #include "cc/render_pass_draw_quad.h" |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 ASSERT_EQ(5u, frame.renderPasses.size()); | 202 ASSERT_EQ(5u, frame.renderPasses.size()); |
| 203 | 203 |
| 204 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 204 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
| 205 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 205 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
| 206 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 206 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
| 207 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 207 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
| 208 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 208 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
| 209 | 209 |
| 210 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 210 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
| 211 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 211 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 212 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect()); | 212 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); |
| 213 | 213 |
| 214 // Verify it added the right quads. | 214 // Verify it added the right quads. |
| 215 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 215 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
| 216 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
rect()); | 216 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
rect); |
| 217 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
rect()); | 217 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
rect); |
| 218 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 218 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 219 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect()); | 219 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); |
| 220 } | 220 } |
| 221 | 221 |
| 222 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) | 222 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) |
| 223 { | 223 { |
| 224 LayerTreeHostImpl::FrameData frame; | 224 LayerTreeHostImpl::FrameData frame; |
| 225 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 225 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 226 m_hostImpl->drawLayers(frame); | 226 m_hostImpl->drawLayers(frame); |
| 227 m_hostImpl->didDrawAllLayers(frame); | 227 m_hostImpl->didDrawAllLayers(frame); |
| 228 | 228 |
| 229 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 229 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
| 230 ASSERT_EQ(5u, frame.renderPasses.size()); | 230 ASSERT_EQ(5u, frame.renderPasses.size()); |
| 231 | 231 |
| 232 // The layer's target is the RenderPass from m_layerAfter. | 232 // The layer's target is the RenderPass from m_layerAfter. |
| 233 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); | 233 EXPECT_EQ(RenderPass::Id(3, 0), frame.renderPasses[3]->id()); |
| 234 | 234 |
| 235 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 235 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
| 236 // The m_layerAfter also adds one quad. | 236 // The m_layerAfter also adds one quad. |
| 237 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); | 237 ASSERT_EQ(2u, frame.renderPasses[3]->quadList().size()); |
| 238 | 238 |
| 239 // Verify it added the right quads. | 239 // Verify it added the right quads. |
| 240 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
rect()); | 240 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
rect); |
| 241 | 241 |
| 242 // Its target layer should have a quad as well. | 242 // Its target layer should have a quad as well. |
| 243 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]
->rect()); | 243 EXPECT_RECT_EQ(gfx::Rect(0, 0, 15, 15), frame.renderPasses[3]->quadList()[1]
->rect); |
| 244 } | 244 } |
| 245 | 245 |
| 246 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) | 246 TEST_F(DelegatedRendererLayerImplTestSimple, QuadsFromRootRenderPassAreModifiedF
orTheTarget) |
| 247 { | 247 { |
| 248 LayerTreeHostImpl::FrameData frame; | 248 LayerTreeHostImpl::FrameData frame; |
| 249 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 249 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 250 m_hostImpl->drawLayers(frame); | 250 m_hostImpl->drawLayers(frame); |
| 251 m_hostImpl->didDrawAllLayers(frame); | 251 m_hostImpl->didDrawAllLayers(frame); |
| 252 | 252 |
| 253 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. | 253 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes. |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 ASSERT_EQ(6u, frame.renderPasses.size()); | 318 ASSERT_EQ(6u, frame.renderPasses.size()); |
| 319 | 319 |
| 320 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. | 320 // The DelegatedRendererLayer should have added its contributing RenderPasse
s to the frame. |
| 321 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); | 321 EXPECT_EQ(4, frame.renderPasses[1]->id().layerId); |
| 322 EXPECT_EQ(1, frame.renderPasses[1]->id().index); | 322 EXPECT_EQ(1, frame.renderPasses[1]->id().index); |
| 323 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); | 323 EXPECT_EQ(4, frame.renderPasses[2]->id().layerId); |
| 324 EXPECT_EQ(2, frame.renderPasses[2]->id().index); | 324 EXPECT_EQ(2, frame.renderPasses[2]->id().index); |
| 325 | 325 |
| 326 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. | 326 // The DelegatedRendererLayer should have added copies of its quads to contr
ibuting RenderPasses. |
| 327 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 327 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 328 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect()); | 328 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); |
| 329 | 329 |
| 330 // Verify it added the right quads. | 330 // Verify it added the right quads. |
| 331 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); | 331 ASSERT_EQ(2u, frame.renderPasses[2]->quadList().size()); |
| 332 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
rect()); | 332 EXPECT_RECT_EQ(gfx::Rect(0, 0, 7, 7), frame.renderPasses[2]->quadList()[0]->
rect); |
| 333 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
rect()); | 333 EXPECT_RECT_EQ(gfx::Rect(6, 6, 6, 6), frame.renderPasses[2]->quadList()[1]->
rect); |
| 334 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); | 334 ASSERT_EQ(1u, frame.renderPasses[1]->quadList().size()); |
| 335 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect()); | 335 EXPECT_RECT_EQ(gfx::Rect(0, 0, 6, 6), frame.renderPasses[1]->quadList()[0]->
rect); |
| 336 } | 336 } |
| 337 | 337 |
| 338 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) | 338 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) |
| 339 { | 339 { |
| 340 LayerTreeHostImpl::FrameData frame; | 340 LayerTreeHostImpl::FrameData frame; |
| 341 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 341 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 342 m_hostImpl->drawLayers(frame); | 342 m_hostImpl->drawLayers(frame); |
| 343 m_hostImpl->didDrawAllLayers(frame); | 343 m_hostImpl->didDrawAllLayers(frame); |
| 344 | 344 |
| 345 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 345 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
| 346 ASSERT_EQ(6u, frame.renderPasses.size()); | 346 ASSERT_EQ(6u, frame.renderPasses.size()); |
| 347 | 347 |
| 348 // The layer's target is the RenderPass owned by itself. | 348 // The layer's target is the RenderPass owned by itself. |
| 349 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); | 349 EXPECT_EQ(RenderPass::Id(4, 0), frame.renderPasses[3]->id()); |
| 350 | 350 |
| 351 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. | 351 // The DelegatedRendererLayer should have added copies of quads in its root
RenderPass to its target RenderPass. |
| 352 // The m_layerAfter also adds one quad. | 352 // The m_layerAfter also adds one quad. |
| 353 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); | 353 ASSERT_EQ(1u, frame.renderPasses[3]->quadList().size()); |
| 354 | 354 |
| 355 // Verify it added the right quads. | 355 // Verify it added the right quads. |
| 356 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
rect()); | 356 EXPECT_RECT_EQ(gfx::Rect(7, 7, 7, 7), frame.renderPasses[3]->quadList()[0]->
rect); |
| 357 } | 357 } |
| 358 | 358 |
| 359 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) | 359 TEST_F(DelegatedRendererLayerImplTestOwnSurface, QuadsFromRootRenderPassAreNotMo
difiedForTheTarget) |
| 360 { | 360 { |
| 361 LayerTreeHostImpl::FrameData frame; | 361 LayerTreeHostImpl::FrameData frame; |
| 362 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 362 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 363 m_hostImpl->drawLayers(frame); | 363 m_hostImpl->drawLayers(frame); |
| 364 m_hostImpl->didDrawAllLayers(frame); | 364 m_hostImpl->didDrawAllLayers(frame); |
| 365 | 365 |
| 366 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. | 366 // Each non-DelegatedRendererLayer added one RenderPass. The DelegatedRender
erLayer added two contributing passes and its owned surface added one pass. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 m_hostImpl->didDrawAllLayers(frame); | 433 m_hostImpl->didDrawAllLayers(frame); |
| 434 | 434 |
| 435 ASSERT_EQ(1u, frame.renderPasses.size()); | 435 ASSERT_EQ(1u, frame.renderPasses.size()); |
| 436 EXPECT_EQ(1, frame.renderPasses[0]->id().layerId); | 436 EXPECT_EQ(1, frame.renderPasses[0]->id().layerId); |
| 437 EXPECT_EQ(0, frame.renderPasses[0]->id().index); | 437 EXPECT_EQ(0, frame.renderPasses[0]->id().index); |
| 438 | 438 |
| 439 const QuadList& quadList = frame.renderPasses[0]->quadList(); | 439 const QuadList& quadList = frame.renderPasses[0]->quadList(); |
| 440 ASSERT_EQ(4u, quadList.size()); | 440 ASSERT_EQ(4u, quadList.size()); |
| 441 | 441 |
| 442 // All quads should share the same state. | 442 // All quads should share the same state. |
| 443 const SharedQuadState* sharedState = quadList[0]->shared_quad_state(); | 443 const SharedQuadState* sharedState = quadList[0]->shared_quad_state; |
| 444 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state()); | 444 EXPECT_EQ(sharedState, quadList[1]->shared_quad_state); |
| 445 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state()); | 445 EXPECT_EQ(sharedState, quadList[2]->shared_quad_state); |
| 446 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state()); | 446 EXPECT_EQ(sharedState, quadList[3]->shared_quad_state); |
| 447 | 447 |
| 448 // The state should be transformed only once. | 448 // The state should be transformed only once. |
| 449 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clippedRectInTarget); | 449 EXPECT_RECT_EQ(gfx::Rect(30, 30, 50, 50), sharedState->clippedRectInTarget); |
| 450 WebTransformationMatrix expected; | 450 WebTransformationMatrix expected; |
| 451 expected.translate(30, 30); | 451 expected.translate(30, 30); |
| 452 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); | 452 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, sharedState->quadTransform); |
| 453 } | 453 } |
| 454 | 454 |
| 455 } // namespace | 455 } // namespace |
| 456 } // namespace cc | 456 } // namespace cc |
| OLD | NEW |