| 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 |