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 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 AddRenderPassQuad(pass3, pass2); | 170 AddRenderPassQuad(pass3, pass2); |
171 delegated_renderer_layer->SetFrameDataForRenderPasses( | 171 delegated_renderer_layer->SetFrameDataForRenderPasses( |
172 1.f, delegated_render_passes); | 172 1.f, delegated_render_passes); |
173 | 173 |
174 fake_delegated_renderer_layer_impl = delegated_renderer_layer.get(); | 174 fake_delegated_renderer_layer_impl = delegated_renderer_layer.get(); |
175 | 175 |
176 root_layer->AddChild(delegated_renderer_layer.Pass()); | 176 root_layer->AddChild(delegated_renderer_layer.Pass()); |
177 | 177 |
178 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 178 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
179 | 179 |
180 LayerTreeHostImpl::FrameData frame; | 180 FrameData frame; |
181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
182 | 182 |
183 // Root layer has one render pass, and delegated renderer layer has two | 183 // Root layer has one render pass, and delegated renderer layer has two |
184 // contributing render passes and its own render pass. | 184 // contributing render passes and its own render pass. |
185 ASSERT_EQ(4u, frame.render_passes.size()); | 185 ASSERT_EQ(4u, frame.render_passes.size()); |
186 | 186 |
187 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 187 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
188 host_impl_->DidDrawAllLayers(frame); | 188 host_impl_->DidDrawAllLayers(frame); |
189 } | 189 } |
190 { | 190 { |
191 // New frame makes delegated renderer layer loses its contributing render | 191 // New frame makes delegated renderer layer loses its contributing render |
192 // passes. | 192 // passes. |
193 RenderPassList delegated_render_passes; | 193 RenderPassList delegated_render_passes; |
194 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), | 194 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), |
195 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); | 195 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); |
196 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( | 196 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( |
197 1.f, delegated_render_passes); | 197 1.f, delegated_render_passes); |
198 | 198 |
199 // Force damage to redraw a new frame. | 199 // Force damage to redraw a new frame. |
200 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); | 200 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); |
201 | 201 |
202 LayerTreeHostImpl::FrameData frame; | 202 FrameData frame; |
203 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 203 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
204 | 204 |
205 // Each non-DelegatedRendererLayer added one RenderPass. The | 205 // Each non-DelegatedRendererLayer added one RenderPass. The |
206 // DelegatedRendererLayer added two contributing passes. | 206 // DelegatedRendererLayer added two contributing passes. |
207 ASSERT_EQ(1u, frame.render_passes.size()); | 207 ASSERT_EQ(1u, frame.render_passes.size()); |
208 | 208 |
209 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 209 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
210 host_impl_->DidDrawAllLayers(frame); | 210 host_impl_->DidDrawAllLayers(frame); |
211 } | 211 } |
212 } | 212 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 delegated_renderer_layer->SetFrameDataForRenderPasses( | 251 delegated_renderer_layer->SetFrameDataForRenderPasses( |
252 1.f, delegated_render_passes); | 252 1.f, delegated_render_passes); |
253 | 253 |
254 fake_delegated_renderer_layer_impl = delegated_renderer_layer.get(); | 254 fake_delegated_renderer_layer_impl = delegated_renderer_layer.get(); |
255 | 255 |
256 root_layer->AddChild(delegated_renderer_layer.Pass()); | 256 root_layer->AddChild(delegated_renderer_layer.Pass()); |
257 | 257 |
258 host_impl_->pending_tree()->SetRootLayer(root_layer.Pass()); | 258 host_impl_->pending_tree()->SetRootLayer(root_layer.Pass()); |
259 host_impl_->ActivateSyncTree(); | 259 host_impl_->ActivateSyncTree(); |
260 | 260 |
261 LayerTreeHostImpl::FrameData frame; | 261 FrameData frame; |
262 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 262 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
263 | 263 |
264 // Root layer has one render pass, and delegated renderer layer has two | 264 // Root layer has one render pass, and delegated renderer layer has two |
265 // contributing render passes and its own render pass. | 265 // contributing render passes and its own render pass. |
266 ASSERT_EQ(4u, frame.render_passes.size()); | 266 ASSERT_EQ(4u, frame.render_passes.size()); |
267 | 267 |
268 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 268 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
269 host_impl_->DidDrawAllLayers(frame); | 269 host_impl_->DidDrawAllLayers(frame); |
270 } | 270 } |
271 { | 271 { |
272 // Remove contributing render passes from the delegated renderer layer. | 272 // Remove contributing render passes from the delegated renderer layer. |
273 host_impl_->CreatePendingTree(); | 273 host_impl_->CreatePendingTree(); |
274 host_impl_->pending_tree()->set_needs_full_tree_sync(false); | 274 host_impl_->pending_tree()->set_needs_full_tree_sync(false); |
275 RenderPassList delegated_render_passes; | 275 RenderPassList delegated_render_passes; |
276 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), | 276 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), |
277 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); | 277 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); |
278 | 278 |
279 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( | 279 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( |
280 1.f, delegated_render_passes); | 280 1.f, delegated_render_passes); |
281 | 281 |
282 // Force damage to redraw a new frame. | 282 // Force damage to redraw a new frame. |
283 | 283 |
284 host_impl_->ActivateSyncTree(); | 284 host_impl_->ActivateSyncTree(); |
285 host_impl_->SetViewportDamage(gfx::Rect(100, 100)); | 285 host_impl_->SetViewportDamage(gfx::Rect(100, 100)); |
286 LayerTreeHostImpl::FrameData frame; | 286 FrameData frame; |
287 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 287 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
288 | 288 |
289 // Root layer has one render pass, and delegated renderer layer no longer | 289 // Root layer has one render pass, and delegated renderer layer no longer |
290 // has contributing render passes. | 290 // has contributing render passes. |
291 ASSERT_EQ(1u, frame.render_passes.size()); | 291 ASSERT_EQ(1u, frame.render_passes.size()); |
292 | 292 |
293 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 293 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
294 host_impl_->DidDrawAllLayers(frame); | 294 host_impl_->DidDrawAllLayers(frame); |
295 } | 295 } |
296 } | 296 } |
297 | 297 |
298 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { | 298 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { |
299 LayerTreeHostImpl::FrameData frame; | 299 FrameData frame; |
300 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 300 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
301 | 301 |
302 // Each non-DelegatedRendererLayer added one RenderPass. The | 302 // Each non-DelegatedRendererLayer added one RenderPass. The |
303 // DelegatedRendererLayer added two contributing passes. | 303 // DelegatedRendererLayer added two contributing passes. |
304 ASSERT_EQ(5u, frame.render_passes.size()); | 304 ASSERT_EQ(5u, frame.render_passes.size()); |
305 | 305 |
306 // The DelegatedRendererLayer should have added its contributing RenderPasses | 306 // The DelegatedRendererLayer should have added its contributing RenderPasses |
307 // to the frame. | 307 // to the frame. |
308 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 308 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
309 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 309 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
(...skipping 13 matching lines...) Expand all Loading... |
323 frame.render_passes[1]->output_rect.ToString()); | 323 frame.render_passes[1]->output_rect.ToString()); |
324 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 324 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
325 frame.render_passes[2]->output_rect.ToString()); | 325 frame.render_passes[2]->output_rect.ToString()); |
326 | 326 |
327 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 327 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
328 host_impl_->DidDrawAllLayers(frame); | 328 host_impl_->DidDrawAllLayers(frame); |
329 } | 329 } |
330 | 330 |
331 TEST_F(DelegatedRendererLayerImplTestSimple, | 331 TEST_F(DelegatedRendererLayerImplTestSimple, |
332 AddsQuadsToContributingRenderPasses) { | 332 AddsQuadsToContributingRenderPasses) { |
333 LayerTreeHostImpl::FrameData frame; | 333 FrameData frame; |
334 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 334 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
335 | 335 |
336 // Each non-DelegatedRendererLayer added one RenderPass. The | 336 // Each non-DelegatedRendererLayer added one RenderPass. The |
337 // DelegatedRendererLayer added two contributing passes. | 337 // DelegatedRendererLayer added two contributing passes. |
338 ASSERT_EQ(5u, frame.render_passes.size()); | 338 ASSERT_EQ(5u, frame.render_passes.size()); |
339 | 339 |
340 // The DelegatedRendererLayer should have added its contributing RenderPasses | 340 // The DelegatedRendererLayer should have added its contributing RenderPasses |
341 // to the frame. | 341 // to the frame. |
342 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 342 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
343 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 343 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
(...skipping 14 matching lines...) Expand all Loading... |
358 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); | 358 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
359 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 359 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
360 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 360 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
361 frame.render_passes[1]->quad_list.front()->rect.ToString()); | 361 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
362 | 362 |
363 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 363 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
364 host_impl_->DidDrawAllLayers(frame); | 364 host_impl_->DidDrawAllLayers(frame); |
365 } | 365 } |
366 | 366 |
367 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 367 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
368 LayerTreeHostImpl::FrameData frame; | 368 FrameData frame; |
369 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 369 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
370 | 370 |
371 // Each non-DelegatedRendererLayer added one RenderPass. The | 371 // Each non-DelegatedRendererLayer added one RenderPass. The |
372 // DelegatedRendererLayer added two contributing passes. | 372 // DelegatedRendererLayer added two contributing passes. |
373 ASSERT_EQ(5u, frame.render_passes.size()); | 373 ASSERT_EQ(5u, frame.render_passes.size()); |
374 | 374 |
375 // The layer's target is the RenderPass from layer_after_. | 375 // The layer's target is the RenderPass from layer_after_. |
376 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); | 376 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); |
377 | 377 |
378 // The DelegatedRendererLayer should have added copies of quads in its root | 378 // The DelegatedRendererLayer should have added copies of quads in its root |
379 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 379 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
380 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 380 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
381 | 381 |
382 // Verify it added the right quads. | 382 // Verify it added the right quads. |
383 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 383 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
384 frame.render_passes[3]->quad_list.front()->rect.ToString()); | 384 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
385 | 385 |
386 // Its target layer should have a quad as well. | 386 // Its target layer should have a quad as well. |
387 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 387 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
388 frame.render_passes[3]->quad_list.ElementAt(1)->rect.ToString()); | 388 frame.render_passes[3]->quad_list.ElementAt(1)->rect.ToString()); |
389 | 389 |
390 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 390 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
391 host_impl_->DidDrawAllLayers(frame); | 391 host_impl_->DidDrawAllLayers(frame); |
392 } | 392 } |
393 | 393 |
394 TEST_F(DelegatedRendererLayerImplTestSimple, | 394 TEST_F(DelegatedRendererLayerImplTestSimple, |
395 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 395 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
396 LayerTreeHostImpl::FrameData frame; | 396 FrameData frame; |
397 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 397 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
398 | 398 |
399 // Each non-DelegatedRendererLayer added one RenderPass. The | 399 // Each non-DelegatedRendererLayer added one RenderPass. The |
400 // DelegatedRendererLayer added two contributing passes. | 400 // DelegatedRendererLayer added two contributing passes. |
401 ASSERT_EQ(5u, frame.render_passes.size()); | 401 ASSERT_EQ(5u, frame.render_passes.size()); |
402 | 402 |
403 // The DelegatedRendererLayer is at position 3,3 compared to its target, and | 403 // The DelegatedRendererLayer is at position 3,3 compared to its target, and |
404 // has a translation transform of 1,1. So its root RenderPass' quads should | 404 // has a translation transform of 1,1. So its root RenderPass' quads should |
405 // all be transformed by that combined amount. | 405 // all be transformed by that combined amount. |
406 gfx::Transform transform; | 406 gfx::Transform transform; |
(...skipping 13 matching lines...) Expand all Loading... |
420 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 420 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
421 EXPECT_TRANSFORMATION_MATRIX_EQ( | 421 EXPECT_TRANSFORMATION_MATRIX_EQ( |
422 gfx::Transform(), | 422 gfx::Transform(), |
423 frame.render_passes[1]->quad_list.front()->quadTransform()); | 423 frame.render_passes[1]->quad_list.front()->quadTransform()); |
424 | 424 |
425 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 425 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
426 host_impl_->DidDrawAllLayers(frame); | 426 host_impl_->DidDrawAllLayers(frame); |
427 } | 427 } |
428 | 428 |
429 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 429 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
430 LayerTreeHostImpl::FrameData frame; | 430 FrameData frame; |
431 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 431 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
432 | 432 |
433 // The delegated layer has a surface between it and the root. | 433 // The delegated layer has a surface between it and the root. |
434 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); | 434 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); |
435 | 435 |
436 // Each non-DelegatedRendererLayer added one RenderPass. The | 436 // Each non-DelegatedRendererLayer added one RenderPass. The |
437 // DelegatedRendererLayer added two contributing passes. | 437 // DelegatedRendererLayer added two contributing passes. |
438 ASSERT_EQ(5u, frame.render_passes.size()); | 438 ASSERT_EQ(5u, frame.render_passes.size()); |
439 | 439 |
440 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all | 440 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all |
(...skipping 20 matching lines...) Expand all Loading... |
461 class DelegatedRendererLayerImplTestOwnSurface | 461 class DelegatedRendererLayerImplTestOwnSurface |
462 : public DelegatedRendererLayerImplTestSimple { | 462 : public DelegatedRendererLayerImplTestSimple { |
463 public: | 463 public: |
464 DelegatedRendererLayerImplTestOwnSurface() | 464 DelegatedRendererLayerImplTestOwnSurface() |
465 : DelegatedRendererLayerImplTestSimple() { | 465 : DelegatedRendererLayerImplTestSimple() { |
466 delegated_renderer_layer_->SetHasRenderSurface(true); | 466 delegated_renderer_layer_->SetHasRenderSurface(true); |
467 } | 467 } |
468 }; | 468 }; |
469 | 469 |
470 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 470 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
471 LayerTreeHostImpl::FrameData frame; | 471 FrameData frame; |
472 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 472 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
473 | 473 |
474 // Each non-DelegatedRendererLayer added one RenderPass. The | 474 // Each non-DelegatedRendererLayer added one RenderPass. The |
475 // DelegatedRendererLayer added two contributing passes and its owned surface | 475 // DelegatedRendererLayer added two contributing passes and its owned surface |
476 // added one pass. | 476 // added one pass. |
477 ASSERT_EQ(6u, frame.render_passes.size()); | 477 ASSERT_EQ(6u, frame.render_passes.size()); |
478 | 478 |
479 // The DelegatedRendererLayer should have added its contributing RenderPasses | 479 // The DelegatedRendererLayer should have added its contributing RenderPasses |
480 // to the frame. | 480 // to the frame. |
481 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 481 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
(...skipping 18 matching lines...) Expand all Loading... |
500 frame.render_passes[1]->output_rect.ToString()); | 500 frame.render_passes[1]->output_rect.ToString()); |
501 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 501 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
502 frame.render_passes[2]->output_rect.ToString()); | 502 frame.render_passes[2]->output_rect.ToString()); |
503 | 503 |
504 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 504 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
505 host_impl_->DidDrawAllLayers(frame); | 505 host_impl_->DidDrawAllLayers(frame); |
506 } | 506 } |
507 | 507 |
508 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 508 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
509 AddsQuadsToContributingRenderPasses) { | 509 AddsQuadsToContributingRenderPasses) { |
510 LayerTreeHostImpl::FrameData frame; | 510 FrameData frame; |
511 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 511 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
512 | 512 |
513 // Each non-DelegatedRendererLayer added one RenderPass. The | 513 // Each non-DelegatedRendererLayer added one RenderPass. The |
514 // DelegatedRendererLayer added two contributing passes and its owned surface | 514 // DelegatedRendererLayer added two contributing passes and its owned surface |
515 // added one pass. | 515 // added one pass. |
516 ASSERT_EQ(6u, frame.render_passes.size()); | 516 ASSERT_EQ(6u, frame.render_passes.size()); |
517 | 517 |
518 // The DelegatedRendererLayer should have added its contributing RenderPasses | 518 // The DelegatedRendererLayer should have added its contributing RenderPasses |
519 // to the frame. | 519 // to the frame. |
520 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 520 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
(...skipping 16 matching lines...) Expand all Loading... |
537 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); | 537 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
538 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 538 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
539 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 539 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
540 frame.render_passes[1]->quad_list.front()->rect.ToString()); | 540 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
541 | 541 |
542 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 542 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
543 host_impl_->DidDrawAllLayers(frame); | 543 host_impl_->DidDrawAllLayers(frame); |
544 } | 544 } |
545 | 545 |
546 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 546 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
547 LayerTreeHostImpl::FrameData frame; | 547 FrameData frame; |
548 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 548 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
549 | 549 |
550 // Each non-DelegatedRendererLayer added one RenderPass. The | 550 // Each non-DelegatedRendererLayer added one RenderPass. The |
551 // DelegatedRendererLayer added two contributing passes and its owned surface | 551 // DelegatedRendererLayer added two contributing passes and its owned surface |
552 // added one pass. | 552 // added one pass. |
553 ASSERT_EQ(6u, frame.render_passes.size()); | 553 ASSERT_EQ(6u, frame.render_passes.size()); |
554 | 554 |
555 // The layer's target is the RenderPass owned by itself. | 555 // The layer's target is the RenderPass owned by itself. |
556 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); | 556 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); |
557 | 557 |
558 // The DelegatedRendererLayer should have added copies of quads in its root | 558 // The DelegatedRendererLayer should have added copies of quads in its root |
559 // RenderPass to its target RenderPass. | 559 // RenderPass to its target RenderPass. |
560 // The layer_after also adds one quad. | 560 // The layer_after also adds one quad. |
561 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 561 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
562 | 562 |
563 // Verify it added the right quads. | 563 // Verify it added the right quads. |
564 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 564 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
565 frame.render_passes[3]->quad_list.front()->rect.ToString()); | 565 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
566 | 566 |
567 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 567 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
568 host_impl_->DidDrawAllLayers(frame); | 568 host_impl_->DidDrawAllLayers(frame); |
569 } | 569 } |
570 | 570 |
571 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 571 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
572 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 572 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
573 LayerTreeHostImpl::FrameData frame; | 573 FrameData frame; |
574 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 574 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
575 | 575 |
576 // Each non-DelegatedRendererLayer added one RenderPass. The | 576 // Each non-DelegatedRendererLayer added one RenderPass. The |
577 // DelegatedRendererLayer added two contributing passes and its owned surface | 577 // DelegatedRendererLayer added two contributing passes and its owned surface |
578 // added one pass. | 578 // added one pass. |
579 ASSERT_EQ(6u, frame.render_passes.size()); | 579 ASSERT_EQ(6u, frame.render_passes.size()); |
580 | 580 |
581 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 581 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
582 // RenderPass' quads do not need to be translated at all. | 582 // RenderPass' quads do not need to be translated at all. |
583 EXPECT_TRANSFORMATION_MATRIX_EQ( | 583 EXPECT_TRANSFORMATION_MATRIX_EQ( |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 delegated_device_scale_factor_, delegated_render_passes); | 740 delegated_device_scale_factor_, delegated_render_passes); |
741 | 741 |
742 root_layer_ = root_layer.get(); | 742 root_layer_ = root_layer.get(); |
743 delegated_renderer_layer_ = delegated_renderer_layer.get(); | 743 delegated_renderer_layer_ = delegated_renderer_layer.get(); |
744 | 744 |
745 root_layer->AddChild(delegated_renderer_layer.Pass()); | 745 root_layer->AddChild(delegated_renderer_layer.Pass()); |
746 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 746 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
747 } | 747 } |
748 | 748 |
749 void VerifyRenderPasses( | 749 void VerifyRenderPasses( |
750 const LayerTreeHostImpl::FrameData& frame, | 750 const FrameData& frame, |
751 size_t num_render_passes, | 751 size_t num_render_passes, |
752 const SharedQuadState** root_delegated_shared_quad_state, | 752 const SharedQuadState** root_delegated_shared_quad_state, |
753 const SharedQuadState** contrib_delegated_shared_quad_state) { | 753 const SharedQuadState** contrib_delegated_shared_quad_state) { |
754 ASSERT_EQ(num_render_passes, frame.render_passes.size()); | 754 ASSERT_EQ(num_render_passes, frame.render_passes.size()); |
755 // The contributing render pass in the DelegatedRendererLayer. | 755 // The contributing render pass in the DelegatedRendererLayer. |
756 EXPECT_EQ(2, frame.render_passes[0]->id.layer_id); | 756 EXPECT_EQ(2, frame.render_passes[0]->id.layer_id); |
757 EXPECT_EQ(1, frame.render_passes[0]->id.index); | 757 EXPECT_EQ(1, frame.render_passes[0]->id.index); |
758 // The root render pass. | 758 // The root render pass. |
759 EXPECT_EQ(1, frame.render_passes.back()->id.layer_id); | 759 EXPECT_EQ(1, frame.render_passes.back()->id.layer_id); |
760 EXPECT_EQ(0, frame.render_passes.back()->id.index); | 760 EXPECT_EQ(0, frame.render_passes.back()->id.index); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
792 LayerImpl* root_layer_; | 792 LayerImpl* root_layer_; |
793 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 793 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
794 bool root_delegated_render_pass_is_clipped_; | 794 bool root_delegated_render_pass_is_clipped_; |
795 float delegated_device_scale_factor_; | 795 float delegated_device_scale_factor_; |
796 }; | 796 }; |
797 | 797 |
798 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { | 798 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { |
799 root_delegated_render_pass_is_clipped_ = false; | 799 root_delegated_render_pass_is_clipped_ = false; |
800 SetUpTest(); | 800 SetUpTest(); |
801 | 801 |
802 LayerTreeHostImpl::FrameData frame; | 802 FrameData frame; |
803 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 803 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
804 | 804 |
805 const SharedQuadState* root_delegated_shared_quad_state = nullptr; | 805 const SharedQuadState* root_delegated_shared_quad_state = nullptr; |
806 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; | 806 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; |
807 VerifyRenderPasses( | 807 VerifyRenderPasses( |
808 frame, | 808 frame, |
809 2, | 809 2, |
810 &root_delegated_shared_quad_state, | 810 &root_delegated_shared_quad_state, |
811 &contrib_delegated_shared_quad_state); | 811 &contrib_delegated_shared_quad_state); |
812 | 812 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
847 contrib_delegated_shared_quad_state->content_to_target_transform); | 847 contrib_delegated_shared_quad_state->content_to_target_transform); |
848 | 848 |
849 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 849 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
850 host_impl_->DidDrawAllLayers(frame); | 850 host_impl_->DidDrawAllLayers(frame); |
851 } | 851 } |
852 | 852 |
853 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 853 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
854 root_delegated_render_pass_is_clipped_ = true; | 854 root_delegated_render_pass_is_clipped_ = true; |
855 SetUpTest(); | 855 SetUpTest(); |
856 | 856 |
857 LayerTreeHostImpl::FrameData frame; | 857 FrameData frame; |
858 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 858 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
859 | 859 |
860 const SharedQuadState* root_delegated_shared_quad_state = nullptr; | 860 const SharedQuadState* root_delegated_shared_quad_state = nullptr; |
861 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; | 861 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; |
862 VerifyRenderPasses( | 862 VerifyRenderPasses( |
863 frame, | 863 frame, |
864 2, | 864 2, |
865 &root_delegated_shared_quad_state, | 865 &root_delegated_shared_quad_state, |
866 &contrib_delegated_shared_quad_state); | 866 &contrib_delegated_shared_quad_state); |
867 | 867 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 908 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
909 host_impl_->DidDrawAllLayers(frame); | 909 host_impl_->DidDrawAllLayers(frame); |
910 } | 910 } |
911 | 911 |
912 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 912 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
913 root_delegated_render_pass_is_clipped_ = false; | 913 root_delegated_render_pass_is_clipped_ = false; |
914 SetUpTest(); | 914 SetUpTest(); |
915 | 915 |
916 delegated_renderer_layer_->SetHasRenderSurface(true); | 916 delegated_renderer_layer_->SetHasRenderSurface(true); |
917 | 917 |
918 LayerTreeHostImpl::FrameData frame; | 918 FrameData frame; |
919 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 919 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
920 | 920 |
921 const SharedQuadState* root_delegated_shared_quad_state = nullptr; | 921 const SharedQuadState* root_delegated_shared_quad_state = nullptr; |
922 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; | 922 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; |
923 VerifyRenderPasses( | 923 VerifyRenderPasses( |
924 frame, | 924 frame, |
925 3, | 925 3, |
926 &root_delegated_shared_quad_state, | 926 &root_delegated_shared_quad_state, |
927 &contrib_delegated_shared_quad_state); | 927 &contrib_delegated_shared_quad_state); |
928 | 928 |
(...skipping 28 matching lines...) Expand all Loading... |
957 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 957 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
958 host_impl_->DidDrawAllLayers(frame); | 958 host_impl_->DidDrawAllLayers(frame); |
959 } | 959 } |
960 | 960 |
961 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 961 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
962 root_delegated_render_pass_is_clipped_ = true; | 962 root_delegated_render_pass_is_clipped_ = true; |
963 SetUpTest(); | 963 SetUpTest(); |
964 | 964 |
965 delegated_renderer_layer_->SetHasRenderSurface(true); | 965 delegated_renderer_layer_->SetHasRenderSurface(true); |
966 | 966 |
967 LayerTreeHostImpl::FrameData frame; | 967 FrameData frame; |
968 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 968 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
969 | 969 |
970 const SharedQuadState* root_delegated_shared_quad_state = nullptr; | 970 const SharedQuadState* root_delegated_shared_quad_state = nullptr; |
971 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; | 971 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; |
972 VerifyRenderPasses( | 972 VerifyRenderPasses( |
973 frame, | 973 frame, |
974 3, | 974 3, |
975 &root_delegated_shared_quad_state, | 975 &root_delegated_shared_quad_state, |
976 &contrib_delegated_shared_quad_state); | 976 &contrib_delegated_shared_quad_state); |
977 | 977 |
(...skipping 27 matching lines...) Expand all Loading... |
1005 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1005 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1006 host_impl_->DidDrawAllLayers(frame); | 1006 host_impl_->DidDrawAllLayers(frame); |
1007 } | 1007 } |
1008 | 1008 |
1009 TEST_F(DelegatedRendererLayerImplTestTransform, MismatchedDeviceScaleFactor) { | 1009 TEST_F(DelegatedRendererLayerImplTestTransform, MismatchedDeviceScaleFactor) { |
1010 root_delegated_render_pass_is_clipped_ = true; | 1010 root_delegated_render_pass_is_clipped_ = true; |
1011 delegated_device_scale_factor_ = 1.3f; | 1011 delegated_device_scale_factor_ = 1.3f; |
1012 | 1012 |
1013 SetUpTest(); | 1013 SetUpTest(); |
1014 | 1014 |
1015 LayerTreeHostImpl::FrameData frame; | 1015 FrameData frame; |
1016 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1016 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1017 | 1017 |
1018 const SharedQuadState* root_delegated_shared_quad_state = nullptr; | 1018 const SharedQuadState* root_delegated_shared_quad_state = nullptr; |
1019 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; | 1019 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; |
1020 VerifyRenderPasses(frame, | 1020 VerifyRenderPasses(frame, |
1021 2, | 1021 2, |
1022 &root_delegated_shared_quad_state, | 1022 &root_delegated_shared_quad_state, |
1023 &contrib_delegated_shared_quad_state); | 1023 &contrib_delegated_shared_quad_state); |
1024 | 1024 |
1025 // The parent tree's device scale factor is 2.0, but the child has submitted a | 1025 // The parent tree's device scale factor is 2.0, but the child has submitted a |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1202 bool root_delegated_render_pass_is_clipped_; | 1202 bool root_delegated_render_pass_is_clipped_; |
1203 bool clip_delegated_renderer_layer_; | 1203 bool clip_delegated_renderer_layer_; |
1204 }; | 1204 }; |
1205 | 1205 |
1206 TEST_F(DelegatedRendererLayerImplTestClip, | 1206 TEST_F(DelegatedRendererLayerImplTestClip, |
1207 QuadsUnclipped_LayerUnclipped_NoSurface) { | 1207 QuadsUnclipped_LayerUnclipped_NoSurface) { |
1208 root_delegated_render_pass_is_clipped_ = false; | 1208 root_delegated_render_pass_is_clipped_ = false; |
1209 clip_delegated_renderer_layer_ = false; | 1209 clip_delegated_renderer_layer_ = false; |
1210 SetUpTest(); | 1210 SetUpTest(); |
1211 | 1211 |
1212 LayerTreeHostImpl::FrameData frame; | 1212 FrameData frame; |
1213 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1213 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1214 | 1214 |
1215 ASSERT_EQ(2u, frame.render_passes.size()); | 1215 ASSERT_EQ(2u, frame.render_passes.size()); |
1216 const QuadList& contrib_delegated_quad_list = | 1216 const QuadList& contrib_delegated_quad_list = |
1217 frame.render_passes[0]->quad_list; | 1217 frame.render_passes[0]->quad_list; |
1218 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1218 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1219 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1219 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1220 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1220 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1221 const SharedQuadState* root_delegated_shared_quad_state = | 1221 const SharedQuadState* root_delegated_shared_quad_state = |
1222 root_delegated_quad_list.front()->shared_quad_state; | 1222 root_delegated_quad_list.front()->shared_quad_state; |
1223 | 1223 |
1224 // When the quads don't have a clip of their own, the clip rect is set to | 1224 // When the quads don't have a clip of their own, the clip rect is set to |
1225 // the drawable_content_rect of the delegated renderer layer. | 1225 // the drawable_content_rect of the delegated renderer layer. |
1226 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1226 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
1227 root_delegated_shared_quad_state->clip_rect.ToString()); | 1227 root_delegated_shared_quad_state->clip_rect.ToString()); |
1228 // Quads are clipped to the delegated renderer layer. | 1228 // Quads are clipped to the delegated renderer layer. |
1229 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1229 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1230 | 1230 |
1231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1232 host_impl_->DidDrawAllLayers(frame); | 1232 host_impl_->DidDrawAllLayers(frame); |
1233 } | 1233 } |
1234 | 1234 |
1235 TEST_F(DelegatedRendererLayerImplTestClip, | 1235 TEST_F(DelegatedRendererLayerImplTestClip, |
1236 QuadsClipped_LayerUnclipped_NoSurface) { | 1236 QuadsClipped_LayerUnclipped_NoSurface) { |
1237 root_delegated_render_pass_is_clipped_ = true; | 1237 root_delegated_render_pass_is_clipped_ = true; |
1238 clip_delegated_renderer_layer_ = false; | 1238 clip_delegated_renderer_layer_ = false; |
1239 SetUpTest(); | 1239 SetUpTest(); |
1240 | 1240 |
1241 LayerTreeHostImpl::FrameData frame; | 1241 FrameData frame; |
1242 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1242 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1243 | 1243 |
1244 ASSERT_EQ(2u, frame.render_passes.size()); | 1244 ASSERT_EQ(2u, frame.render_passes.size()); |
1245 const QuadList& contrib_delegated_quad_list = | 1245 const QuadList& contrib_delegated_quad_list = |
1246 frame.render_passes[0]->quad_list; | 1246 frame.render_passes[0]->quad_list; |
1247 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1247 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1248 const QuadList& root_delegated_quad_list = | 1248 const QuadList& root_delegated_quad_list = |
1249 frame.render_passes[1]->quad_list; | 1249 frame.render_passes[1]->quad_list; |
1250 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1250 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1251 const SharedQuadState* root_delegated_shared_quad_state = | 1251 const SharedQuadState* root_delegated_shared_quad_state = |
1252 root_delegated_quad_list.front()->shared_quad_state; | 1252 root_delegated_quad_list.front()->shared_quad_state; |
1253 | 1253 |
1254 // When the quads have a clip of their own, it is used. | 1254 // When the quads have a clip of their own, it is used. |
1255 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1255 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
1256 root_delegated_shared_quad_state->clip_rect.ToString()); | 1256 root_delegated_shared_quad_state->clip_rect.ToString()); |
1257 // Quads came with a clip rect. | 1257 // Quads came with a clip rect. |
1258 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1258 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1259 | 1259 |
1260 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1260 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1261 host_impl_->DidDrawAllLayers(frame); | 1261 host_impl_->DidDrawAllLayers(frame); |
1262 } | 1262 } |
1263 | 1263 |
1264 TEST_F(DelegatedRendererLayerImplTestClip, | 1264 TEST_F(DelegatedRendererLayerImplTestClip, |
1265 QuadsUnclipped_LayerClipped_NoSurface) { | 1265 QuadsUnclipped_LayerClipped_NoSurface) { |
1266 root_delegated_render_pass_is_clipped_ = false; | 1266 root_delegated_render_pass_is_clipped_ = false; |
1267 clip_delegated_renderer_layer_ = true; | 1267 clip_delegated_renderer_layer_ = true; |
1268 SetUpTest(); | 1268 SetUpTest(); |
1269 | 1269 |
1270 LayerTreeHostImpl::FrameData frame; | 1270 FrameData frame; |
1271 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1271 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1272 | 1272 |
1273 ASSERT_EQ(2u, frame.render_passes.size()); | 1273 ASSERT_EQ(2u, frame.render_passes.size()); |
1274 const QuadList& contrib_delegated_quad_list = | 1274 const QuadList& contrib_delegated_quad_list = |
1275 frame.render_passes[0]->quad_list; | 1275 frame.render_passes[0]->quad_list; |
1276 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1276 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1277 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1277 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1278 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1278 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1279 const SharedQuadState* root_delegated_shared_quad_state = | 1279 const SharedQuadState* root_delegated_shared_quad_state = |
1280 root_delegated_quad_list.front()->shared_quad_state; | 1280 root_delegated_quad_list.front()->shared_quad_state; |
1281 | 1281 |
1282 // When the quads don't have a clip of their own, the clip rect is set to | 1282 // When the quads don't have a clip of their own, the clip rect is set to |
1283 // the drawable_content_rect of the delegated renderer layer. When the layer | 1283 // the drawable_content_rect of the delegated renderer layer. When the layer |
1284 // is clipped, that should be seen in the quads' clip_rect. | 1284 // is clipped, that should be seen in the quads' clip_rect. |
1285 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1285 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
1286 root_delegated_shared_quad_state->clip_rect.ToString()); | 1286 root_delegated_shared_quad_state->clip_rect.ToString()); |
1287 // Quads are clipped to the delegated renderer layer. | 1287 // Quads are clipped to the delegated renderer layer. |
1288 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1288 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1289 | 1289 |
1290 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1290 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1291 host_impl_->DidDrawAllLayers(frame); | 1291 host_impl_->DidDrawAllLayers(frame); |
1292 } | 1292 } |
1293 | 1293 |
1294 TEST_F(DelegatedRendererLayerImplTestClip, | 1294 TEST_F(DelegatedRendererLayerImplTestClip, |
1295 QuadsClipped_LayerClipped_NoSurface) { | 1295 QuadsClipped_LayerClipped_NoSurface) { |
1296 root_delegated_render_pass_is_clipped_ = true; | 1296 root_delegated_render_pass_is_clipped_ = true; |
1297 clip_delegated_renderer_layer_ = true; | 1297 clip_delegated_renderer_layer_ = true; |
1298 SetUpTest(); | 1298 SetUpTest(); |
1299 | 1299 |
1300 LayerTreeHostImpl::FrameData frame; | 1300 FrameData frame; |
1301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1302 | 1302 |
1303 ASSERT_EQ(2u, frame.render_passes.size()); | 1303 ASSERT_EQ(2u, frame.render_passes.size()); |
1304 const QuadList& contrib_delegated_quad_list = | 1304 const QuadList& contrib_delegated_quad_list = |
1305 frame.render_passes[0]->quad_list; | 1305 frame.render_passes[0]->quad_list; |
1306 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1306 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1307 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1307 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1308 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1308 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1309 const SharedQuadState* root_delegated_shared_quad_state = | 1309 const SharedQuadState* root_delegated_shared_quad_state = |
1310 root_delegated_quad_list.front()->shared_quad_state; | 1310 root_delegated_quad_list.front()->shared_quad_state; |
(...skipping 10 matching lines...) Expand all Loading... |
1321 } | 1321 } |
1322 | 1322 |
1323 TEST_F(DelegatedRendererLayerImplTestClip, | 1323 TEST_F(DelegatedRendererLayerImplTestClip, |
1324 QuadsUnclipped_LayerUnclipped_Surface) { | 1324 QuadsUnclipped_LayerUnclipped_Surface) { |
1325 root_delegated_render_pass_is_clipped_ = false; | 1325 root_delegated_render_pass_is_clipped_ = false; |
1326 clip_delegated_renderer_layer_ = false; | 1326 clip_delegated_renderer_layer_ = false; |
1327 SetUpTest(); | 1327 SetUpTest(); |
1328 | 1328 |
1329 delegated_renderer_layer_->SetHasRenderSurface(true); | 1329 delegated_renderer_layer_->SetHasRenderSurface(true); |
1330 | 1330 |
1331 LayerTreeHostImpl::FrameData frame; | 1331 FrameData frame; |
1332 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1332 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1333 | 1333 |
1334 ASSERT_EQ(3u, frame.render_passes.size()); | 1334 ASSERT_EQ(3u, frame.render_passes.size()); |
1335 const QuadList& contrib_delegated_quad_list = | 1335 const QuadList& contrib_delegated_quad_list = |
1336 frame.render_passes[0]->quad_list; | 1336 frame.render_passes[0]->quad_list; |
1337 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1337 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1338 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1338 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1339 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1339 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1340 const SharedQuadState* root_delegated_shared_quad_state = | 1340 const SharedQuadState* root_delegated_shared_quad_state = |
1341 root_delegated_quad_list.front()->shared_quad_state; | 1341 root_delegated_quad_list.front()->shared_quad_state; |
1342 | 1342 |
1343 // When the layer owns a surface, the quads don't need to be clipped | 1343 // When the layer owns a surface, the quads don't need to be clipped |
1344 // further than they already specify. If they aren't clipped, then their | 1344 // further than they already specify. If they aren't clipped, then their |
1345 // clip rect is ignored, and they are not set as clipped. | 1345 // clip rect is ignored, and they are not set as clipped. |
1346 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1346 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1347 | 1347 |
1348 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1348 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1349 host_impl_->DidDrawAllLayers(frame); | 1349 host_impl_->DidDrawAllLayers(frame); |
1350 } | 1350 } |
1351 | 1351 |
1352 TEST_F(DelegatedRendererLayerImplTestClip, | 1352 TEST_F(DelegatedRendererLayerImplTestClip, |
1353 QuadsClipped_LayerUnclipped_Surface) { | 1353 QuadsClipped_LayerUnclipped_Surface) { |
1354 root_delegated_render_pass_is_clipped_ = true; | 1354 root_delegated_render_pass_is_clipped_ = true; |
1355 clip_delegated_renderer_layer_ = false; | 1355 clip_delegated_renderer_layer_ = false; |
1356 SetUpTest(); | 1356 SetUpTest(); |
1357 | 1357 |
1358 delegated_renderer_layer_->SetHasRenderSurface(true); | 1358 delegated_renderer_layer_->SetHasRenderSurface(true); |
1359 | 1359 |
1360 LayerTreeHostImpl::FrameData frame; | 1360 FrameData frame; |
1361 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1361 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1362 | 1362 |
1363 ASSERT_EQ(3u, frame.render_passes.size()); | 1363 ASSERT_EQ(3u, frame.render_passes.size()); |
1364 const QuadList& contrib_delegated_quad_list = | 1364 const QuadList& contrib_delegated_quad_list = |
1365 frame.render_passes[0]->quad_list; | 1365 frame.render_passes[0]->quad_list; |
1366 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1366 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1367 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1367 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1368 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1368 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1369 const SharedQuadState* root_delegated_shared_quad_state = | 1369 const SharedQuadState* root_delegated_shared_quad_state = |
1370 root_delegated_quad_list.front()->shared_quad_state; | 1370 root_delegated_quad_list.front()->shared_quad_state; |
1371 | 1371 |
1372 // When the quads have a clip of their own, it is used. | 1372 // When the quads have a clip of their own, it is used. |
1373 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1373 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1374 root_delegated_shared_quad_state->clip_rect.ToString()); | 1374 root_delegated_shared_quad_state->clip_rect.ToString()); |
1375 // Quads came with a clip rect. | 1375 // Quads came with a clip rect. |
1376 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1376 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1377 | 1377 |
1378 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1378 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1379 host_impl_->DidDrawAllLayers(frame); | 1379 host_impl_->DidDrawAllLayers(frame); |
1380 } | 1380 } |
1381 | 1381 |
1382 TEST_F(DelegatedRendererLayerImplTestClip, | 1382 TEST_F(DelegatedRendererLayerImplTestClip, |
1383 QuadsUnclipped_LayerClipped_Surface) { | 1383 QuadsUnclipped_LayerClipped_Surface) { |
1384 root_delegated_render_pass_is_clipped_ = false; | 1384 root_delegated_render_pass_is_clipped_ = false; |
1385 clip_delegated_renderer_layer_ = true; | 1385 clip_delegated_renderer_layer_ = true; |
1386 SetUpTest(); | 1386 SetUpTest(); |
1387 | 1387 |
1388 delegated_renderer_layer_->SetHasRenderSurface(true); | 1388 delegated_renderer_layer_->SetHasRenderSurface(true); |
1389 | 1389 |
1390 LayerTreeHostImpl::FrameData frame; | 1390 FrameData frame; |
1391 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1391 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1392 | 1392 |
1393 ASSERT_EQ(3u, frame.render_passes.size()); | 1393 ASSERT_EQ(3u, frame.render_passes.size()); |
1394 const QuadList& contrib_delegated_quad_list = | 1394 const QuadList& contrib_delegated_quad_list = |
1395 frame.render_passes[0]->quad_list; | 1395 frame.render_passes[0]->quad_list; |
1396 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1396 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1397 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1397 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1398 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1398 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1399 const SharedQuadState* root_delegated_shared_quad_state = | 1399 const SharedQuadState* root_delegated_shared_quad_state = |
1400 root_delegated_quad_list.front()->shared_quad_state; | 1400 root_delegated_quad_list.front()->shared_quad_state; |
1401 | 1401 |
1402 // When the layer owns a surface, the quads don't need to be clipped | 1402 // When the layer owns a surface, the quads don't need to be clipped |
1403 // further than they already specify. If they aren't clipped, then their | 1403 // further than they already specify. If they aren't clipped, then their |
1404 // clip rect is ignored, and they are not set as clipped. | 1404 // clip rect is ignored, and they are not set as clipped. |
1405 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1405 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1406 | 1406 |
1407 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1407 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1408 host_impl_->DidDrawAllLayers(frame); | 1408 host_impl_->DidDrawAllLayers(frame); |
1409 } | 1409 } |
1410 | 1410 |
1411 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1411 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
1412 root_delegated_render_pass_is_clipped_ = true; | 1412 root_delegated_render_pass_is_clipped_ = true; |
1413 clip_delegated_renderer_layer_ = true; | 1413 clip_delegated_renderer_layer_ = true; |
1414 SetUpTest(); | 1414 SetUpTest(); |
1415 | 1415 |
1416 delegated_renderer_layer_->SetHasRenderSurface(true); | 1416 delegated_renderer_layer_->SetHasRenderSurface(true); |
1417 | 1417 |
1418 LayerTreeHostImpl::FrameData frame; | 1418 FrameData frame; |
1419 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1419 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1420 | 1420 |
1421 ASSERT_EQ(3u, frame.render_passes.size()); | 1421 ASSERT_EQ(3u, frame.render_passes.size()); |
1422 const QuadList& contrib_delegated_quad_list = | 1422 const QuadList& contrib_delegated_quad_list = |
1423 frame.render_passes[0]->quad_list; | 1423 frame.render_passes[0]->quad_list; |
1424 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1424 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1425 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1425 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1426 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1426 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1427 const SharedQuadState* root_delegated_shared_quad_state = | 1427 const SharedQuadState* root_delegated_shared_quad_state = |
1428 root_delegated_quad_list.front()->shared_quad_state; | 1428 root_delegated_quad_list.front()->shared_quad_state; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1469 | 1469 |
1470 // But a render pass quad refers to it. | 1470 // But a render pass quad refers to it. |
1471 AddRenderPassQuad(pass1, missing_pass.get()); | 1471 AddRenderPassQuad(pass1, missing_pass.get()); |
1472 | 1472 |
1473 delegated_renderer_layer->SetFrameDataForRenderPasses( | 1473 delegated_renderer_layer->SetFrameDataForRenderPasses( |
1474 1.f, delegated_render_passes); | 1474 1.f, delegated_render_passes); |
1475 | 1475 |
1476 root_layer->AddChild(delegated_renderer_layer.Pass()); | 1476 root_layer->AddChild(delegated_renderer_layer.Pass()); |
1477 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 1477 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
1478 | 1478 |
1479 LayerTreeHostImpl::FrameData frame; | 1479 FrameData frame; |
1480 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1480 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1481 | 1481 |
1482 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1482 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
1483 ASSERT_EQ(1u, frame.render_passes.size()); | 1483 ASSERT_EQ(1u, frame.render_passes.size()); |
1484 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1484 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
1485 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1485 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
1486 frame.render_passes[0]->quad_list.front()->material); | 1486 frame.render_passes[0]->quad_list.front()->material); |
1487 | 1487 |
1488 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1488 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1489 host_impl_->DidDrawAllLayers(frame); | 1489 host_impl_->DidDrawAllLayers(frame); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1677 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1677 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
1678 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1678 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
1679 | 1679 |
1680 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1680 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
1681 | 1681 |
1682 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1682 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
1683 } | 1683 } |
1684 | 1684 |
1685 } // namespace | 1685 } // namespace |
1686 } // namespace cc | 1686 } // namespace cc |
OLD | NEW |