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 <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 id1); | 870 id1); |
871 child_resource_provider_->DeleteResource(id1); | 871 child_resource_provider_->DeleteResource(id1); |
872 EXPECT_EQ(1u, child_resource_provider_->num_resources()); | 872 EXPECT_EQ(1u, child_resource_provider_->num_resources()); |
873 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 873 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
874 } | 874 } |
875 | 875 |
876 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 876 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
877 resource_provider_->DestroyChild(child_id); | 877 resource_provider_->DestroyChild(child_id); |
878 } | 878 } |
879 | 879 |
| 880 TEST_P(ResourceProviderTest, AllowOverlayTransfersToParent) { |
| 881 // Overlays only supported on the GL path. |
| 882 if (GetParam() != ResourceProvider::GLTexture) |
| 883 return; |
| 884 |
| 885 uint32 sync_point = 0; |
| 886 TextureMailbox mailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
| 887 mailbox.set_allow_overlay(true); |
| 888 scoped_ptr<SingleReleaseCallback> release_callback = |
| 889 SingleReleaseCallback::Create(base::Bind(&EmptyReleaseCallback)); |
| 890 ResourceProvider::ResourceId id1 = |
| 891 child_resource_provider_->CreateResourceFromTextureMailbox( |
| 892 mailbox, release_callback.Pass()); |
| 893 |
| 894 TextureMailbox mailbox2(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
| 895 mailbox2.set_allow_overlay(false); |
| 896 scoped_ptr<SingleReleaseCallback> release_callback2 = |
| 897 SingleReleaseCallback::Create(base::Bind(&EmptyReleaseCallback)); |
| 898 ResourceProvider::ResourceId id2 = |
| 899 child_resource_provider_->CreateResourceFromTextureMailbox( |
| 900 mailbox2, release_callback2.Pass()); |
| 901 |
| 902 ReturnedResourceArray returned_to_child; |
| 903 int child_id = |
| 904 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 905 |
| 906 // Transfer some resources to the parent. |
| 907 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 908 resource_ids_to_transfer.push_back(id1); |
| 909 resource_ids_to_transfer.push_back(id2); |
| 910 TransferableResourceArray list; |
| 911 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 912 &list); |
| 913 ASSERT_EQ(2u, list.size()); |
| 914 resource_provider_->ReceiveFromChild(child_id, list); |
| 915 EXPECT_TRUE(resource_provider_->AllowOverlay(list[0].id)); |
| 916 EXPECT_FALSE(resource_provider_->AllowOverlay(list[1].id)); |
| 917 |
| 918 resource_provider_->DeclareUsedResourcesFromChild( |
| 919 child_id, ResourceProvider::ResourceIdArray()); |
| 920 |
| 921 EXPECT_EQ(2u, returned_to_child.size()); |
| 922 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 923 |
| 924 child_resource_provider_->DeleteResource(id1); |
| 925 child_resource_provider_->DeleteResource(id2); |
| 926 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
| 927 |
| 928 resource_provider_->DestroyChild(child_id); |
| 929 } |
| 930 |
880 TEST_P(ResourceProviderTest, TransferSoftwareResources) { | 931 TEST_P(ResourceProviderTest, TransferSoftwareResources) { |
881 if (GetParam() != ResourceProvider::Bitmap) | 932 if (GetParam() != ResourceProvider::Bitmap) |
882 return; | 933 return; |
883 | 934 |
884 gfx::Size size(1, 1); | 935 gfx::Size size(1, 1); |
885 ResourceFormat format = RGBA_8888; | 936 ResourceFormat format = RGBA_8888; |
886 size_t pixel_size = TextureSizeBytes(size, format); | 937 size_t pixel_size = TextureSizeBytes(size, format); |
887 ASSERT_EQ(4U, pixel_size); | 938 ASSERT_EQ(4U, pixel_size); |
888 | 939 |
889 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 940 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
(...skipping 2464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3354 resource_provider->AllocateForTesting(id); | 3405 resource_provider->AllocateForTesting(id); |
3355 Mock::VerifyAndClearExpectations(context); | 3406 Mock::VerifyAndClearExpectations(context); |
3356 | 3407 |
3357 DCHECK_EQ(10u, context->PeekTextureId()); | 3408 DCHECK_EQ(10u, context->PeekTextureId()); |
3358 resource_provider->DeleteResource(id); | 3409 resource_provider->DeleteResource(id); |
3359 } | 3410 } |
3360 } | 3411 } |
3361 | 3412 |
3362 } // namespace | 3413 } // namespace |
3363 } // namespace cc | 3414 } // namespace cc |
OLD | NEW |