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/resources/resource_provider.h" | 5 #include "cc/resources/resource_provider.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 GLuint external_texture_id = child_context_->createExternalTexture(); | 647 GLuint external_texture_id = child_context_->createExternalTexture(); |
648 | 648 |
649 gpu::Mailbox external_mailbox; | 649 gpu::Mailbox external_mailbox; |
650 child_context_->genMailboxCHROMIUM(external_mailbox.name); | 650 child_context_->genMailboxCHROMIUM(external_mailbox.name); |
651 child_context_->produceTextureDirectCHROMIUM( | 651 child_context_->produceTextureDirectCHROMIUM( |
652 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); | 652 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); |
653 gpu::SyncToken external_sync_token; | 653 gpu::SyncToken external_sync_token; |
654 child_context_->genSyncToken(child_context_->insertFenceSync(), | 654 child_context_->genSyncToken(child_context_->insertFenceSync(), |
655 external_sync_token.GetData()); | 655 external_sync_token.GetData()); |
656 EXPECT_TRUE(external_sync_token.HasData()); | 656 EXPECT_TRUE(external_sync_token.HasData()); |
| 657 |
| 658 gfx::ColorSpace id4_color_space = gfx::ColorSpace::CreateSRGB(); |
| 659 TextureMailbox id4_mailbox(external_mailbox, external_sync_token, |
| 660 GL_TEXTURE_EXTERNAL_OES); |
| 661 id4_mailbox.set_color_space(id4_color_space); |
657 ResourceId id4 = child_resource_provider_->CreateResourceFromTextureMailbox( | 662 ResourceId id4 = child_resource_provider_->CreateResourceFromTextureMailbox( |
658 TextureMailbox(external_mailbox, external_sync_token, | 663 id4_mailbox, |
659 GL_TEXTURE_EXTERNAL_OES), | |
660 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); | 664 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
661 | 665 |
662 ReturnedResourceArray returned_to_child; | 666 ReturnedResourceArray returned_to_child; |
663 int child_id = | 667 int child_id = |
664 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 668 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
665 | 669 |
666 { | 670 { |
667 // Transfer some resources to the parent. | 671 // Transfer some resources to the parent. |
668 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 672 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
669 resource_ids_to_transfer.push_back(id1); | 673 resource_ids_to_transfer.push_back(id1); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 | 739 |
736 uint8_t result[4] = { 0 }; | 740 uint8_t result[4] = { 0 }; |
737 GetResourcePixels( | 741 GetResourcePixels( |
738 resource_provider_.get(), context(), mapped_id1, size, format, result); | 742 resource_provider_.get(), context(), mapped_id1, size, format, result); |
739 EXPECT_EQ(0, memcmp(data1, result, pixel_size)); | 743 EXPECT_EQ(0, memcmp(data1, result, pixel_size)); |
740 | 744 |
741 GetResourcePixels( | 745 GetResourcePixels( |
742 resource_provider_.get(), context(), mapped_id2, size, format, result); | 746 resource_provider_.get(), context(), mapped_id2, size, format, result); |
743 EXPECT_EQ(0, memcmp(data2, result, pixel_size)); | 747 EXPECT_EQ(0, memcmp(data2, result, pixel_size)); |
744 | 748 |
| 749 EXPECT_FALSE(resource_provider_->IsOverlayCandidate(mapped_id1)); |
| 750 EXPECT_FALSE(resource_provider_->IsOverlayCandidate(mapped_id2)); |
| 751 EXPECT_TRUE(resource_provider_->IsOverlayCandidate(mapped_id3)); |
| 752 EXPECT_FALSE(resource_provider_->IsOverlayCandidate(mapped_id4)); |
| 753 |
| 754 { |
| 755 resource_provider_->WaitSyncTokenIfNeeded(mapped_id4); |
| 756 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
| 757 mapped_id4); |
| 758 EXPECT_TRUE(lock.color_space() == id4_color_space); |
| 759 } |
| 760 |
745 { | 761 { |
746 // Check that transfering again the same resource from the child to the | 762 // Check that transfering again the same resource from the child to the |
747 // parent works. | 763 // parent works. |
748 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 764 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
749 resource_ids_to_transfer.push_back(id1); | 765 resource_ids_to_transfer.push_back(id1); |
750 resource_ids_to_transfer.push_back(id2); | 766 resource_ids_to_transfer.push_back(id2); |
751 resource_ids_to_transfer.push_back(id3); | 767 resource_ids_to_transfer.push_back(id3); |
752 TransferableResourceArray list; | 768 TransferableResourceArray list; |
753 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 769 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
754 &list); | 770 &list); |
(...skipping 2930 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3685 resource_provider->AllocateForTesting(id); | 3701 resource_provider->AllocateForTesting(id); |
3686 Mock::VerifyAndClearExpectations(context); | 3702 Mock::VerifyAndClearExpectations(context); |
3687 | 3703 |
3688 DCHECK_EQ(10u, context->PeekTextureId()); | 3704 DCHECK_EQ(10u, context->PeekTextureId()); |
3689 resource_provider->DeleteResource(id); | 3705 resource_provider->DeleteResource(id); |
3690 } | 3706 } |
3691 } | 3707 } |
3692 | 3708 |
3693 } // namespace | 3709 } // namespace |
3694 } // namespace cc | 3710 } // namespace cc |
OLD | NEW |