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/texture_layer.h" | 5 #include "cc/layers/texture_layer.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "cc/base/thread.h" | 10 #include "cc/base/thread.h" |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 virtual void SetUp() { | 414 virtual void SetUp() { |
415 TextureLayerTest::SetUp(); | 415 TextureLayerTest::SetUp(); |
416 layer_tree_host_.reset(new MockLayerTreeHost(&fake_client_)); | 416 layer_tree_host_.reset(new MockLayerTreeHost(&fake_client_)); |
417 EXPECT_TRUE(host_impl_.InitializeRenderer(CreateFakeOutputSurface())); | 417 EXPECT_TRUE(host_impl_.InitializeRenderer(CreateFakeOutputSurface())); |
418 } | 418 } |
419 | 419 |
420 CommonMailboxObjects test_data_; | 420 CommonMailboxObjects test_data_; |
421 FakeLayerTreeHostClient fake_client_; | 421 FakeLayerTreeHostClient fake_client_; |
422 }; | 422 }; |
423 | 423 |
| 424 // Test conditions for results of TextureLayerImpl::WillDraw under |
| 425 // different configurations of different mailbox, texture_id, and draw_mode. |
| 426 TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) { |
| 427 // Hardware mode. |
| 428 { |
| 429 scoped_ptr<TextureLayerImpl> impl_layer = |
| 430 TextureLayerImpl::Create(host_impl_.active_tree(), 1, true); |
| 431 impl_layer->SetTextureMailbox(test_data_.mailbox1_); |
| 432 impl_layer->DidBecomeActive(); |
| 433 EXPECT_TRUE(impl_layer->WillDraw( |
| 434 DRAW_MODE_HARDWARE, host_impl_.active_tree()->resource_provider())); |
| 435 impl_layer->DidDraw(host_impl_.active_tree()->resource_provider()); |
| 436 } |
| 437 |
| 438 { |
| 439 scoped_ptr<TextureLayerImpl> impl_layer = |
| 440 TextureLayerImpl::Create(host_impl_.active_tree(), 1, true); |
| 441 impl_layer->SetTextureMailbox(test_data_.mailbox1_); |
| 442 EXPECT_FALSE(impl_layer->WillDraw( |
| 443 DRAW_MODE_HARDWARE, host_impl_.active_tree()->resource_provider())); |
| 444 } |
| 445 |
| 446 { |
| 447 scoped_ptr<TextureLayerImpl> impl_layer = |
| 448 TextureLayerImpl::Create(host_impl_.active_tree(), 1, false); |
| 449 unsigned texture = |
| 450 host_impl_.output_surface()->context3d()->createTexture(); |
| 451 impl_layer->set_texture_id(texture); |
| 452 EXPECT_TRUE(impl_layer->WillDraw( |
| 453 DRAW_MODE_HARDWARE, host_impl_.active_tree()->resource_provider())); |
| 454 impl_layer->DidDraw(host_impl_.active_tree()->resource_provider()); |
| 455 } |
| 456 |
| 457 { |
| 458 scoped_ptr<TextureLayerImpl> impl_layer = |
| 459 TextureLayerImpl::Create(host_impl_.active_tree(), 1, false); |
| 460 impl_layer->set_texture_id(0); |
| 461 EXPECT_FALSE(impl_layer->WillDraw( |
| 462 DRAW_MODE_HARDWARE, host_impl_.active_tree()->resource_provider())); |
| 463 } |
| 464 |
| 465 // Resourceless software mode. |
| 466 { |
| 467 scoped_ptr<TextureLayerImpl> impl_layer = |
| 468 TextureLayerImpl::Create(host_impl_.active_tree(), 1, true); |
| 469 impl_layer->SetTextureMailbox(test_data_.mailbox1_); |
| 470 impl_layer->DidBecomeActive(); |
| 471 EXPECT_FALSE( |
| 472 impl_layer->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, |
| 473 host_impl_.active_tree()->resource_provider())); |
| 474 } |
| 475 |
| 476 { |
| 477 scoped_ptr<TextureLayerImpl> impl_layer = |
| 478 TextureLayerImpl::Create(host_impl_.active_tree(), 1, false); |
| 479 unsigned texture = |
| 480 host_impl_.output_surface()->context3d()->createTexture(); |
| 481 impl_layer->set_texture_id(texture); |
| 482 EXPECT_FALSE( |
| 483 impl_layer->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, |
| 484 host_impl_.active_tree()->resource_provider())); |
| 485 } |
| 486 } |
| 487 |
424 TEST_F(TextureLayerImplWithMailboxTest, TestImplLayerCallbacks) { | 488 TEST_F(TextureLayerImplWithMailboxTest, TestImplLayerCallbacks) { |
425 host_impl_.CreatePendingTree(); | 489 host_impl_.CreatePendingTree(); |
426 scoped_ptr<TextureLayerImpl> pending_layer; | 490 scoped_ptr<TextureLayerImpl> pending_layer; |
427 pending_layer = TextureLayerImpl::Create(host_impl_.pending_tree(), 1, true); | 491 pending_layer = TextureLayerImpl::Create(host_impl_.pending_tree(), 1, true); |
428 ASSERT_TRUE(pending_layer); | 492 ASSERT_TRUE(pending_layer); |
429 | 493 |
430 scoped_ptr<LayerImpl> active_layer( | 494 scoped_ptr<LayerImpl> active_layer( |
431 pending_layer->CreateLayerImpl(host_impl_.active_tree())); | 495 pending_layer->CreateLayerImpl(host_impl_.active_tree())); |
432 ASSERT_TRUE(active_layer); | 496 ASSERT_TRUE(active_layer); |
433 | 497 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 TEST_F(TextureLayerImplWithMailboxTest, | 542 TEST_F(TextureLayerImplWithMailboxTest, |
479 TestDestructorCallbackOnCreatedResource) { | 543 TestDestructorCallbackOnCreatedResource) { |
480 scoped_ptr<TextureLayerImpl> impl_layer; | 544 scoped_ptr<TextureLayerImpl> impl_layer; |
481 impl_layer = TextureLayerImpl::Create(host_impl_.active_tree(), 1, true); | 545 impl_layer = TextureLayerImpl::Create(host_impl_.active_tree(), 1, true); |
482 ASSERT_TRUE(impl_layer); | 546 ASSERT_TRUE(impl_layer); |
483 | 547 |
484 EXPECT_CALL(test_data_.mock_callback_, | 548 EXPECT_CALL(test_data_.mock_callback_, |
485 Release(test_data_.mailbox_name1_, _, false)) | 549 Release(test_data_.mailbox_name1_, _, false)) |
486 .Times(1); | 550 .Times(1); |
487 impl_layer->SetTextureMailbox(test_data_.mailbox1_); | 551 impl_layer->SetTextureMailbox(test_data_.mailbox1_); |
488 impl_layer->WillDraw(host_impl_.active_tree()->resource_provider()); | 552 impl_layer->DidBecomeActive(); |
| 553 EXPECT_TRUE(impl_layer->WillDraw( |
| 554 DRAW_MODE_HARDWARE, host_impl_.active_tree()->resource_provider())); |
489 impl_layer->DidDraw(host_impl_.active_tree()->resource_provider()); | 555 impl_layer->DidDraw(host_impl_.active_tree()->resource_provider()); |
490 impl_layer->SetTextureMailbox(TextureMailbox()); | 556 impl_layer->SetTextureMailbox(TextureMailbox()); |
491 } | 557 } |
492 | 558 |
493 TEST_F(TextureLayerImplWithMailboxTest, TestCallbackOnInUseResource) { | 559 TEST_F(TextureLayerImplWithMailboxTest, TestCallbackOnInUseResource) { |
494 ResourceProvider* provider = host_impl_.active_tree()->resource_provider(); | 560 ResourceProvider* provider = host_impl_.active_tree()->resource_provider(); |
495 ResourceProvider::ResourceId id = | 561 ResourceProvider::ResourceId id = |
496 provider->CreateResourceFromTextureMailbox(test_data_.mailbox1_); | 562 provider->CreateResourceFromTextureMailbox(test_data_.mailbox1_); |
497 provider->AllocateForTesting(id); | 563 provider->AllocateForTesting(id); |
498 | 564 |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 base::Lock lock_; | 689 base::Lock lock_; |
624 unsigned expected_used_textures_on_commit_; | 690 unsigned expected_used_textures_on_commit_; |
625 }; | 691 }; |
626 | 692 |
627 // The TextureLayerClient does not use mailboxes, so can't use a delegating | 693 // The TextureLayerClient does not use mailboxes, so can't use a delegating |
628 // renderer. | 694 // renderer. |
629 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TextureLayerClientTest); | 695 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TextureLayerClientTest); |
630 | 696 |
631 } // namespace | 697 } // namespace |
632 } // namespace cc | 698 } // namespace cc |
OLD | NEW |