OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer | 245 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer |
246 : public LayerTreeHostDelegatedTest, | 246 : public LayerTreeHostDelegatedTest, |
247 public DelegatedFrameResourceCollectionClient { | 247 public DelegatedFrameResourceCollectionClient { |
248 public: | 248 public: |
249 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer() | 249 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer() |
250 : resource_collection_(new DelegatedFrameResourceCollection), | 250 : resource_collection_(new DelegatedFrameResourceCollection), |
251 available_(false) { | 251 available_(false) { |
252 resource_collection_->SetClient(this); | 252 resource_collection_->SetClient(this); |
253 } | 253 } |
254 | 254 |
255 virtual void SetupTree() override { | 255 void SetupTree() override { |
256 root_ = Layer::Create(); | 256 root_ = Layer::Create(); |
257 root_->SetBounds(gfx::Size(15, 15)); | 257 root_->SetBounds(gfx::Size(15, 15)); |
258 | 258 |
259 layer_tree_host()->SetRootLayer(root_); | 259 layer_tree_host()->SetRootLayer(root_); |
260 LayerTreeHostDelegatedTest::SetupTree(); | 260 LayerTreeHostDelegatedTest::SetupTree(); |
261 } | 261 } |
262 | 262 |
263 virtual void BeginTest() override { | 263 void BeginTest() override { |
264 resource_collection_->SetClient(this); | 264 resource_collection_->SetClient(this); |
265 PostSetNeedsCommitToMainThread(); | 265 PostSetNeedsCommitToMainThread(); |
266 } | 266 } |
267 | 267 |
268 void SetFrameData(scoped_ptr<DelegatedFrameData> frame_data) { | 268 void SetFrameData(scoped_ptr<DelegatedFrameData> frame_data) { |
269 RenderPass* root_pass = frame_data->render_pass_list.back(); | 269 RenderPass* root_pass = frame_data->render_pass_list.back(); |
270 gfx::Size frame_size = root_pass->output_rect.size(); | 270 gfx::Size frame_size = root_pass->output_rect.size(); |
271 | 271 |
272 if (frame_provider_.get() && frame_size == frame_provider_->frame_size()) { | 272 if (frame_provider_.get() && frame_size == frame_provider_->frame_size()) { |
273 frame_provider_->SetFrameData(frame_data.Pass()); | 273 frame_provider_->SetFrameData(frame_data.Pass()); |
(...skipping 16 matching lines...) Expand all Loading... |
290 DelegatedFrameProvider* frame_provider) { | 290 DelegatedFrameProvider* frame_provider) { |
291 scoped_refptr<DelegatedRendererLayer> delegated = | 291 scoped_refptr<DelegatedRendererLayer> delegated = |
292 FakeDelegatedRendererLayer::Create(frame_provider); | 292 FakeDelegatedRendererLayer::Create(frame_provider); |
293 delegated->SetBounds(gfx::Size(10, 10)); | 293 delegated->SetBounds(gfx::Size(10, 10)); |
294 delegated->SetIsDrawable(true); | 294 delegated->SetIsDrawable(true); |
295 | 295 |
296 root_->AddChild(delegated); | 296 root_->AddChild(delegated); |
297 return delegated; | 297 return delegated; |
298 } | 298 } |
299 | 299 |
300 virtual void AfterTest() override { resource_collection_->SetClient(NULL); } | 300 void AfterTest() override { resource_collection_->SetClient(NULL); } |
301 | 301 |
302 // DelegatedFrameProviderClient implementation. | 302 // DelegatedFrameProviderClient implementation. |
303 virtual void UnusedResourcesAreAvailable() override { available_ = true; } | 303 void UnusedResourcesAreAvailable() override { available_ = true; } |
304 | 304 |
305 bool TestAndResetAvailable() { | 305 bool TestAndResetAvailable() { |
306 bool available = available_; | 306 bool available = available_; |
307 available_ = false; | 307 available_ = false; |
308 return available; | 308 return available; |
309 } | 309 } |
310 | 310 |
311 protected: | 311 protected: |
312 scoped_refptr<DelegatedFrameResourceCollection> resource_collection_; | 312 scoped_refptr<DelegatedFrameResourceCollection> resource_collection_; |
313 scoped_refptr<DelegatedFrameProvider> frame_provider_; | 313 scoped_refptr<DelegatedFrameProvider> frame_provider_; |
314 scoped_refptr<Layer> root_; | 314 scoped_refptr<Layer> root_; |
315 scoped_refptr<DelegatedRendererLayer> delegated_; | 315 scoped_refptr<DelegatedRendererLayer> delegated_; |
316 bool available_; | 316 bool available_; |
317 }; | 317 }; |
318 | 318 |
319 class LayerTreeHostDelegatedTestCreateChildId | 319 class LayerTreeHostDelegatedTestCreateChildId |
320 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 320 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
321 public: | 321 public: |
322 LayerTreeHostDelegatedTestCreateChildId() | 322 LayerTreeHostDelegatedTestCreateChildId() |
323 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 323 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
324 num_activates_(0), | 324 num_activates_(0), |
325 did_reset_child_id_(false) {} | 325 did_reset_child_id_(false) {} |
326 | 326 |
327 virtual void DidCommit() override { | 327 void DidCommit() override { |
328 if (TestEnded()) | 328 if (TestEnded()) |
329 return; | 329 return; |
330 SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); | 330 SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
331 } | 331 } |
332 | 332 |
333 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 333 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
334 if (host_impl->active_tree()->source_frame_number() < 1) | 334 if (host_impl->active_tree()->source_frame_number() < 1) |
335 return; | 335 return; |
336 | 336 |
337 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 337 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
338 FakeDelegatedRendererLayerImpl* delegated_impl = | 338 FakeDelegatedRendererLayerImpl* delegated_impl = |
339 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 339 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
340 | 340 |
341 TestContextProvider* context_provider = static_cast<TestContextProvider*>( | 341 TestContextProvider* context_provider = static_cast<TestContextProvider*>( |
342 host_impl->output_surface()->context_provider()); | 342 host_impl->output_surface()->context_provider()); |
343 | 343 |
344 ++num_activates_; | 344 ++num_activates_; |
345 switch (num_activates_) { | 345 switch (num_activates_) { |
346 case 2: | 346 case 2: |
347 EXPECT_TRUE(delegated_impl->ChildId()); | 347 EXPECT_TRUE(delegated_impl->ChildId()); |
348 EXPECT_FALSE(did_reset_child_id_); | 348 EXPECT_FALSE(did_reset_child_id_); |
349 | 349 |
350 context_provider->ContextGL()->LoseContextCHROMIUM( | 350 context_provider->ContextGL()->LoseContextCHROMIUM( |
351 GL_GUILTY_CONTEXT_RESET_ARB, | 351 GL_GUILTY_CONTEXT_RESET_ARB, |
352 GL_INNOCENT_CONTEXT_RESET_ARB); | 352 GL_INNOCENT_CONTEXT_RESET_ARB); |
353 context_provider->ContextGL()->Flush(); | 353 context_provider->ContextGL()->Flush(); |
354 break; | 354 break; |
355 case 3: | 355 case 3: |
356 EXPECT_TRUE(delegated_impl->ChildId()); | 356 EXPECT_TRUE(delegated_impl->ChildId()); |
357 EXPECT_TRUE(did_reset_child_id_); | 357 EXPECT_TRUE(did_reset_child_id_); |
358 EndTest(); | 358 EndTest(); |
359 break; | 359 break; |
360 } | 360 } |
361 } | 361 } |
362 | 362 |
363 virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, | 363 void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, |
364 bool success) override { | 364 bool success) override { |
365 EXPECT_TRUE(success); | 365 EXPECT_TRUE(success); |
366 | 366 |
367 if (num_activates_ < 2) | 367 if (num_activates_ < 2) |
368 return; | 368 return; |
369 | 369 |
370 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 370 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
371 FakeDelegatedRendererLayerImpl* delegated_impl = | 371 FakeDelegatedRendererLayerImpl* delegated_impl = |
372 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 372 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
373 | 373 |
374 EXPECT_EQ(2, num_activates_); | 374 EXPECT_EQ(2, num_activates_); |
(...skipping 10 matching lines...) Expand all Loading... |
385 | 385 |
386 // Test that we can gracefully handle invalid frames after the context was lost. | 386 // Test that we can gracefully handle invalid frames after the context was lost. |
387 // For example, we might be trying to use the previous frame in that case and | 387 // For example, we might be trying to use the previous frame in that case and |
388 // have to make sure we don't crash because our resource accounting goes wrong. | 388 // have to make sure we don't crash because our resource accounting goes wrong. |
389 class LayerTreeHostDelegatedTestInvalidFrameAfterContextLost | 389 class LayerTreeHostDelegatedTestInvalidFrameAfterContextLost |
390 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 390 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
391 public: | 391 public: |
392 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost() | 392 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost() |
393 : num_activates_(0), num_output_surfaces_initialized_(0) {} | 393 : num_activates_(0), num_output_surfaces_initialized_(0) {} |
394 | 394 |
395 virtual void DidCommit() override { | 395 void DidCommit() override { |
396 if (TestEnded()) | 396 if (TestEnded()) |
397 return; | 397 return; |
398 scoped_ptr<DelegatedFrameData> frame1 = | 398 scoped_ptr<DelegatedFrameData> frame1 = |
399 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 399 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
400 AddTextureQuad(frame1.get(), 999); | 400 AddTextureQuad(frame1.get(), 999); |
401 AddTransferableResource(frame1.get(), 999); | 401 AddTransferableResource(frame1.get(), 999); |
402 SetFrameData(frame1.Pass()); | 402 SetFrameData(frame1.Pass()); |
403 } | 403 } |
404 | 404 |
405 virtual void DidInitializeOutputSurface() override { | 405 void DidInitializeOutputSurface() override { |
406 if (!num_output_surfaces_initialized_++) | 406 if (!num_output_surfaces_initialized_++) |
407 return; | 407 return; |
408 | 408 |
409 scoped_refptr<DelegatedRendererLayer> old_delegated = delegated_; | 409 scoped_refptr<DelegatedRendererLayer> old_delegated = delegated_; |
410 SetFrameData( | 410 SetFrameData( |
411 CreateInvalidFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); | 411 CreateInvalidFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
412 // Make sure we end up using the same layer, or we won't test the right | 412 // Make sure we end up using the same layer, or we won't test the right |
413 // thing, which is to make sure we can handle an invalid frame when using | 413 // thing, which is to make sure we can handle an invalid frame when using |
414 // a stale layer from before the context was lost. | 414 // a stale layer from before the context was lost. |
415 DCHECK(delegated_.get() == old_delegated.get()); | 415 DCHECK(delegated_.get() == old_delegated.get()); |
416 } | 416 } |
417 | 417 |
418 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 418 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
419 if (host_impl->active_tree()->source_frame_number() < 1) | 419 if (host_impl->active_tree()->source_frame_number() < 1) |
420 return; | 420 return; |
421 | 421 |
422 TestContextProvider* context_provider = static_cast<TestContextProvider*>( | 422 TestContextProvider* context_provider = static_cast<TestContextProvider*>( |
423 host_impl->output_surface()->context_provider()); | 423 host_impl->output_surface()->context_provider()); |
424 | 424 |
425 ++num_activates_; | 425 ++num_activates_; |
426 switch (num_activates_) { | 426 switch (num_activates_) { |
427 case 2: | 427 case 2: |
428 context_provider->ContextGL()->LoseContextCHROMIUM( | 428 context_provider->ContextGL()->LoseContextCHROMIUM( |
429 GL_GUILTY_CONTEXT_RESET_ARB, | 429 GL_GUILTY_CONTEXT_RESET_ARB, |
430 GL_INNOCENT_CONTEXT_RESET_ARB); | 430 GL_INNOCENT_CONTEXT_RESET_ARB); |
431 break; | 431 break; |
432 case 3: | 432 case 3: |
433 EndTest(); | 433 EndTest(); |
434 break; | 434 break; |
435 } | 435 } |
436 } | 436 } |
437 | 437 |
438 virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, | 438 void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, |
439 bool success) override { | 439 bool success) override { |
440 EXPECT_TRUE(success); | 440 EXPECT_TRUE(success); |
441 | 441 |
442 if (num_activates_ < 2) | 442 if (num_activates_ < 2) |
443 return; | 443 return; |
444 | 444 |
445 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 445 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
446 FakeDelegatedRendererLayerImpl* delegated_impl = | 446 FakeDelegatedRendererLayerImpl* delegated_impl = |
447 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 447 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
448 | 448 |
449 EXPECT_EQ(2, num_activates_); | 449 EXPECT_EQ(2, num_activates_); |
450 // Resources should have gotten cleared after the context was lost. | 450 // Resources should have gotten cleared after the context was lost. |
451 EXPECT_EQ(0U, delegated_impl->Resources().size()); | 451 EXPECT_EQ(0U, delegated_impl->Resources().size()); |
452 } | 452 } |
453 | 453 |
454 virtual void AfterTest() override { | 454 void AfterTest() override { |
455 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer::AfterTest(); | 455 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer::AfterTest(); |
456 EXPECT_EQ(2, num_output_surfaces_initialized_); | 456 EXPECT_EQ(2, num_output_surfaces_initialized_); |
457 } | 457 } |
458 | 458 |
459 protected: | 459 protected: |
460 int num_activates_; | 460 int num_activates_; |
461 int num_output_surfaces_initialized_; | 461 int num_output_surfaces_initialized_; |
462 }; | 462 }; |
463 | 463 |
464 SINGLE_AND_MULTI_THREAD_TEST_F( | 464 SINGLE_AND_MULTI_THREAD_TEST_F( |
465 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost); | 465 LayerTreeHostDelegatedTestInvalidFrameAfterContextLost); |
466 | 466 |
467 class LayerTreeHostDelegatedTestLayerUsesFrameDamage | 467 class LayerTreeHostDelegatedTestLayerUsesFrameDamage |
468 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 468 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
469 public: | 469 public: |
470 LayerTreeHostDelegatedTestLayerUsesFrameDamage() | 470 LayerTreeHostDelegatedTestLayerUsesFrameDamage() |
471 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 471 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
472 first_draw_for_source_frame_(true) {} | 472 first_draw_for_source_frame_(true) {} |
473 | 473 |
474 virtual void DidCommit() override { | 474 void DidCommit() override { |
475 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 475 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
476 switch (next_source_frame_number) { | 476 switch (next_source_frame_number) { |
477 case 1: | 477 case 1: |
478 // The first time the layer gets a frame the whole layer should be | 478 // The first time the layer gets a frame the whole layer should be |
479 // damaged. | 479 // damaged. |
480 SetFrameData( | 480 SetFrameData( |
481 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); | 481 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); |
482 break; | 482 break; |
483 case 2: | 483 case 2: |
484 // A different frame size will damage the whole layer. | 484 // A different frame size will damage the whole layer. |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 case 18: | 574 case 18: |
575 // Set another new frame, both layers should be damaged in the same | 575 // Set another new frame, both layers should be damaged in the same |
576 // ways. | 576 // ways. |
577 SetFrameData( | 577 SetFrameData( |
578 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(3, 3, 1, 1))); | 578 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(3, 3, 1, 1))); |
579 break; | 579 break; |
580 } | 580 } |
581 first_draw_for_source_frame_ = true; | 581 first_draw_for_source_frame_ = true; |
582 } | 582 } |
583 | 583 |
584 virtual DrawResult PrepareToDrawOnThread( | 584 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
585 LayerTreeHostImpl* host_impl, | 585 LayerTreeHostImpl::FrameData* frame, |
586 LayerTreeHostImpl::FrameData* frame, | 586 DrawResult draw_result) override { |
587 DrawResult draw_result) override { | |
588 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 587 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
589 | 588 |
590 if (!first_draw_for_source_frame_) | 589 if (!first_draw_for_source_frame_) |
591 return draw_result; | 590 return draw_result; |
592 | 591 |
593 gfx::Rect damage_rect; | 592 gfx::Rect damage_rect; |
594 if (!frame->has_no_damage) { | 593 if (!frame->has_no_damage) { |
595 damage_rect = frame->render_passes.back()->damage_rect; | 594 damage_rect = frame->render_passes.back()->damage_rect; |
596 } else { | 595 } else { |
597 // If there is no damage, then we have no render passes to send. | 596 // If there is no damage, then we have no render passes to send. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 protected: | 667 protected: |
669 scoped_refptr<DelegatedRendererLayer> delegated_copy_; | 668 scoped_refptr<DelegatedRendererLayer> delegated_copy_; |
670 bool first_draw_for_source_frame_; | 669 bool first_draw_for_source_frame_; |
671 }; | 670 }; |
672 | 671 |
673 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage); | 672 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage); |
674 | 673 |
675 class LayerTreeHostDelegatedTestMergeResources | 674 class LayerTreeHostDelegatedTestMergeResources |
676 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 675 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
677 public: | 676 public: |
678 virtual void BeginTest() override { | 677 void BeginTest() override { |
679 // Push two frames to the delegated renderer layer with no commit between. | 678 // Push two frames to the delegated renderer layer with no commit between. |
680 | 679 |
681 // The first frame has resource 999. | 680 // The first frame has resource 999. |
682 scoped_ptr<DelegatedFrameData> frame1 = | 681 scoped_ptr<DelegatedFrameData> frame1 = |
683 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 682 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
684 AddTextureQuad(frame1.get(), 999); | 683 AddTextureQuad(frame1.get(), 999); |
685 AddTransferableResource(frame1.get(), 999); | 684 AddTransferableResource(frame1.get(), 999); |
686 SetFrameData(frame1.Pass()); | 685 SetFrameData(frame1.Pass()); |
687 | 686 |
688 // The second frame uses resource 999 still, but also adds 555. | 687 // The second frame uses resource 999 still, but also adds 555. |
(...skipping 12 matching lines...) Expand all Loading... |
701 &returned_resources); | 700 &returned_resources); |
702 { | 701 { |
703 unsigned expected[] = {999}; | 702 unsigned expected[] = {999}; |
704 EXPECT_RESOURCES(expected, returned_resources); | 703 EXPECT_RESOURCES(expected, returned_resources); |
705 EXPECT_TRUE(TestAndResetAvailable()); | 704 EXPECT_TRUE(TestAndResetAvailable()); |
706 } | 705 } |
707 | 706 |
708 PostSetNeedsCommitToMainThread(); | 707 PostSetNeedsCommitToMainThread(); |
709 } | 708 } |
710 | 709 |
711 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 710 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
712 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 711 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
713 FakeDelegatedRendererLayerImpl* delegated_impl = | 712 FakeDelegatedRendererLayerImpl* delegated_impl = |
714 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 713 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
715 | 714 |
716 const ResourceProvider::ResourceIdMap& map = | 715 const ResourceProvider::ResourceIdMap& map = |
717 host_impl->resource_provider()->GetChildToParentMap( | 716 host_impl->resource_provider()->GetChildToParentMap( |
718 delegated_impl->ChildId()); | 717 delegated_impl->ChildId()); |
719 | 718 |
720 // Both frames' resources should be in the parent's resource provider. | 719 // Both frames' resources should be in the parent's resource provider. |
721 EXPECT_EQ(2u, map.size()); | 720 EXPECT_EQ(2u, map.size()); |
722 EXPECT_EQ(1u, map.count(999)); | 721 EXPECT_EQ(1u, map.count(999)); |
723 EXPECT_EQ(1u, map.count(555)); | 722 EXPECT_EQ(1u, map.count(555)); |
724 | 723 |
725 EXPECT_EQ(2u, delegated_impl->Resources().size()); | 724 EXPECT_EQ(2u, delegated_impl->Resources().size()); |
726 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); | 725 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); |
727 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); | 726 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); |
728 | 727 |
729 EndTest(); | 728 EndTest(); |
730 } | 729 } |
731 }; | 730 }; |
732 | 731 |
733 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestMergeResources); | 732 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestMergeResources); |
734 | 733 |
735 class LayerTreeHostDelegatedTestRemapResourcesInQuads | 734 class LayerTreeHostDelegatedTestRemapResourcesInQuads |
736 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 735 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
737 public: | 736 public: |
738 virtual void BeginTest() override { | 737 void BeginTest() override { |
739 // Generate a frame with two resources in it. | 738 // Generate a frame with two resources in it. |
740 scoped_ptr<DelegatedFrameData> frame = | 739 scoped_ptr<DelegatedFrameData> frame = |
741 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 740 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
742 AddTextureQuad(frame.get(), 999); | 741 AddTextureQuad(frame.get(), 999); |
743 AddTransferableResource(frame.get(), 999); | 742 AddTransferableResource(frame.get(), 999); |
744 AddTextureQuad(frame.get(), 555); | 743 AddTextureQuad(frame.get(), 555); |
745 AddTransferableResource(frame.get(), 555); | 744 AddTransferableResource(frame.get(), 555); |
746 SetFrameData(frame.Pass()); | 745 SetFrameData(frame.Pass()); |
747 | 746 |
748 PostSetNeedsCommitToMainThread(); | 747 PostSetNeedsCommitToMainThread(); |
749 } | 748 } |
750 | 749 |
751 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 750 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
752 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 751 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
753 FakeDelegatedRendererLayerImpl* delegated_impl = | 752 FakeDelegatedRendererLayerImpl* delegated_impl = |
754 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 753 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
755 | 754 |
756 const ResourceProvider::ResourceIdMap& map = | 755 const ResourceProvider::ResourceIdMap& map = |
757 host_impl->resource_provider()->GetChildToParentMap( | 756 host_impl->resource_provider()->GetChildToParentMap( |
758 delegated_impl->ChildId()); | 757 delegated_impl->ChildId()); |
759 | 758 |
760 // The frame's resource should be in the parent's resource provider. | 759 // The frame's resource should be in the parent's resource provider. |
761 EXPECT_EQ(2u, map.size()); | 760 EXPECT_EQ(2u, map.size()); |
(...skipping 15 matching lines...) Expand all Loading... |
777 | 776 |
778 EndTest(); | 777 EndTest(); |
779 } | 778 } |
780 }; | 779 }; |
781 | 780 |
782 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemapResourcesInQuads); | 781 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemapResourcesInQuads); |
783 | 782 |
784 class LayerTreeHostDelegatedTestReturnUnusedResources | 783 class LayerTreeHostDelegatedTestReturnUnusedResources |
785 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 784 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
786 public: | 785 public: |
787 virtual void BeginTest() override { | 786 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
788 PostSetNeedsCommitToMainThread(); | |
789 } | |
790 | 787 |
791 virtual void DidCommitAndDrawFrame() override { | 788 void DidCommitAndDrawFrame() override { |
792 scoped_ptr<DelegatedFrameData> frame; | 789 scoped_ptr<DelegatedFrameData> frame; |
793 ReturnedResourceArray resources; | 790 ReturnedResourceArray resources; |
794 | 791 |
795 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 792 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
796 switch (next_source_frame_number) { | 793 switch (next_source_frame_number) { |
797 case 1: | 794 case 1: |
798 // Generate a frame with two resources in it. | 795 // Generate a frame with two resources in it. |
799 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 796 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
800 AddTextureQuad(frame.get(), 999); | 797 AddTextureQuad(frame.get(), 999); |
801 AddTransferableResource(frame.get(), 999); | 798 AddTransferableResource(frame.get(), 999); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 } | 846 } |
850 | 847 |
851 // Resources are never immediately released. | 848 // Resources are never immediately released. |
852 ReturnedResourceArray empty_resources; | 849 ReturnedResourceArray empty_resources; |
853 resource_collection_->TakeUnusedResourcesForChildCompositor( | 850 resource_collection_->TakeUnusedResourcesForChildCompositor( |
854 &empty_resources); | 851 &empty_resources); |
855 EXPECT_EQ(0u, empty_resources.size()); | 852 EXPECT_EQ(0u, empty_resources.size()); |
856 EXPECT_FALSE(TestAndResetAvailable()); | 853 EXPECT_FALSE(TestAndResetAvailable()); |
857 } | 854 } |
858 | 855 |
859 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 856 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
860 bool result) override { | |
861 ReturnUnusedResourcesFromParent(host_impl); | 857 ReturnUnusedResourcesFromParent(host_impl); |
862 } | 858 } |
863 }; | 859 }; |
864 | 860 |
865 SINGLE_AND_MULTI_THREAD_TEST_F( | 861 SINGLE_AND_MULTI_THREAD_TEST_F( |
866 LayerTreeHostDelegatedTestReturnUnusedResources); | 862 LayerTreeHostDelegatedTestReturnUnusedResources); |
867 | 863 |
868 class LayerTreeHostDelegatedTestReusedResources | 864 class LayerTreeHostDelegatedTestReusedResources |
869 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 865 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
870 public: | 866 public: |
871 virtual void BeginTest() override { | 867 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
872 PostSetNeedsCommitToMainThread(); | |
873 } | |
874 | 868 |
875 virtual void DidCommitAndDrawFrame() override { | 869 void DidCommitAndDrawFrame() override { |
876 scoped_ptr<DelegatedFrameData> frame; | 870 scoped_ptr<DelegatedFrameData> frame; |
877 ReturnedResourceArray resources; | 871 ReturnedResourceArray resources; |
878 | 872 |
879 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 873 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
880 switch (next_source_frame_number) { | 874 switch (next_source_frame_number) { |
881 case 1: | 875 case 1: |
882 // Generate a frame with some resources in it. | 876 // Generate a frame with some resources in it. |
883 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 877 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
884 AddTextureQuad(frame.get(), 999); | 878 AddTextureQuad(frame.get(), 999); |
885 AddTransferableResource(frame.get(), 999); | 879 AddTransferableResource(frame.get(), 999); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 { | 915 { |
922 unsigned expected[] = {999, 999}; | 916 unsigned expected[] = {999, 999}; |
923 EXPECT_RESOURCES(expected, resources); | 917 EXPECT_RESOURCES(expected, resources); |
924 EXPECT_TRUE(TestAndResetAvailable()); | 918 EXPECT_TRUE(TestAndResetAvailable()); |
925 } | 919 } |
926 EndTest(); | 920 EndTest(); |
927 break; | 921 break; |
928 } | 922 } |
929 } | 923 } |
930 | 924 |
931 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 925 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
932 bool result) override { | |
933 ReturnUnusedResourcesFromParent(host_impl); | 926 ReturnUnusedResourcesFromParent(host_impl); |
934 } | 927 } |
935 }; | 928 }; |
936 | 929 |
937 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestReusedResources); | 930 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestReusedResources); |
938 | 931 |
939 class LayerTreeHostDelegatedTestFrameBeforeAck | 932 class LayerTreeHostDelegatedTestFrameBeforeAck |
940 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 933 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
941 public: | 934 public: |
942 virtual void BeginTest() override { | 935 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
943 PostSetNeedsCommitToMainThread(); | |
944 } | |
945 | 936 |
946 virtual void DidCommitAndDrawFrame() override { | 937 void DidCommitAndDrawFrame() override { |
947 scoped_ptr<DelegatedFrameData> frame; | 938 scoped_ptr<DelegatedFrameData> frame; |
948 ReturnedResourceArray resources; | 939 ReturnedResourceArray resources; |
949 | 940 |
950 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 941 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
951 switch (next_source_frame_number) { | 942 switch (next_source_frame_number) { |
952 case 1: | 943 case 1: |
953 // Generate a frame with some resources in it. | 944 // Generate a frame with some resources in it. |
954 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 945 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
955 AddTextureQuad(frame.get(), 999); | 946 AddTextureQuad(frame.get(), 999); |
956 AddTransferableResource(frame.get(), 999); | 947 AddTransferableResource(frame.get(), 999); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
991 // frame. | 982 // frame. |
992 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 983 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
993 AddTextureQuad(frame.get(), 999); | 984 AddTextureQuad(frame.get(), 999); |
994 AddTextureQuad(frame.get(), 555); | 985 AddTextureQuad(frame.get(), 555); |
995 AddTextureQuad(frame.get(), 444); | 986 AddTextureQuad(frame.get(), 444); |
996 SetFrameData(frame.Pass()); | 987 SetFrameData(frame.Pass()); |
997 break; | 988 break; |
998 } | 989 } |
999 } | 990 } |
1000 | 991 |
1001 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 992 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
1002 if (host_impl->active_tree()->source_frame_number() != 3) | 993 if (host_impl->active_tree()->source_frame_number() != 3) |
1003 return; | 994 return; |
1004 | 995 |
1005 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 996 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
1006 FakeDelegatedRendererLayerImpl* delegated_impl = | 997 FakeDelegatedRendererLayerImpl* delegated_impl = |
1007 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 998 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
1008 | 999 |
1009 const ResourceProvider::ResourceIdMap& map = | 1000 const ResourceProvider::ResourceIdMap& map = |
1010 host_impl->resource_provider()->GetChildToParentMap( | 1001 host_impl->resource_provider()->GetChildToParentMap( |
1011 delegated_impl->ChildId()); | 1002 delegated_impl->ChildId()); |
1012 | 1003 |
1013 // The bad frame should be dropped. So we should only have one quad (the | 1004 // The bad frame should be dropped. So we should only have one quad (the |
1014 // one with resource 999) on the impl tree. And only 999 will be present | 1005 // one with resource 999) on the impl tree. And only 999 will be present |
1015 // in the parent's resource provider. | 1006 // in the parent's resource provider. |
1016 EXPECT_EQ(1u, map.size()); | 1007 EXPECT_EQ(1u, map.size()); |
1017 EXPECT_EQ(1u, map.count(999)); | 1008 EXPECT_EQ(1u, map.count(999)); |
1018 | 1009 |
1019 EXPECT_EQ(1u, delegated_impl->Resources().size()); | 1010 EXPECT_EQ(1u, delegated_impl->Resources().size()); |
1020 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); | 1011 EXPECT_EQ(1u, delegated_impl->Resources().count(999)); |
1021 | 1012 |
1022 const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0]; | 1013 const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0]; |
1023 EXPECT_EQ(1u, pass->quad_list.size()); | 1014 EXPECT_EQ(1u, pass->quad_list.size()); |
1024 const TextureDrawQuad* quad = | 1015 const TextureDrawQuad* quad = |
1025 TextureDrawQuad::MaterialCast(pass->quad_list.front()); | 1016 TextureDrawQuad::MaterialCast(pass->quad_list.front()); |
1026 EXPECT_EQ(map.find(999)->second, quad->resource_id); | 1017 EXPECT_EQ(map.find(999)->second, quad->resource_id); |
1027 | 1018 |
1028 EndTest(); | 1019 EndTest(); |
1029 } | 1020 } |
1030 | 1021 |
1031 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1022 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
1032 bool result) override { | |
1033 ReturnUnusedResourcesFromParent(host_impl); | 1023 ReturnUnusedResourcesFromParent(host_impl); |
1034 } | 1024 } |
1035 }; | 1025 }; |
1036 | 1026 |
1037 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestFrameBeforeAck); | 1027 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestFrameBeforeAck); |
1038 | 1028 |
1039 class LayerTreeHostDelegatedTestFrameBeforeTakeResources | 1029 class LayerTreeHostDelegatedTestFrameBeforeTakeResources |
1040 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1030 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1041 public: | 1031 public: |
1042 virtual void BeginTest() override { | 1032 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1043 PostSetNeedsCommitToMainThread(); | |
1044 } | |
1045 | 1033 |
1046 virtual void DidCommitAndDrawFrame() override { | 1034 void DidCommitAndDrawFrame() override { |
1047 scoped_ptr<DelegatedFrameData> frame; | 1035 scoped_ptr<DelegatedFrameData> frame; |
1048 ReturnedResourceArray resources; | 1036 ReturnedResourceArray resources; |
1049 | 1037 |
1050 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1038 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1051 switch (next_source_frame_number) { | 1039 switch (next_source_frame_number) { |
1052 case 1: | 1040 case 1: |
1053 // Generate a frame with some resources in it. | 1041 // Generate a frame with some resources in it. |
1054 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1042 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1055 AddTextureQuad(frame.get(), 999); | 1043 AddTextureQuad(frame.get(), 999); |
1056 AddTransferableResource(frame.get(), 999); | 1044 AddTransferableResource(frame.get(), 999); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1103 break; | 1091 break; |
1104 case 4: | 1092 case 4: |
1105 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); | 1093 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
1106 EXPECT_EQ(0u, resources.size()); | 1094 EXPECT_EQ(0u, resources.size()); |
1107 EXPECT_FALSE(TestAndResetAvailable()); | 1095 EXPECT_FALSE(TestAndResetAvailable()); |
1108 EndTest(); | 1096 EndTest(); |
1109 break; | 1097 break; |
1110 } | 1098 } |
1111 } | 1099 } |
1112 | 1100 |
1113 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1101 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
1114 if (host_impl->active_tree()->source_frame_number() != 3) | 1102 if (host_impl->active_tree()->source_frame_number() != 3) |
1115 return; | 1103 return; |
1116 | 1104 |
1117 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1105 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
1118 FakeDelegatedRendererLayerImpl* delegated_impl = | 1106 FakeDelegatedRendererLayerImpl* delegated_impl = |
1119 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1107 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
1120 | 1108 |
1121 const ResourceProvider::ResourceIdMap& map = | 1109 const ResourceProvider::ResourceIdMap& map = |
1122 host_impl->resource_provider()->GetChildToParentMap( | 1110 host_impl->resource_provider()->GetChildToParentMap( |
1123 delegated_impl->ChildId()); | 1111 delegated_impl->ChildId()); |
(...skipping 16 matching lines...) Expand all Loading... |
1140 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(0)); | 1128 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(0)); |
1141 EXPECT_EQ(map.find(999)->second, quad1->resource_id); | 1129 EXPECT_EQ(map.find(999)->second, quad1->resource_id); |
1142 const TextureDrawQuad* quad2 = | 1130 const TextureDrawQuad* quad2 = |
1143 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(1)); | 1131 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(1)); |
1144 EXPECT_EQ(map.find(555)->second, quad2->resource_id); | 1132 EXPECT_EQ(map.find(555)->second, quad2->resource_id); |
1145 const TextureDrawQuad* quad3 = | 1133 const TextureDrawQuad* quad3 = |
1146 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(2)); | 1134 TextureDrawQuad::MaterialCast(pass->quad_list.ElementAt(2)); |
1147 EXPECT_EQ(map.find(444)->second, quad3->resource_id); | 1135 EXPECT_EQ(map.find(444)->second, quad3->resource_id); |
1148 } | 1136 } |
1149 | 1137 |
1150 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1138 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
1151 bool result) override { | |
1152 ReturnUnusedResourcesFromParent(host_impl); | 1139 ReturnUnusedResourcesFromParent(host_impl); |
1153 } | 1140 } |
1154 }; | 1141 }; |
1155 | 1142 |
1156 SINGLE_AND_MULTI_THREAD_TEST_F( | 1143 SINGLE_AND_MULTI_THREAD_TEST_F( |
1157 LayerTreeHostDelegatedTestFrameBeforeTakeResources); | 1144 LayerTreeHostDelegatedTestFrameBeforeTakeResources); |
1158 | 1145 |
1159 class LayerTreeHostDelegatedTestBadFrame | 1146 class LayerTreeHostDelegatedTestBadFrame |
1160 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1147 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1161 public: | 1148 public: |
1162 virtual void BeginTest() override { | 1149 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1163 PostSetNeedsCommitToMainThread(); | |
1164 } | |
1165 | 1150 |
1166 virtual void DidCommitAndDrawFrame() override { | 1151 void DidCommitAndDrawFrame() override { |
1167 scoped_ptr<DelegatedFrameData> frame; | 1152 scoped_ptr<DelegatedFrameData> frame; |
1168 ReturnedResourceArray resources; | 1153 ReturnedResourceArray resources; |
1169 | 1154 |
1170 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1155 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1171 switch (next_source_frame_number) { | 1156 switch (next_source_frame_number) { |
1172 case 1: | 1157 case 1: |
1173 // Generate a frame with some resources in it. | 1158 // Generate a frame with some resources in it. |
1174 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1159 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1175 AddTextureQuad(frame.get(), 999); | 1160 AddTextureQuad(frame.get(), 999); |
1176 AddTransferableResource(frame.get(), 999); | 1161 AddTransferableResource(frame.get(), 999); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 unsigned expected[] = {555}; | 1208 unsigned expected[] = {555}; |
1224 EXPECT_RESOURCES(expected, resources); | 1209 EXPECT_RESOURCES(expected, resources); |
1225 EXPECT_TRUE(TestAndResetAvailable()); | 1210 EXPECT_TRUE(TestAndResetAvailable()); |
1226 } | 1211 } |
1227 | 1212 |
1228 EndTest(); | 1213 EndTest(); |
1229 break; | 1214 break; |
1230 } | 1215 } |
1231 } | 1216 } |
1232 | 1217 |
1233 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1218 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
1234 bool result) override { | |
1235 if (host_impl->active_tree()->source_frame_number() < 1) | 1219 if (host_impl->active_tree()->source_frame_number() < 1) |
1236 return; | 1220 return; |
1237 | 1221 |
1238 ReturnUnusedResourcesFromParent(host_impl); | 1222 ReturnUnusedResourcesFromParent(host_impl); |
1239 | 1223 |
1240 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1224 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
1241 FakeDelegatedRendererLayerImpl* delegated_impl = | 1225 FakeDelegatedRendererLayerImpl* delegated_impl = |
1242 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1226 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
1243 | 1227 |
1244 const ResourceProvider::ResourceIdMap& map = | 1228 const ResourceProvider::ResourceIdMap& map = |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1306 } | 1290 } |
1307 } | 1291 } |
1308 } | 1292 } |
1309 }; | 1293 }; |
1310 | 1294 |
1311 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestBadFrame); | 1295 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestBadFrame); |
1312 | 1296 |
1313 class LayerTreeHostDelegatedTestUnnamedResource | 1297 class LayerTreeHostDelegatedTestUnnamedResource |
1314 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1298 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1315 public: | 1299 public: |
1316 virtual void BeginTest() override { | 1300 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1317 PostSetNeedsCommitToMainThread(); | |
1318 } | |
1319 | 1301 |
1320 virtual void DidCommit() override { | 1302 void DidCommit() override { |
1321 scoped_ptr<DelegatedFrameData> frame; | 1303 scoped_ptr<DelegatedFrameData> frame; |
1322 ReturnedResourceArray resources; | 1304 ReturnedResourceArray resources; |
1323 | 1305 |
1324 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1306 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1325 switch (next_source_frame_number) { | 1307 switch (next_source_frame_number) { |
1326 case 1: | 1308 case 1: |
1327 // This frame includes two resources in it, but only uses one. | 1309 // This frame includes two resources in it, but only uses one. |
1328 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1310 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1329 AddTransferableResource(frame.get(), 999); | 1311 AddTransferableResource(frame.get(), 999); |
1330 AddTextureQuad(frame.get(), 555); | 1312 AddTextureQuad(frame.get(), 555); |
(...skipping 15 matching lines...) Expand all Loading... |
1346 unsigned expected[] = {999}; | 1328 unsigned expected[] = {999}; |
1347 EXPECT_RESOURCES(expected, resources); | 1329 EXPECT_RESOURCES(expected, resources); |
1348 EXPECT_TRUE(TestAndResetAvailable()); | 1330 EXPECT_TRUE(TestAndResetAvailable()); |
1349 } | 1331 } |
1350 | 1332 |
1351 EndTest(); | 1333 EndTest(); |
1352 break; | 1334 break; |
1353 } | 1335 } |
1354 } | 1336 } |
1355 | 1337 |
1356 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1338 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
1357 if (host_impl->active_tree()->source_frame_number() != 1) | 1339 if (host_impl->active_tree()->source_frame_number() != 1) |
1358 return; | 1340 return; |
1359 | 1341 |
1360 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1342 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
1361 FakeDelegatedRendererLayerImpl* delegated_impl = | 1343 FakeDelegatedRendererLayerImpl* delegated_impl = |
1362 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1344 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
1363 | 1345 |
1364 const ResourceProvider::ResourceIdMap& map = | 1346 const ResourceProvider::ResourceIdMap& map = |
1365 host_impl->resource_provider()->GetChildToParentMap( | 1347 host_impl->resource_provider()->GetChildToParentMap( |
1366 delegated_impl->ChildId()); | 1348 delegated_impl->ChildId()); |
1367 | 1349 |
1368 // The layer only held on to the resource that was used. | 1350 // The layer only held on to the resource that was used. |
1369 EXPECT_EQ(1u, map.size()); | 1351 EXPECT_EQ(1u, map.size()); |
1370 EXPECT_EQ(1u, map.count(555)); | 1352 EXPECT_EQ(1u, map.count(555)); |
1371 | 1353 |
1372 EXPECT_EQ(1u, delegated_impl->Resources().size()); | 1354 EXPECT_EQ(1u, delegated_impl->Resources().size()); |
1373 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); | 1355 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); |
1374 } | 1356 } |
1375 }; | 1357 }; |
1376 | 1358 |
1377 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestUnnamedResource); | 1359 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestUnnamedResource); |
1378 | 1360 |
1379 class LayerTreeHostDelegatedTestDontLeakResource | 1361 class LayerTreeHostDelegatedTestDontLeakResource |
1380 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1362 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1381 public: | 1363 public: |
1382 virtual void BeginTest() override { | 1364 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1383 PostSetNeedsCommitToMainThread(); | |
1384 } | |
1385 | 1365 |
1386 virtual void DidCommitAndDrawFrame() override { | 1366 void DidCommitAndDrawFrame() override { |
1387 scoped_ptr<DelegatedFrameData> frame; | 1367 scoped_ptr<DelegatedFrameData> frame; |
1388 ReturnedResourceArray resources; | 1368 ReturnedResourceArray resources; |
1389 | 1369 |
1390 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1370 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1391 switch (next_source_frame_number) { | 1371 switch (next_source_frame_number) { |
1392 case 1: | 1372 case 1: |
1393 // This frame includes two resources in it. | 1373 // This frame includes two resources in it. |
1394 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1374 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1395 AddTextureQuad(frame.get(), 999); | 1375 AddTextureQuad(frame.get(), 999); |
1396 AddTransferableResource(frame.get(), 999); | 1376 AddTransferableResource(frame.get(), 999); |
(...skipping 27 matching lines...) Expand all Loading... |
1424 { | 1404 { |
1425 unsigned expected[] = {555}; | 1405 unsigned expected[] = {555}; |
1426 EXPECT_RESOURCES(expected, resources); | 1406 EXPECT_RESOURCES(expected, resources); |
1427 EXPECT_TRUE(TestAndResetAvailable()); | 1407 EXPECT_TRUE(TestAndResetAvailable()); |
1428 } | 1408 } |
1429 EndTest(); | 1409 EndTest(); |
1430 break; | 1410 break; |
1431 } | 1411 } |
1432 } | 1412 } |
1433 | 1413 |
1434 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1414 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
1435 if (host_impl->active_tree()->source_frame_number() != 1) | 1415 if (host_impl->active_tree()->source_frame_number() != 1) |
1436 return; | 1416 return; |
1437 | 1417 |
1438 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1418 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
1439 FakeDelegatedRendererLayerImpl* delegated_impl = | 1419 FakeDelegatedRendererLayerImpl* delegated_impl = |
1440 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1420 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
1441 | 1421 |
1442 const ResourceProvider::ResourceIdMap& map = | 1422 const ResourceProvider::ResourceIdMap& map = |
1443 host_impl->resource_provider()->GetChildToParentMap( | 1423 host_impl->resource_provider()->GetChildToParentMap( |
1444 delegated_impl->ChildId()); | 1424 delegated_impl->ChildId()); |
1445 | 1425 |
1446 // The layer only held on to the resource that was used. | 1426 // The layer only held on to the resource that was used. |
1447 EXPECT_EQ(1u, map.size()); | 1427 EXPECT_EQ(1u, map.size()); |
1448 EXPECT_EQ(1u, map.count(555)); | 1428 EXPECT_EQ(1u, map.count(555)); |
1449 | 1429 |
1450 EXPECT_EQ(1u, delegated_impl->Resources().size()); | 1430 EXPECT_EQ(1u, delegated_impl->Resources().size()); |
1451 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); | 1431 EXPECT_EQ(1u, delegated_impl->Resources().count(555)); |
1452 } | 1432 } |
1453 | 1433 |
1454 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1434 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
1455 bool result) override { | |
1456 ReturnUnusedResourcesFromParent(host_impl); | 1435 ReturnUnusedResourcesFromParent(host_impl); |
1457 } | 1436 } |
1458 }; | 1437 }; |
1459 | 1438 |
1460 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestDontLeakResource); | 1439 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestDontLeakResource); |
1461 | 1440 |
1462 class LayerTreeHostDelegatedTestResourceSentToParent | 1441 class LayerTreeHostDelegatedTestResourceSentToParent |
1463 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1442 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1464 public: | 1443 public: |
1465 virtual void DidCommitAndDrawFrame() override { | 1444 void DidCommitAndDrawFrame() override { |
1466 scoped_ptr<DelegatedFrameData> frame; | 1445 scoped_ptr<DelegatedFrameData> frame; |
1467 ReturnedResourceArray resources; | 1446 ReturnedResourceArray resources; |
1468 | 1447 |
1469 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1448 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1470 switch (next_source_frame_number) { | 1449 switch (next_source_frame_number) { |
1471 case 1: | 1450 case 1: |
1472 // This frame includes two resources in it. | 1451 // This frame includes two resources in it. |
1473 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1452 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1474 AddTextureQuad(frame.get(), 999); | 1453 AddTextureQuad(frame.get(), 999); |
1475 AddTransferableResource(frame.get(), 999); | 1454 AddTransferableResource(frame.get(), 999); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1510 const ResourceProvider::ResourceIdMap& map = | 1489 const ResourceProvider::ResourceIdMap& map = |
1511 host_impl->resource_provider()->GetChildToParentMap( | 1490 host_impl->resource_provider()->GetChildToParentMap( |
1512 delegated_impl->ChildId()); | 1491 delegated_impl->ChildId()); |
1513 | 1492 |
1514 // Receive 999 back from the grandparent. | 1493 // Receive 999 back from the grandparent. |
1515 CompositorFrameAck ack; | 1494 CompositorFrameAck ack; |
1516 output_surface()->ReturnResource(map.find(999)->second, &ack); | 1495 output_surface()->ReturnResource(map.find(999)->second, &ack); |
1517 host_impl->ReclaimResources(&ack); | 1496 host_impl->ReclaimResources(&ack); |
1518 } | 1497 } |
1519 | 1498 |
1520 virtual void UnusedResourcesAreAvailable() override { | 1499 void UnusedResourcesAreAvailable() override { |
1521 EXPECT_EQ(3, layer_tree_host()->source_frame_number()); | 1500 EXPECT_EQ(3, layer_tree_host()->source_frame_number()); |
1522 | 1501 |
1523 ReturnedResourceArray resources; | 1502 ReturnedResourceArray resources; |
1524 | 1503 |
1525 // 999 was returned from the grandparent and could be released. | 1504 // 999 was returned from the grandparent and could be released. |
1526 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); | 1505 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
1527 { | 1506 { |
1528 unsigned expected[] = {999}; | 1507 unsigned expected[] = {999}; |
1529 EXPECT_RESOURCES(expected, resources); | 1508 EXPECT_RESOURCES(expected, resources); |
1530 } | 1509 } |
1531 | 1510 |
1532 EndTest(); | 1511 EndTest(); |
1533 } | 1512 } |
1534 | 1513 |
1535 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1514 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
1536 if (host_impl->active_tree()->source_frame_number() < 1) | 1515 if (host_impl->active_tree()->source_frame_number() < 1) |
1537 return; | 1516 return; |
1538 | 1517 |
1539 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1518 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
1540 FakeDelegatedRendererLayerImpl* delegated_impl = | 1519 FakeDelegatedRendererLayerImpl* delegated_impl = |
1541 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1520 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
1542 | 1521 |
1543 const ResourceProvider::ResourceIdMap& map = | 1522 const ResourceProvider::ResourceIdMap& map = |
1544 host_impl->resource_provider()->GetChildToParentMap( | 1523 host_impl->resource_provider()->GetChildToParentMap( |
1545 delegated_impl->ChildId()); | 1524 delegated_impl->ChildId()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1586 | 1565 |
1587 base::Closure receive_resource_on_thread_; | 1566 base::Closure receive_resource_on_thread_; |
1588 }; | 1567 }; |
1589 | 1568 |
1590 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F( | 1569 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F( |
1591 LayerTreeHostDelegatedTestResourceSentToParent); | 1570 LayerTreeHostDelegatedTestResourceSentToParent); |
1592 | 1571 |
1593 class LayerTreeHostDelegatedTestCommitWithoutTake | 1572 class LayerTreeHostDelegatedTestCommitWithoutTake |
1594 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1573 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1595 public: | 1574 public: |
1596 virtual void BeginTest() override { | 1575 void BeginTest() override { |
1597 // Prevent drawing with resources that are sent to the grandparent. | 1576 // Prevent drawing with resources that are sent to the grandparent. |
1598 layer_tree_host()->SetViewportSize(gfx::Size()); | 1577 layer_tree_host()->SetViewportSize(gfx::Size()); |
1599 PostSetNeedsCommitToMainThread(); | 1578 PostSetNeedsCommitToMainThread(); |
1600 } | 1579 } |
1601 | 1580 |
1602 virtual void DidCommit() override { | 1581 void DidCommit() override { |
1603 scoped_ptr<DelegatedFrameData> frame; | 1582 scoped_ptr<DelegatedFrameData> frame; |
1604 ReturnedResourceArray resources; | 1583 ReturnedResourceArray resources; |
1605 | 1584 |
1606 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1585 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1607 switch (next_source_frame_number) { | 1586 switch (next_source_frame_number) { |
1608 case 1: | 1587 case 1: |
1609 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1588 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1610 AddTextureQuad(frame.get(), 999); | 1589 AddTextureQuad(frame.get(), 999); |
1611 AddTransferableResource(frame.get(), 999); | 1590 AddTransferableResource(frame.get(), 999); |
1612 AddTextureQuad(frame.get(), 555); | 1591 AddTextureQuad(frame.get(), 555); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1658 unsigned expected[] = {555, 555, 555, 999}; | 1637 unsigned expected[] = {555, 555, 555, 999}; |
1659 EXPECT_RESOURCES(expected, resources); | 1638 EXPECT_RESOURCES(expected, resources); |
1660 EXPECT_TRUE(TestAndResetAvailable()); | 1639 EXPECT_TRUE(TestAndResetAvailable()); |
1661 } | 1640 } |
1662 | 1641 |
1663 EndTest(); | 1642 EndTest(); |
1664 break; | 1643 break; |
1665 } | 1644 } |
1666 } | 1645 } |
1667 | 1646 |
1668 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1647 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
1669 if (host_impl->active_tree()->source_frame_number() < 1) | 1648 if (host_impl->active_tree()->source_frame_number() < 1) |
1670 return; | 1649 return; |
1671 | 1650 |
1672 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); | 1651 LayerImpl* root_impl = host_impl->active_tree()->root_layer(); |
1673 FakeDelegatedRendererLayerImpl* delegated_impl = | 1652 FakeDelegatedRendererLayerImpl* delegated_impl = |
1674 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); | 1653 static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]); |
1675 | 1654 |
1676 const ResourceProvider::ResourceIdMap& map = | 1655 const ResourceProvider::ResourceIdMap& map = |
1677 host_impl->resource_provider()->GetChildToParentMap( | 1656 host_impl->resource_provider()->GetChildToParentMap( |
1678 delegated_impl->ChildId()); | 1657 delegated_impl->ChildId()); |
(...skipping 29 matching lines...) Expand all Loading... |
1708 } | 1687 } |
1709 }; | 1688 }; |
1710 | 1689 |
1711 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCommitWithoutTake); | 1690 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCommitWithoutTake); |
1712 | 1691 |
1713 class DelegatedFrameIsActivatedDuringCommit | 1692 class DelegatedFrameIsActivatedDuringCommit |
1714 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1693 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1715 protected: | 1694 protected: |
1716 DelegatedFrameIsActivatedDuringCommit() : returned_resource_count_(0) {} | 1695 DelegatedFrameIsActivatedDuringCommit() : returned_resource_count_(0) {} |
1717 | 1696 |
1718 virtual void BeginTest() override { | 1697 void BeginTest() override { |
1719 activate_count_ = 0; | 1698 activate_count_ = 0; |
1720 | 1699 |
1721 scoped_ptr<DelegatedFrameData> frame = | 1700 scoped_ptr<DelegatedFrameData> frame = |
1722 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1701 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1723 AddTextureQuad(frame.get(), 999); | 1702 AddTextureQuad(frame.get(), 999); |
1724 AddTransferableResource(frame.get(), 999); | 1703 AddTransferableResource(frame.get(), 999); |
1725 SetFrameData(frame.Pass()); | 1704 SetFrameData(frame.Pass()); |
1726 | 1705 |
1727 PostSetNeedsCommitToMainThread(); | 1706 PostSetNeedsCommitToMainThread(); |
1728 } | 1707 } |
1729 | 1708 |
1730 virtual void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override { | 1709 void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override { |
1731 ++activate_count_; | 1710 ++activate_count_; |
1732 } | 1711 } |
1733 | 1712 |
1734 virtual void DidCommit() override { | 1713 void DidCommit() override { |
1735 switch (layer_tree_host()->source_frame_number()) { | 1714 switch (layer_tree_host()->source_frame_number()) { |
1736 case 1: { | 1715 case 1: { |
1737 // The first frame has been activated. Set a new frame, and | 1716 // The first frame has been activated. Set a new frame, and |
1738 // expect the next commit to finish *after* it is activated. | 1717 // expect the next commit to finish *after* it is activated. |
1739 scoped_ptr<DelegatedFrameData> frame = | 1718 scoped_ptr<DelegatedFrameData> frame = |
1740 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1719 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1741 AddTextureQuad(frame.get(), 555); | 1720 AddTextureQuad(frame.get(), 555); |
1742 AddTransferableResource(frame.get(), 555); | 1721 AddTransferableResource(frame.get(), 555); |
1743 SetFrameData(frame.Pass()); | 1722 SetFrameData(frame.Pass()); |
1744 break; | 1723 break; |
1745 } | 1724 } |
1746 case 2: | 1725 case 2: |
1747 // The second frame has been activated. Remove the layer from | 1726 // The second frame has been activated. Remove the layer from |
1748 // the tree to cause another commit/activation. The commit should | 1727 // the tree to cause another commit/activation. The commit should |
1749 // finish *after* the layer is removed from the active tree. | 1728 // finish *after* the layer is removed from the active tree. |
1750 delegated_->RemoveFromParent(); | 1729 delegated_->RemoveFromParent(); |
1751 break; | 1730 break; |
1752 case 3: | 1731 case 3: |
1753 // Finish the test by releasing resources on the next frame. | 1732 // Finish the test by releasing resources on the next frame. |
1754 scoped_ptr<DelegatedFrameData> frame = | 1733 scoped_ptr<DelegatedFrameData> frame = |
1755 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1734 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1756 SetFrameData(frame.Pass()); | 1735 SetFrameData(frame.Pass()); |
1757 break; | 1736 break; |
1758 } | 1737 } |
1759 } | 1738 } |
1760 | 1739 |
1761 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { | 1740 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { |
1762 switch (host_impl->active_tree()->source_frame_number()) { | 1741 switch (host_impl->active_tree()->source_frame_number()) { |
1763 case 0: { | 1742 case 0: { |
1764 // The activate for the 1st frame should have happened before now. | 1743 // The activate for the 1st frame should have happened before now. |
1765 EXPECT_EQ(1, activate_count_); | 1744 EXPECT_EQ(1, activate_count_); |
1766 break; | 1745 break; |
1767 } | 1746 } |
1768 case 1: { | 1747 case 1: { |
1769 // The activate for the 2nd frame should have happened before now. | 1748 // The activate for the 2nd frame should have happened before now. |
1770 EXPECT_EQ(2, activate_count_); | 1749 EXPECT_EQ(2, activate_count_); |
1771 break; | 1750 break; |
1772 } | 1751 } |
1773 case 2: { | 1752 case 2: { |
1774 // The activate to remove the layer should have happened before now. | 1753 // The activate to remove the layer should have happened before now. |
1775 EXPECT_EQ(3, activate_count_); | 1754 EXPECT_EQ(3, activate_count_); |
1776 break; | 1755 break; |
1777 } | 1756 } |
1778 case 3: { | 1757 case 3: { |
1779 NOTREACHED(); | 1758 NOTREACHED(); |
1780 break; | 1759 break; |
1781 } | 1760 } |
1782 } | 1761 } |
1783 } | 1762 } |
1784 | 1763 |
1785 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1764 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
1786 bool result) override { | |
1787 ReturnUnusedResourcesFromParent(host_impl); | 1765 ReturnUnusedResourcesFromParent(host_impl); |
1788 } | 1766 } |
1789 | 1767 |
1790 virtual void UnusedResourcesAreAvailable() override { | 1768 void UnusedResourcesAreAvailable() override { |
1791 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer:: | 1769 LayerTreeHostDelegatedTestCaseSingleDelegatedLayer:: |
1792 UnusedResourcesAreAvailable(); | 1770 UnusedResourcesAreAvailable(); |
1793 ReturnedResourceArray resources; | 1771 ReturnedResourceArray resources; |
1794 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); | 1772 resource_collection_->TakeUnusedResourcesForChildCompositor(&resources); |
1795 EXPECT_TRUE(TestAndResetAvailable()); | 1773 EXPECT_TRUE(TestAndResetAvailable()); |
1796 returned_resource_count_ += resources.size(); | 1774 returned_resource_count_ += resources.size(); |
1797 if (returned_resource_count_ == 2) | 1775 if (returned_resource_count_ == 2) |
1798 EndTest(); | 1776 EndTest(); |
1799 } | 1777 } |
1800 | 1778 |
1801 int activate_count_; | 1779 int activate_count_; |
1802 size_t returned_resource_count_; | 1780 size_t returned_resource_count_; |
1803 }; | 1781 }; |
1804 | 1782 |
1805 SINGLE_AND_MULTI_THREAD_TEST_F( | 1783 SINGLE_AND_MULTI_THREAD_TEST_F( |
1806 DelegatedFrameIsActivatedDuringCommit); | 1784 DelegatedFrameIsActivatedDuringCommit); |
1807 | 1785 |
1808 class LayerTreeHostDelegatedTestTwoImplLayers | 1786 class LayerTreeHostDelegatedTestTwoImplLayers |
1809 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1787 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1810 public: | 1788 public: |
1811 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1789 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1812 | 1790 |
1813 virtual void DidCommitAndDrawFrame() override { | 1791 void DidCommitAndDrawFrame() override { |
1814 scoped_ptr<DelegatedFrameData> frame; | 1792 scoped_ptr<DelegatedFrameData> frame; |
1815 ReturnedResourceArray resources; | 1793 ReturnedResourceArray resources; |
1816 | 1794 |
1817 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1795 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1818 switch (next_source_frame_number) { | 1796 switch (next_source_frame_number) { |
1819 case 1: | 1797 case 1: |
1820 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1798 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1821 AddTextureQuad(frame.get(), 999); | 1799 AddTextureQuad(frame.get(), 999); |
1822 AddTransferableResource(frame.get(), 999); | 1800 AddTransferableResource(frame.get(), 999); |
1823 AddTextureQuad(frame.get(), 555); | 1801 AddTextureQuad(frame.get(), 555); |
(...skipping 26 matching lines...) Expand all Loading... |
1850 { | 1828 { |
1851 unsigned expected[] = {555, 999}; | 1829 unsigned expected[] = {555, 999}; |
1852 EXPECT_RESOURCES(expected, resources); | 1830 EXPECT_RESOURCES(expected, resources); |
1853 EXPECT_TRUE(TestAndResetAvailable()); | 1831 EXPECT_TRUE(TestAndResetAvailable()); |
1854 } | 1832 } |
1855 EndTest(); | 1833 EndTest(); |
1856 break; | 1834 break; |
1857 } | 1835 } |
1858 } | 1836 } |
1859 | 1837 |
1860 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1838 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
1861 bool result) override { | |
1862 ReturnUnusedResourcesFromParent(host_impl); | 1839 ReturnUnusedResourcesFromParent(host_impl); |
1863 } | 1840 } |
1864 }; | 1841 }; |
1865 | 1842 |
1866 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoImplLayers); | 1843 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoImplLayers); |
1867 | 1844 |
1868 class LayerTreeHostDelegatedTestTwoImplLayersTwoFrames | 1845 class LayerTreeHostDelegatedTestTwoImplLayersTwoFrames |
1869 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1846 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1870 public: | 1847 public: |
1871 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1848 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1872 | 1849 |
1873 virtual void DidCommitAndDrawFrame() override { | 1850 void DidCommitAndDrawFrame() override { |
1874 scoped_ptr<DelegatedFrameData> frame; | 1851 scoped_ptr<DelegatedFrameData> frame; |
1875 ReturnedResourceArray resources; | 1852 ReturnedResourceArray resources; |
1876 | 1853 |
1877 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1854 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1878 switch (next_source_frame_number) { | 1855 switch (next_source_frame_number) { |
1879 case 1: | 1856 case 1: |
1880 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1857 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1881 AddTextureQuad(frame.get(), 999); | 1858 AddTextureQuad(frame.get(), 999); |
1882 AddTransferableResource(frame.get(), 999); | 1859 AddTransferableResource(frame.get(), 999); |
1883 AddTextureQuad(frame.get(), 555); | 1860 AddTextureQuad(frame.get(), 555); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1919 { | 1896 { |
1920 unsigned expected[] = {555, 555, 999, 999}; | 1897 unsigned expected[] = {555, 555, 999, 999}; |
1921 EXPECT_RESOURCES(expected, resources); | 1898 EXPECT_RESOURCES(expected, resources); |
1922 EXPECT_TRUE(TestAndResetAvailable()); | 1899 EXPECT_TRUE(TestAndResetAvailable()); |
1923 } | 1900 } |
1924 EndTest(); | 1901 EndTest(); |
1925 break; | 1902 break; |
1926 } | 1903 } |
1927 } | 1904 } |
1928 | 1905 |
1929 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1906 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
1930 bool result) override { | |
1931 ReturnUnusedResourcesFromParent(host_impl); | 1907 ReturnUnusedResourcesFromParent(host_impl); |
1932 } | 1908 } |
1933 }; | 1909 }; |
1934 | 1910 |
1935 SINGLE_AND_MULTI_THREAD_TEST_F( | 1911 SINGLE_AND_MULTI_THREAD_TEST_F( |
1936 LayerTreeHostDelegatedTestTwoImplLayersTwoFrames); | 1912 LayerTreeHostDelegatedTestTwoImplLayersTwoFrames); |
1937 | 1913 |
1938 class LayerTreeHostDelegatedTestTwoLayers | 1914 class LayerTreeHostDelegatedTestTwoLayers |
1939 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 1915 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
1940 public: | 1916 public: |
1941 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1917 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1942 | 1918 |
1943 virtual void DidCommitAndDrawFrame() override { | 1919 void DidCommitAndDrawFrame() override { |
1944 scoped_ptr<DelegatedFrameData> frame; | 1920 scoped_ptr<DelegatedFrameData> frame; |
1945 ReturnedResourceArray resources; | 1921 ReturnedResourceArray resources; |
1946 | 1922 |
1947 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 1923 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
1948 switch (next_source_frame_number) { | 1924 switch (next_source_frame_number) { |
1949 case 1: | 1925 case 1: |
1950 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 1926 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
1951 AddTextureQuad(frame.get(), 999); | 1927 AddTextureQuad(frame.get(), 999); |
1952 AddTransferableResource(frame.get(), 999); | 1928 AddTransferableResource(frame.get(), 999); |
1953 AddTextureQuad(frame.get(), 555); | 1929 AddTextureQuad(frame.get(), 555); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2006 { | 1982 { |
2007 unsigned expected[] = {555, 999}; | 1983 unsigned expected[] = {555, 999}; |
2008 EXPECT_RESOURCES(expected, resources); | 1984 EXPECT_RESOURCES(expected, resources); |
2009 EXPECT_TRUE(TestAndResetAvailable()); | 1985 EXPECT_TRUE(TestAndResetAvailable()); |
2010 } | 1986 } |
2011 EndTest(); | 1987 EndTest(); |
2012 break; | 1988 break; |
2013 } | 1989 } |
2014 } | 1990 } |
2015 | 1991 |
2016 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 1992 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
2017 bool result) override { | |
2018 ReturnUnusedResourcesFromParent(host_impl); | 1993 ReturnUnusedResourcesFromParent(host_impl); |
2019 } | 1994 } |
2020 | 1995 |
2021 scoped_refptr<DelegatedRendererLayer> delegated_thief_; | 1996 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
2022 }; | 1997 }; |
2023 | 1998 |
2024 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoLayers); | 1999 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestTwoLayers); |
2025 | 2000 |
2026 class LayerTreeHostDelegatedTestRemoveAndAddToTree | 2001 class LayerTreeHostDelegatedTestRemoveAndAddToTree |
2027 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 2002 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
2028 public: | 2003 public: |
2029 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 2004 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
2030 | 2005 |
2031 virtual void DidCommitAndDrawFrame() override { | 2006 void DidCommitAndDrawFrame() override { |
2032 scoped_ptr<DelegatedFrameData> frame; | 2007 scoped_ptr<DelegatedFrameData> frame; |
2033 ReturnedResourceArray resources; | 2008 ReturnedResourceArray resources; |
2034 | 2009 |
2035 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 2010 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
2036 switch (next_source_frame_number) { | 2011 switch (next_source_frame_number) { |
2037 case 1: | 2012 case 1: |
2038 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 2013 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
2039 AddTextureQuad(frame.get(), 999); | 2014 AddTextureQuad(frame.get(), 999); |
2040 AddTransferableResource(frame.get(), 999); | 2015 AddTransferableResource(frame.get(), 999); |
2041 AddTextureQuad(frame.get(), 555); | 2016 AddTextureQuad(frame.get(), 555); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2098 { | 2073 { |
2099 unsigned expected[] = {777, 888}; | 2074 unsigned expected[] = {777, 888}; |
2100 EXPECT_RESOURCES(expected, resources); | 2075 EXPECT_RESOURCES(expected, resources); |
2101 EXPECT_TRUE(TestAndResetAvailable()); | 2076 EXPECT_TRUE(TestAndResetAvailable()); |
2102 } | 2077 } |
2103 EndTest(); | 2078 EndTest(); |
2104 break; | 2079 break; |
2105 } | 2080 } |
2106 } | 2081 } |
2107 | 2082 |
2108 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 2083 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
2109 bool result) override { | |
2110 ReturnUnusedResourcesFromParent(host_impl); | 2084 ReturnUnusedResourcesFromParent(host_impl); |
2111 } | 2085 } |
2112 | 2086 |
2113 scoped_refptr<DelegatedRendererLayer> delegated_thief_; | 2087 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
2114 }; | 2088 }; |
2115 | 2089 |
2116 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemoveAndAddToTree); | 2090 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestRemoveAndAddToTree); |
2117 | 2091 |
2118 class LayerTreeHostDelegatedTestRemoveAndChangeResources | 2092 class LayerTreeHostDelegatedTestRemoveAndChangeResources |
2119 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 2093 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
2120 public: | 2094 public: |
2121 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 2095 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
2122 | 2096 |
2123 virtual void DidCommitAndDrawFrame() override { | 2097 void DidCommitAndDrawFrame() override { |
2124 scoped_ptr<DelegatedFrameData> frame; | 2098 scoped_ptr<DelegatedFrameData> frame; |
2125 ReturnedResourceArray resources; | 2099 ReturnedResourceArray resources; |
2126 | 2100 |
2127 int next_source_frame_number = layer_tree_host()->source_frame_number(); | 2101 int next_source_frame_number = layer_tree_host()->source_frame_number(); |
2128 switch (next_source_frame_number) { | 2102 switch (next_source_frame_number) { |
2129 case 1: | 2103 case 1: |
2130 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); | 2104 frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)); |
2131 AddTextureQuad(frame.get(), 999); | 2105 AddTextureQuad(frame.get(), 999); |
2132 AddTransferableResource(frame.get(), 999); | 2106 AddTransferableResource(frame.get(), 999); |
2133 AddTextureQuad(frame.get(), 555); | 2107 AddTextureQuad(frame.get(), 555); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2180 { | 2154 { |
2181 unsigned expected[] = {777, 888}; | 2155 unsigned expected[] = {777, 888}; |
2182 EXPECT_RESOURCES(expected, resources); | 2156 EXPECT_RESOURCES(expected, resources); |
2183 EXPECT_TRUE(TestAndResetAvailable()); | 2157 EXPECT_TRUE(TestAndResetAvailable()); |
2184 } | 2158 } |
2185 EndTest(); | 2159 EndTest(); |
2186 break; | 2160 break; |
2187 } | 2161 } |
2188 } | 2162 } |
2189 | 2163 |
2190 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, | 2164 void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) override { |
2191 bool result) override { | |
2192 ReturnUnusedResourcesFromParent(host_impl); | 2165 ReturnUnusedResourcesFromParent(host_impl); |
2193 } | 2166 } |
2194 | 2167 |
2195 scoped_refptr<DelegatedRendererLayer> delegated_thief_; | 2168 scoped_refptr<DelegatedRendererLayer> delegated_thief_; |
2196 }; | 2169 }; |
2197 | 2170 |
2198 SINGLE_AND_MULTI_THREAD_TEST_F( | 2171 SINGLE_AND_MULTI_THREAD_TEST_F( |
2199 LayerTreeHostDelegatedTestRemoveAndChangeResources); | 2172 LayerTreeHostDelegatedTestRemoveAndChangeResources); |
2200 | 2173 |
2201 } // namespace | 2174 } // namespace |
2202 } // namespace cc | 2175 } // namespace cc |
OLD | NEW |