| 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 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 resource_provider_->ReceiveFromChild(child_id, list); | 694 resource_provider_->ReceiveFromChild(child_id, list); |
| 695 EXPECT_NE(list[0].mailbox_holder.sync_token, | 695 EXPECT_NE(list[0].mailbox_holder.sync_token, |
| 696 context3d_->last_waited_sync_token()); | 696 context3d_->last_waited_sync_token()); |
| 697 { | 697 { |
| 698 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); | 698 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); |
| 699 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), | 699 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
| 700 list[0].id); | 700 list[0].id); |
| 701 } | 701 } |
| 702 EXPECT_EQ(list[0].mailbox_holder.sync_token, | 702 EXPECT_EQ(list[0].mailbox_holder.sync_token, |
| 703 context3d_->last_waited_sync_token()); | 703 context3d_->last_waited_sync_token()); |
| 704 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 704 ResourceIdSet resource_ids_to_receive; |
| 705 resource_ids_to_receive.insert(id1); | 705 resource_ids_to_receive.insert(id1); |
| 706 resource_ids_to_receive.insert(id2); | 706 resource_ids_to_receive.insert(id2); |
| 707 resource_ids_to_receive.insert(id3); | 707 resource_ids_to_receive.insert(id3); |
| 708 resource_ids_to_receive.insert(id4); | 708 resource_ids_to_receive.insert(id4); |
| 709 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 709 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 710 resource_ids_to_receive); | 710 resource_ids_to_receive); |
| 711 } | 711 } |
| 712 | 712 |
| 713 EXPECT_EQ(4u, resource_provider_->num_resources()); | 713 EXPECT_EQ(4u, resource_provider_->num_resources()); |
| 714 ResourceProvider::ResourceIdMap resource_map = | 714 ResourceProvider::ResourceIdMap resource_map = |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 779 // be in-use. | 779 // be in-use. |
| 780 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 780 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 781 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 781 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 782 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 782 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
| 783 } | 783 } |
| 784 { | 784 { |
| 785 EXPECT_EQ(0u, returned_to_child.size()); | 785 EXPECT_EQ(0u, returned_to_child.size()); |
| 786 | 786 |
| 787 // Transfer resources back from the parent to the child. Set no resources as | 787 // Transfer resources back from the parent to the child. Set no resources as |
| 788 // being in use. | 788 // being in use. |
| 789 ResourceProvider::ResourceIdSet no_resources; | 789 ResourceIdSet no_resources; |
| 790 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 790 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 791 | 791 |
| 792 ASSERT_EQ(4u, returned_to_child.size()); | 792 ASSERT_EQ(4u, returned_to_child.size()); |
| 793 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); | 793 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); |
| 794 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); | 794 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); |
| 795 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); | 795 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); |
| 796 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); | 796 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); |
| 797 EXPECT_FALSE(returned_to_child[0].lost); | 797 EXPECT_FALSE(returned_to_child[0].lost); |
| 798 EXPECT_FALSE(returned_to_child[1].lost); | 798 EXPECT_FALSE(returned_to_child[1].lost); |
| 799 EXPECT_FALSE(returned_to_child[2].lost); | 799 EXPECT_FALSE(returned_to_child[2].lost); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 list[1].mailbox_holder.texture_target); | 849 list[1].mailbox_holder.texture_target); |
| 850 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), | 850 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), |
| 851 list[2].mailbox_holder.texture_target); | 851 list[2].mailbox_holder.texture_target); |
| 852 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), | 852 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), |
| 853 list[3].mailbox_holder.texture_target); | 853 list[3].mailbox_holder.texture_target); |
| 854 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 854 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 855 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 855 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 856 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 856 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
| 857 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id4)); | 857 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id4)); |
| 858 resource_provider_->ReceiveFromChild(child_id, list); | 858 resource_provider_->ReceiveFromChild(child_id, list); |
| 859 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 859 ResourceIdSet resource_ids_to_receive; |
| 860 resource_ids_to_receive.insert(id1); | 860 resource_ids_to_receive.insert(id1); |
| 861 resource_ids_to_receive.insert(id2); | 861 resource_ids_to_receive.insert(id2); |
| 862 resource_ids_to_receive.insert(id3); | 862 resource_ids_to_receive.insert(id3); |
| 863 resource_ids_to_receive.insert(id4); | 863 resource_ids_to_receive.insert(id4); |
| 864 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 864 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 865 resource_ids_to_receive); | 865 resource_ids_to_receive); |
| 866 } | 866 } |
| 867 | 867 |
| 868 EXPECT_EQ(0u, returned_to_child.size()); | 868 EXPECT_EQ(0u, returned_to_child.size()); |
| 869 | 869 |
| 870 EXPECT_EQ(4u, resource_provider_->num_resources()); | 870 EXPECT_EQ(4u, resource_provider_->num_resources()); |
| 871 resource_provider_->DestroyChild(child_id); | 871 resource_provider_->DestroyChild(child_id); |
| 872 EXPECT_EQ(0u, resource_provider_->num_resources()); | 872 EXPECT_EQ(0u, resource_provider_->num_resources()); |
| 873 | 873 |
| 874 ASSERT_EQ(4u, returned_to_child.size()); | 874 ASSERT_EQ(4u, returned_to_child.size()); |
| 875 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); | 875 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); |
| 876 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); | 876 EXPECT_TRUE(returned_to_child[1].sync_token.HasData()); |
| 877 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); | 877 EXPECT_TRUE(returned_to_child[2].sync_token.HasData()); |
| 878 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); | 878 EXPECT_TRUE(returned_to_child[3].sync_token.HasData()); |
| 879 EXPECT_FALSE(returned_to_child[0].lost); | 879 EXPECT_FALSE(returned_to_child[0].lost); |
| 880 EXPECT_FALSE(returned_to_child[1].lost); | 880 EXPECT_FALSE(returned_to_child[1].lost); |
| 881 EXPECT_FALSE(returned_to_child[2].lost); | 881 EXPECT_FALSE(returned_to_child[2].lost); |
| 882 EXPECT_FALSE(returned_to_child[3].lost); | 882 EXPECT_FALSE(returned_to_child[3].lost); |
| 883 } | 883 } |
| 884 | 884 |
| 885 #if defined(OS_ANDROID) |
| 886 TEST_P(ResourceProviderTest, OverlayPromotionHint) { |
| 887 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 888 return; |
| 889 |
| 890 GLuint external_texture_id = child_context_->createExternalTexture(); |
| 891 |
| 892 gpu::Mailbox external_mailbox; |
| 893 child_context_->genMailboxCHROMIUM(external_mailbox.name); |
| 894 child_context_->produceTextureDirectCHROMIUM( |
| 895 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); |
| 896 gpu::SyncToken external_sync_token; |
| 897 child_context_->genSyncToken(child_context_->insertFenceSync(), |
| 898 external_sync_token.GetData()); |
| 899 EXPECT_TRUE(external_sync_token.HasData()); |
| 900 |
| 901 TextureMailbox id1_mailbox(external_mailbox, external_sync_token, |
| 902 GL_TEXTURE_EXTERNAL_OES); |
| 903 id1_mailbox.set_wants_promotion_hint(true); |
| 904 id1_mailbox.set_is_overlay_candidate(true); |
| 905 id1_mailbox.set_is_backed_by_surface_texture(true); |
| 906 ResourceId id1 = child_resource_provider_->CreateResourceFromTextureMailbox( |
| 907 id1_mailbox, |
| 908 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
| 909 |
| 910 TextureMailbox id2_mailbox(external_mailbox, external_sync_token, |
| 911 GL_TEXTURE_EXTERNAL_OES); |
| 912 id2_mailbox.set_wants_promotion_hint(false); |
| 913 id2_mailbox.set_is_overlay_candidate(true); |
| 914 id2_mailbox.set_is_backed_by_surface_texture(false); |
| 915 ResourceId id2 = child_resource_provider_->CreateResourceFromTextureMailbox( |
| 916 id2_mailbox, |
| 917 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
| 918 |
| 919 ReturnedResourceArray returned_to_child; |
| 920 int child_id = |
| 921 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 922 |
| 923 { |
| 924 // Transfer some resources to the parent. |
| 925 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 926 resource_ids_to_transfer.push_back(id1); |
| 927 resource_ids_to_transfer.push_back(id2); |
| 928 |
| 929 child_resource_provider_->GenerateSyncTokenForResources( |
| 930 resource_ids_to_transfer); |
| 931 |
| 932 TransferableResourceArray list; |
| 933 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 934 &list); |
| 935 ASSERT_EQ(2u, list.size()); |
| 936 resource_provider_->ReceiveFromChild(child_id, list); |
| 937 { |
| 938 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); |
| 939 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
| 940 list[0].id); |
| 941 } |
| 942 |
| 943 EXPECT_EQ(list[0].mailbox_holder.sync_token, |
| 944 context3d_->last_waited_sync_token()); |
| 945 ResourceIdSet resource_ids_to_receive; |
| 946 resource_ids_to_receive.insert(id1); |
| 947 resource_ids_to_receive.insert(id2); |
| 948 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 949 resource_ids_to_receive); |
| 950 } |
| 951 |
| 952 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 953 ResourceProvider::ResourceIdMap resource_map = |
| 954 resource_provider_->GetChildToParentMap(child_id); |
| 955 ResourceId mapped_id1 = resource_map[id1]; |
| 956 ResourceId mapped_id2 = resource_map[id2]; |
| 957 EXPECT_NE(0u, mapped_id1); |
| 958 EXPECT_NE(0u, mapped_id2); |
| 959 |
| 960 // Make sure that the request for a promotion hint was noticed. |
| 961 EXPECT_TRUE(resource_provider_->IsOverlayCandidate(mapped_id1)); |
| 962 EXPECT_TRUE(resource_provider_->IsBackedBySurfaceTexture(mapped_id1)); |
| 963 EXPECT_TRUE(resource_provider_->WantsPromotionHint(mapped_id1)); |
| 964 |
| 965 EXPECT_TRUE(resource_provider_->IsOverlayCandidate(mapped_id2)); |
| 966 EXPECT_FALSE(resource_provider_->IsBackedBySurfaceTexture(mapped_id2)); |
| 967 EXPECT_FALSE(resource_provider_->WantsPromotionHint(mapped_id2)); |
| 968 |
| 969 EXPECT_EQ(1u, resource_provider_->CountPromotionHintRequestsForTesting()); |
| 970 |
| 971 // ResourceProvider maintains a set of promotion hint requests that should be |
| 972 // cleared when resources are deleted. |
| 973 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
| 974 EXPECT_EQ(2u, returned_to_child.size()); |
| 975 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 976 |
| 977 EXPECT_EQ(0u, resource_provider_->CountPromotionHintRequestsForTesting()); |
| 978 |
| 979 resource_provider_->DestroyChild(child_id); |
| 980 } |
| 981 #endif |
| 982 |
| 885 class ResourceProviderTestNoSyncToken : public ResourceProviderTest { | 983 class ResourceProviderTestNoSyncToken : public ResourceProviderTest { |
| 886 public: | 984 public: |
| 887 ResourceProviderTestNoSyncToken() : ResourceProviderTest(false) { | 985 ResourceProviderTestNoSyncToken() : ResourceProviderTest(false) { |
| 888 EXPECT_EQ(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, GetParam()); | 986 EXPECT_EQ(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, GetParam()); |
| 889 } | 987 } |
| 890 }; | 988 }; |
| 891 | 989 |
| 892 TEST_P(ResourceProviderTestNoSyncToken, TransferGLResources) { | 990 TEST_P(ResourceProviderTestNoSyncToken, TransferGLResources) { |
| 893 gfx::Size size(1, 1); | 991 gfx::Size size(1, 1); |
| 894 ResourceFormat format = RGBA_8888; | 992 ResourceFormat format = RGBA_8888; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1042 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 945 &list); | 1043 &list); |
| 946 ASSERT_EQ(3u, list.size()); | 1044 ASSERT_EQ(3u, list.size()); |
| 947 // Standard resources shouldn't require creating and sending a sync point. | 1045 // Standard resources shouldn't require creating and sending a sync point. |
| 948 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); | 1046 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); |
| 949 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); | 1047 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); |
| 950 // A given sync point should be passed through. | 1048 // A given sync point should be passed through. |
| 951 EXPECT_EQ(external_sync_token, list[2].mailbox_holder.sync_token); | 1049 EXPECT_EQ(external_sync_token, list[2].mailbox_holder.sync_token); |
| 952 resource_provider_->ReceiveFromChild(child_id, list); | 1050 resource_provider_->ReceiveFromChild(child_id, list); |
| 953 | 1051 |
| 954 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1052 ResourceIdSet resource_ids_to_receive; |
| 955 resource_ids_to_receive.insert(id1); | 1053 resource_ids_to_receive.insert(id1); |
| 956 resource_ids_to_receive.insert(id2); | 1054 resource_ids_to_receive.insert(id2); |
| 957 resource_ids_to_receive.insert(id3); | 1055 resource_ids_to_receive.insert(id3); |
| 958 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1056 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 959 resource_ids_to_receive); | 1057 resource_ids_to_receive); |
| 960 } | 1058 } |
| 961 | 1059 |
| 962 { | 1060 { |
| 963 EXPECT_EQ(0u, returned_to_child.size()); | 1061 EXPECT_EQ(0u, returned_to_child.size()); |
| 964 | 1062 |
| 965 // Transfer resources back from the parent to the child. Set no resources as | 1063 // Transfer resources back from the parent to the child. Set no resources as |
| 966 // being in use. | 1064 // being in use. |
| 967 ResourceProvider::ResourceIdSet no_resources; | 1065 ResourceIdSet no_resources; |
| 968 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1066 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 969 | 1067 |
| 970 ASSERT_EQ(3u, returned_to_child.size()); | 1068 ASSERT_EQ(3u, returned_to_child.size()); |
| 971 std::map<ResourceId, gpu::SyncToken> returned_sync_tokens; | 1069 std::map<ResourceId, gpu::SyncToken> returned_sync_tokens; |
| 972 for (const auto& returned : returned_to_child) | 1070 for (const auto& returned : returned_to_child) |
| 973 returned_sync_tokens[returned.id] = returned.sync_token; | 1071 returned_sync_tokens[returned.id] = returned.sync_token; |
| 974 | 1072 |
| 975 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); | 1073 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); |
| 976 // No new sync point should be created transferring back. | 1074 // No new sync point should be created transferring back. |
| 977 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); | 1075 ASSERT_TRUE(returned_sync_tokens.find(id1) != returned_sync_tokens.end()); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1024 &list); | 1122 &list); |
| 1025 ASSERT_EQ(1u, list.size()); | 1123 ASSERT_EQ(1u, list.size()); |
| 1026 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1124 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1027 | 1125 |
| 1028 resource_provider_->ReceiveFromChild(child_id, list); | 1126 resource_provider_->ReceiveFromChild(child_id, list); |
| 1029 | 1127 |
| 1030 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); | 1128 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); |
| 1031 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), | 1129 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
| 1032 list[0].id); | 1130 list[0].id); |
| 1033 | 1131 |
| 1034 resource_provider_->DeclareUsedResourcesFromChild( | 1132 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1035 child_id, ResourceProvider::ResourceIdSet()); | 1133 ResourceIdSet()); |
| 1036 EXPECT_EQ(0u, returned_to_child.size()); | 1134 EXPECT_EQ(0u, returned_to_child.size()); |
| 1037 } | 1135 } |
| 1038 | 1136 |
| 1039 EXPECT_EQ(1u, returned_to_child.size()); | 1137 EXPECT_EQ(1u, returned_to_child.size()); |
| 1040 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1138 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 1041 | 1139 |
| 1042 { | 1140 { |
| 1043 child_resource_provider_->WaitSyncTokenIfNeeded(id1); | 1141 child_resource_provider_->WaitSyncTokenIfNeeded(id1); |
| 1044 ResourceProvider::ScopedReadLockGL lock(child_resource_provider_.get(), | 1142 ResourceProvider::ScopedReadLockGL lock(child_resource_provider_.get(), |
| 1045 id1); | 1143 id1); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 resource_provider_->ReceiveFromChild(child_id, list); | 1197 resource_provider_->ReceiveFromChild(child_id, list); |
| 1100 | 1198 |
| 1101 scoped_refptr<TestFence> fence(new TestFence); | 1199 scoped_refptr<TestFence> fence(new TestFence); |
| 1102 resource_provider_->SetReadLockFence(fence.get()); | 1200 resource_provider_->SetReadLockFence(fence.get()); |
| 1103 { | 1201 { |
| 1104 unsigned parent_id = list.front().id; | 1202 unsigned parent_id = list.front().id; |
| 1105 resource_provider_->WaitSyncTokenIfNeeded(parent_id); | 1203 resource_provider_->WaitSyncTokenIfNeeded(parent_id); |
| 1106 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), | 1204 ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
| 1107 parent_id); | 1205 parent_id); |
| 1108 } | 1206 } |
| 1109 resource_provider_->DeclareUsedResourcesFromChild( | 1207 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
| 1110 child_id, ResourceProvider::ResourceIdSet()); | |
| 1111 EXPECT_EQ(0u, returned_to_child.size()); | 1208 EXPECT_EQ(0u, returned_to_child.size()); |
| 1112 | 1209 |
| 1113 resource_provider_->DeclareUsedResourcesFromChild( | 1210 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
| 1114 child_id, ResourceProvider::ResourceIdSet()); | |
| 1115 EXPECT_EQ(0u, returned_to_child.size()); | 1211 EXPECT_EQ(0u, returned_to_child.size()); |
| 1116 fence->passed = true; | 1212 fence->passed = true; |
| 1117 | 1213 |
| 1118 resource_provider_->DeclareUsedResourcesFromChild( | 1214 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet()); |
| 1119 child_id, ResourceProvider::ResourceIdSet()); | |
| 1120 EXPECT_EQ(1u, returned_to_child.size()); | 1215 EXPECT_EQ(1u, returned_to_child.size()); |
| 1121 | 1216 |
| 1122 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1217 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 1123 child_resource_provider_->DeleteResource(id1); | 1218 child_resource_provider_->DeleteResource(id1); |
| 1124 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 1219 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
| 1125 } | 1220 } |
| 1126 | 1221 |
| 1127 TEST_P(ResourceProviderTest, ReadLockFenceDestroyChild) { | 1222 TEST_P(ResourceProviderTest, ReadLockFenceDestroyChild) { |
| 1128 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1223 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 1129 return; | 1224 return; |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1299 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1394 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1300 &list); | 1395 &list); |
| 1301 ASSERT_EQ(3u, list.size()); | 1396 ASSERT_EQ(3u, list.size()); |
| 1302 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); | 1397 EXPECT_FALSE(list[0].mailbox_holder.sync_token.HasData()); |
| 1303 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); | 1398 EXPECT_FALSE(list[1].mailbox_holder.sync_token.HasData()); |
| 1304 EXPECT_FALSE(list[2].mailbox_holder.sync_token.HasData()); | 1399 EXPECT_FALSE(list[2].mailbox_holder.sync_token.HasData()); |
| 1305 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1400 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1306 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1401 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 1307 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 1402 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
| 1308 resource_provider_->ReceiveFromChild(child_id, list); | 1403 resource_provider_->ReceiveFromChild(child_id, list); |
| 1309 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1404 ResourceIdSet resource_ids_to_receive; |
| 1310 resource_ids_to_receive.insert(id1); | 1405 resource_ids_to_receive.insert(id1); |
| 1311 resource_ids_to_receive.insert(id2); | 1406 resource_ids_to_receive.insert(id2); |
| 1312 resource_ids_to_receive.insert(id3); | 1407 resource_ids_to_receive.insert(id3); |
| 1313 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1408 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1314 resource_ids_to_receive); | 1409 resource_ids_to_receive); |
| 1315 } | 1410 } |
| 1316 | 1411 |
| 1317 EXPECT_EQ(3u, resource_provider_->num_resources()); | 1412 EXPECT_EQ(3u, resource_provider_->num_resources()); |
| 1318 ResourceProvider::ResourceIdMap resource_map = | 1413 ResourceProvider::ResourceIdMap resource_map = |
| 1319 resource_provider_->GetChildToParentMap(child_id); | 1414 resource_provider_->GetChildToParentMap(child_id); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1358 // ids were exported twice, we returned them only once, they should still | 1453 // ids were exported twice, we returned them only once, they should still |
| 1359 // be in-use. | 1454 // be in-use. |
| 1360 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1455 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1361 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1456 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 1362 } | 1457 } |
| 1363 { | 1458 { |
| 1364 EXPECT_EQ(0u, returned_to_child.size()); | 1459 EXPECT_EQ(0u, returned_to_child.size()); |
| 1365 | 1460 |
| 1366 // Transfer resources back from the parent to the child. Set no resources as | 1461 // Transfer resources back from the parent to the child. Set no resources as |
| 1367 // being in use. | 1462 // being in use. |
| 1368 ResourceProvider::ResourceIdSet no_resources; | 1463 ResourceIdSet no_resources; |
| 1369 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1464 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 1370 | 1465 |
| 1371 ASSERT_EQ(3u, returned_to_child.size()); | 1466 ASSERT_EQ(3u, returned_to_child.size()); |
| 1372 EXPECT_FALSE(returned_to_child[0].sync_token.HasData()); | 1467 EXPECT_FALSE(returned_to_child[0].sync_token.HasData()); |
| 1373 EXPECT_FALSE(returned_to_child[1].sync_token.HasData()); | 1468 EXPECT_FALSE(returned_to_child[1].sync_token.HasData()); |
| 1374 EXPECT_FALSE(returned_to_child[2].sync_token.HasData()); | 1469 EXPECT_FALSE(returned_to_child[2].sync_token.HasData()); |
| 1375 std::set<ResourceId> expected_ids; | 1470 std::set<ResourceId> expected_ids; |
| 1376 expected_ids.insert(id1); | 1471 expected_ids.insert(id1); |
| 1377 expected_ids.insert(id2); | 1472 expected_ids.insert(id2); |
| 1378 expected_ids.insert(id3); | 1473 expected_ids.insert(id3); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1420 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1515 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1421 &list); | 1516 &list); |
| 1422 ASSERT_EQ(3u, list.size()); | 1517 ASSERT_EQ(3u, list.size()); |
| 1423 EXPECT_EQ(id1, list[0].id); | 1518 EXPECT_EQ(id1, list[0].id); |
| 1424 EXPECT_EQ(id2, list[1].id); | 1519 EXPECT_EQ(id2, list[1].id); |
| 1425 EXPECT_EQ(id3, list[2].id); | 1520 EXPECT_EQ(id3, list[2].id); |
| 1426 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1521 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1427 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1522 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 1428 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); | 1523 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id3)); |
| 1429 resource_provider_->ReceiveFromChild(child_id, list); | 1524 resource_provider_->ReceiveFromChild(child_id, list); |
| 1430 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1525 ResourceIdSet resource_ids_to_receive; |
| 1431 resource_ids_to_receive.insert(id1); | 1526 resource_ids_to_receive.insert(id1); |
| 1432 resource_ids_to_receive.insert(id2); | 1527 resource_ids_to_receive.insert(id2); |
| 1433 resource_ids_to_receive.insert(id3); | 1528 resource_ids_to_receive.insert(id3); |
| 1434 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1529 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1435 resource_ids_to_receive); | 1530 resource_ids_to_receive); |
| 1436 } | 1531 } |
| 1437 | 1532 |
| 1438 EXPECT_EQ(0u, returned_to_child.size()); | 1533 EXPECT_EQ(0u, returned_to_child.size()); |
| 1439 | 1534 |
| 1440 EXPECT_EQ(3u, resource_provider_->num_resources()); | 1535 EXPECT_EQ(3u, resource_provider_->num_resources()); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1609 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1704 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1610 &list); | 1705 &list); |
| 1611 ASSERT_EQ(2u, list.size()); | 1706 ASSERT_EQ(2u, list.size()); |
| 1612 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1707 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
| 1613 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1708 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
| 1614 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1709 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
| 1615 } | 1710 } |
| 1616 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1711 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1617 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1712 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 1618 resource_provider_->ReceiveFromChild(child_id, list); | 1713 resource_provider_->ReceiveFromChild(child_id, list); |
| 1619 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1714 ResourceIdSet resource_ids_to_receive; |
| 1620 resource_ids_to_receive.insert(id1); | 1715 resource_ids_to_receive.insert(id1); |
| 1621 resource_ids_to_receive.insert(id2); | 1716 resource_ids_to_receive.insert(id2); |
| 1622 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1717 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1623 resource_ids_to_receive); | 1718 resource_ids_to_receive); |
| 1624 } | 1719 } |
| 1625 | 1720 |
| 1626 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1721 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1627 ResourceProvider::ResourceIdMap resource_map = | 1722 ResourceProvider::ResourceIdMap resource_map = |
| 1628 resource_provider_->GetChildToParentMap(child_id); | 1723 resource_provider_->GetChildToParentMap(child_id); |
| 1629 ResourceId mapped_id1 = resource_map[id1]; | 1724 ResourceId mapped_id1 = resource_map[id1]; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1648 ASSERT_EQ(2u, list.size()); | 1743 ASSERT_EQ(2u, list.size()); |
| 1649 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1744 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
| 1650 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1745 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
| 1651 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1746 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
| 1652 } | 1747 } |
| 1653 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); | 1748 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); |
| 1654 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); | 1749 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); |
| 1655 | 1750 |
| 1656 // Release the resource in the parent. Set no resources as being in use. The | 1751 // Release the resource in the parent. Set no resources as being in use. The |
| 1657 // resources are exported so that can't be transferred back yet. | 1752 // resources are exported so that can't be transferred back yet. |
| 1658 ResourceProvider::ResourceIdSet no_resources; | 1753 ResourceIdSet no_resources; |
| 1659 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1754 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 1660 | 1755 |
| 1661 EXPECT_EQ(0u, returned_to_child.size()); | 1756 EXPECT_EQ(0u, returned_to_child.size()); |
| 1662 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1757 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1663 | 1758 |
| 1664 // Return the resources from the grandparent to the parent. They should be | 1759 // Return the resources from the grandparent to the parent. They should be |
| 1665 // returned to the child then. | 1760 // returned to the child then. |
| 1666 EXPECT_EQ(2u, list.size()); | 1761 EXPECT_EQ(2u, list.size()); |
| 1667 EXPECT_EQ(mapped_id1, list[0].id); | 1762 EXPECT_EQ(mapped_id1, list[0].id); |
| 1668 EXPECT_EQ(mapped_id2, list[1].id); | 1763 EXPECT_EQ(mapped_id2, list[1].id); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1715 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1810 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1716 &list); | 1811 &list); |
| 1717 ASSERT_EQ(2u, list.size()); | 1812 ASSERT_EQ(2u, list.size()); |
| 1718 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1813 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
| 1719 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1814 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
| 1720 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1815 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
| 1721 } | 1816 } |
| 1722 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1817 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1723 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1818 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 1724 resource_provider_->ReceiveFromChild(child_id, list); | 1819 resource_provider_->ReceiveFromChild(child_id, list); |
| 1725 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1820 ResourceIdSet resource_ids_to_receive; |
| 1726 resource_ids_to_receive.insert(id1); | 1821 resource_ids_to_receive.insert(id1); |
| 1727 resource_ids_to_receive.insert(id2); | 1822 resource_ids_to_receive.insert(id2); |
| 1728 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1823 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1729 resource_ids_to_receive); | 1824 resource_ids_to_receive); |
| 1730 } | 1825 } |
| 1731 | 1826 |
| 1732 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1827 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1733 ResourceProvider::ResourceIdMap resource_map = | 1828 ResourceProvider::ResourceIdMap resource_map = |
| 1734 resource_provider_->GetChildToParentMap(child_id); | 1829 resource_provider_->GetChildToParentMap(child_id); |
| 1735 ResourceId mapped_id1 = resource_map[id1]; | 1830 ResourceId mapped_id1 = resource_map[id1]; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1754 ASSERT_EQ(2u, list.size()); | 1849 ASSERT_EQ(2u, list.size()); |
| 1755 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1850 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
| 1756 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1851 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
| 1757 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); | 1852 EXPECT_TRUE(list[1].mailbox_holder.sync_token.HasData()); |
| 1758 } | 1853 } |
| 1759 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); | 1854 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); |
| 1760 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); | 1855 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); |
| 1761 | 1856 |
| 1762 // Release the resource in the parent. Set no resources as being in use. The | 1857 // Release the resource in the parent. Set no resources as being in use. The |
| 1763 // resources are exported so that can't be transferred back yet. | 1858 // resources are exported so that can't be transferred back yet. |
| 1764 ResourceProvider::ResourceIdSet no_resources; | 1859 ResourceIdSet no_resources; |
| 1765 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1860 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 1766 | 1861 |
| 1767 // Destroy the child, the resources should not be returned yet. | 1862 // Destroy the child, the resources should not be returned yet. |
| 1768 EXPECT_EQ(0u, returned_to_child.size()); | 1863 EXPECT_EQ(0u, returned_to_child.size()); |
| 1769 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1864 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1770 | 1865 |
| 1771 resource_provider_->DestroyChild(child_id); | 1866 resource_provider_->DestroyChild(child_id); |
| 1772 | 1867 |
| 1773 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1868 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1774 ASSERT_EQ(0u, returned_to_child.size()); | 1869 ASSERT_EQ(0u, returned_to_child.size()); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1828 resource_ids_to_transfer); | 1923 resource_ids_to_transfer); |
| 1829 | 1924 |
| 1830 TransferableResourceArray list; | 1925 TransferableResourceArray list; |
| 1831 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1926 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1832 &list); | 1927 &list); |
| 1833 ASSERT_EQ(1u, list.size()); | 1928 ASSERT_EQ(1u, list.size()); |
| 1834 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1929 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 1835 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1930 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
| 1836 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 1931 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
| 1837 resource_provider_->ReceiveFromChild(child_id, list); | 1932 resource_provider_->ReceiveFromChild(child_id, list); |
| 1838 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1933 ResourceIdSet resource_ids_to_receive; |
| 1839 resource_ids_to_receive.insert(id); | 1934 resource_ids_to_receive.insert(id); |
| 1840 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1935 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1841 resource_ids_to_receive); | 1936 resource_ids_to_receive); |
| 1842 } | 1937 } |
| 1843 | 1938 |
| 1844 // Delete textures in the child, while they are transfered. | 1939 // Delete textures in the child, while they are transfered. |
| 1845 child_resource_provider_->DeleteResource(id); | 1940 child_resource_provider_->DeleteResource(id); |
| 1846 EXPECT_EQ(1u, child_resource_provider_->num_resources()); | 1941 EXPECT_EQ(1u, child_resource_provider_->num_resources()); |
| 1847 { | 1942 { |
| 1848 EXPECT_EQ(0u, returned_to_child.size()); | 1943 EXPECT_EQ(0u, returned_to_child.size()); |
| 1849 | 1944 |
| 1850 // Transfer resources back from the parent to the child. Set no resources as | 1945 // Transfer resources back from the parent to the child. Set no resources as |
| 1851 // being in use. | 1946 // being in use. |
| 1852 ResourceProvider::ResourceIdSet no_resources; | 1947 ResourceIdSet no_resources; |
| 1853 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1948 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 1854 | 1949 |
| 1855 ASSERT_EQ(1u, returned_to_child.size()); | 1950 ASSERT_EQ(1u, returned_to_child.size()); |
| 1856 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1951 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 1857 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); | 1952 EXPECT_TRUE(returned_to_child[0].sync_token.HasData()); |
| 1858 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1953 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 1859 } | 1954 } |
| 1860 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 1955 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
| 1861 } | 1956 } |
| 1862 | 1957 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1883 resource_ids_to_transfer.push_back(id); | 1978 resource_ids_to_transfer.push_back(id); |
| 1884 | 1979 |
| 1885 child_resource_provider_->GenerateSyncTokenForResources( | 1980 child_resource_provider_->GenerateSyncTokenForResources( |
| 1886 resource_ids_to_transfer); | 1981 resource_ids_to_transfer); |
| 1887 | 1982 |
| 1888 TransferableResourceArray list; | 1983 TransferableResourceArray list; |
| 1889 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1984 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1890 &list); | 1985 &list); |
| 1891 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 1986 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
| 1892 resource_provider_->ReceiveFromChild(child_id, list); | 1987 resource_provider_->ReceiveFromChild(child_id, list); |
| 1893 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1988 ResourceIdSet resource_ids_to_receive; |
| 1894 resource_ids_to_receive.insert(id); | 1989 resource_ids_to_receive.insert(id); |
| 1895 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1990 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1896 resource_ids_to_receive); | 1991 resource_ids_to_receive); |
| 1897 } | 1992 } |
| 1898 TransferableResourceArray sent_to_top_level; | 1993 TransferableResourceArray sent_to_top_level; |
| 1899 { | 1994 { |
| 1900 // Parent transfers to top-level. | 1995 // Parent transfers to top-level. |
| 1901 ASSERT_TRUE(map.find(id) != map.end()); | 1996 ASSERT_TRUE(map.find(id) != map.end()); |
| 1902 ResourceId parent_id = map.find(id)->second; | 1997 ResourceId parent_id = map.find(id)->second; |
| 1903 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1998 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1904 resource_ids_to_transfer.push_back(parent_id); | 1999 resource_ids_to_transfer.push_back(parent_id); |
| 1905 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2000 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1906 &sent_to_top_level); | 2001 &sent_to_top_level); |
| 1907 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); | 2002 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); |
| 1908 } | 2003 } |
| 1909 { | 2004 { |
| 1910 // Stop using resource. | 2005 // Stop using resource. |
| 1911 ResourceProvider::ResourceIdSet empty; | 2006 ResourceIdSet empty; |
| 1912 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); | 2007 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); |
| 1913 // Resource is not yet returned to the child, since it's in use by the | 2008 // Resource is not yet returned to the child, since it's in use by the |
| 1914 // top-level. | 2009 // top-level. |
| 1915 EXPECT_TRUE(returned_to_child.empty()); | 2010 EXPECT_TRUE(returned_to_child.empty()); |
| 1916 } | 2011 } |
| 1917 { | 2012 { |
| 1918 // Send the resource to the parent again. | 2013 // Send the resource to the parent again. |
| 1919 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2014 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1920 resource_ids_to_transfer.push_back(id); | 2015 resource_ids_to_transfer.push_back(id); |
| 1921 TransferableResourceArray list; | 2016 TransferableResourceArray list; |
| 1922 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2017 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1923 &list); | 2018 &list); |
| 1924 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 2019 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
| 1925 resource_provider_->ReceiveFromChild(child_id, list); | 2020 resource_provider_->ReceiveFromChild(child_id, list); |
| 1926 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2021 ResourceIdSet resource_ids_to_receive; |
| 1927 resource_ids_to_receive.insert(id); | 2022 resource_ids_to_receive.insert(id); |
| 1928 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2023 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1929 resource_ids_to_receive); | 2024 resource_ids_to_receive); |
| 1930 } | 2025 } |
| 1931 { | 2026 { |
| 1932 // Receive returns back from top-level. | 2027 // Receive returns back from top-level. |
| 1933 ReturnedResourceArray returned; | 2028 ReturnedResourceArray returned; |
| 1934 TransferableResource::ReturnResources(sent_to_top_level, &returned); | 2029 TransferableResource::ReturnResources(sent_to_top_level, &returned); |
| 1935 resource_provider_->ReceiveReturnsFromParent(returned); | 2030 resource_provider_->ReceiveReturnsFromParent(returned); |
| 1936 // Resource is still not yet returned to the child, since it's declared used | 2031 // Resource is still not yet returned to the child, since it's declared used |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1958 resource_provider_->ReceiveReturnsFromParent(returned); | 2053 resource_provider_->ReceiveReturnsFromParent(returned); |
| 1959 // Resource is still not yet returned to the child, since it's still | 2054 // Resource is still not yet returned to the child, since it's still |
| 1960 // declared used in the parent. | 2055 // declared used in the parent. |
| 1961 EXPECT_TRUE(returned_to_child.empty()); | 2056 EXPECT_TRUE(returned_to_child.empty()); |
| 1962 ASSERT_TRUE(map.find(id) != map.end()); | 2057 ASSERT_TRUE(map.find(id) != map.end()); |
| 1963 ResourceId parent_id = map.find(id)->second; | 2058 ResourceId parent_id = map.find(id)->second; |
| 1964 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); | 2059 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); |
| 1965 } | 2060 } |
| 1966 { | 2061 { |
| 1967 // Stop using resource. | 2062 // Stop using resource. |
| 1968 ResourceProvider::ResourceIdSet empty; | 2063 ResourceIdSet empty; |
| 1969 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); | 2064 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); |
| 1970 // Resource should have been returned to the child, since it's no longer in | 2065 // Resource should have been returned to the child, since it's no longer in |
| 1971 // use by the top-level. | 2066 // use by the top-level. |
| 1972 ASSERT_EQ(1u, returned_to_child.size()); | 2067 ASSERT_EQ(1u, returned_to_child.size()); |
| 1973 EXPECT_EQ(id, returned_to_child[0].id); | 2068 EXPECT_EQ(id, returned_to_child[0].id); |
| 1974 EXPECT_EQ(2, returned_to_child[0].count); | 2069 EXPECT_EQ(2, returned_to_child[0].count); |
| 1975 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2070 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 1976 returned_to_child.clear(); | 2071 returned_to_child.clear(); |
| 1977 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id)); | 2072 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id)); |
| 1978 } | 2073 } |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2085 .WillOnce(Return(parent_texture_id)); | 2180 .WillOnce(Return(parent_texture_id)); |
| 2086 | 2181 |
| 2087 parent_resource_provider->ReceiveFromChild(child_id, list); | 2182 parent_resource_provider->ReceiveFromChild(child_id, list); |
| 2088 { | 2183 { |
| 2089 parent_resource_provider->WaitSyncTokenIfNeeded(list[0].id); | 2184 parent_resource_provider->WaitSyncTokenIfNeeded(list[0].id); |
| 2090 ResourceProvider::ScopedReadLockGL lock(parent_resource_provider.get(), | 2185 ResourceProvider::ScopedReadLockGL lock(parent_resource_provider.get(), |
| 2091 list[0].id); | 2186 list[0].id); |
| 2092 } | 2187 } |
| 2093 Mock::VerifyAndClearExpectations(parent_context); | 2188 Mock::VerifyAndClearExpectations(parent_context); |
| 2094 | 2189 |
| 2095 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2190 ResourceIdSet resource_ids_to_receive; |
| 2096 resource_ids_to_receive.insert(id); | 2191 resource_ids_to_receive.insert(id); |
| 2097 parent_resource_provider->DeclareUsedResourcesFromChild( | 2192 parent_resource_provider->DeclareUsedResourcesFromChild( |
| 2098 child_id, resource_ids_to_receive); | 2193 child_id, resource_ids_to_receive); |
| 2099 Mock::VerifyAndClearExpectations(parent_context); | 2194 Mock::VerifyAndClearExpectations(parent_context); |
| 2100 } | 2195 } |
| 2101 ResourceProvider::ResourceIdMap resource_map = | 2196 ResourceProvider::ResourceIdMap resource_map = |
| 2102 parent_resource_provider->GetChildToParentMap(child_id); | 2197 parent_resource_provider->GetChildToParentMap(child_id); |
| 2103 ResourceId mapped_id = resource_map[id]; | 2198 ResourceId mapped_id = resource_map[id]; |
| 2104 EXPECT_NE(0u, mapped_id); | 2199 EXPECT_NE(0u, mapped_id); |
| 2105 | 2200 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2122 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); | 2217 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); |
| 2123 EXPECT_CALL( | 2218 EXPECT_CALL( |
| 2124 *parent_context, | 2219 *parent_context, |
| 2125 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, child_filter)); | 2220 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, child_filter)); |
| 2126 | 2221 |
| 2127 { | 2222 { |
| 2128 EXPECT_EQ(0u, returned_to_child.size()); | 2223 EXPECT_EQ(0u, returned_to_child.size()); |
| 2129 | 2224 |
| 2130 // Transfer resources back from the parent to the child. Set no resources | 2225 // Transfer resources back from the parent to the child. Set no resources |
| 2131 // as being in use. | 2226 // as being in use. |
| 2132 ResourceProvider::ResourceIdSet no_resources; | 2227 ResourceIdSet no_resources; |
| 2133 parent_resource_provider->DeclareUsedResourcesFromChild(child_id, | 2228 parent_resource_provider->DeclareUsedResourcesFromChild(child_id, |
| 2134 no_resources); | 2229 no_resources); |
| 2135 Mock::VerifyAndClearExpectations(parent_context); | 2230 Mock::VerifyAndClearExpectations(parent_context); |
| 2136 | 2231 |
| 2137 ASSERT_EQ(1u, returned_to_child.size()); | 2232 ASSERT_EQ(1u, returned_to_child.size()); |
| 2138 child_resource_provider->ReceiveReturnsFromParent(returned_to_child); | 2233 child_resource_provider->ReceiveReturnsFromParent(returned_to_child); |
| 2139 } | 2234 } |
| 2140 | 2235 |
| 2141 // The child remembers the texture filter is set to |child_filter|. | 2236 // The child remembers the texture filter is set to |child_filter|. |
| 2142 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); | 2237 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2311 { | 2406 { |
| 2312 // Transfer the resource to the parent. | 2407 // Transfer the resource to the parent. |
| 2313 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2408 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2314 resource_ids_to_transfer.push_back(resource); | 2409 resource_ids_to_transfer.push_back(resource); |
| 2315 TransferableResourceArray list; | 2410 TransferableResourceArray list; |
| 2316 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2411 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2317 &list); | 2412 &list); |
| 2318 EXPECT_EQ(1u, list.size()); | 2413 EXPECT_EQ(1u, list.size()); |
| 2319 | 2414 |
| 2320 resource_provider_->ReceiveFromChild(child_id, list); | 2415 resource_provider_->ReceiveFromChild(child_id, list); |
| 2321 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2416 ResourceIdSet resource_ids_to_receive; |
| 2322 resource_ids_to_receive.insert(resource); | 2417 resource_ids_to_receive.insert(resource); |
| 2323 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2418 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 2324 resource_ids_to_receive); | 2419 resource_ids_to_receive); |
| 2325 } | 2420 } |
| 2326 | 2421 |
| 2327 // Lose the output surface in the parent. | 2422 // Lose the output surface in the parent. |
| 2328 resource_provider_->DidLoseContextProvider(); | 2423 resource_provider_->DidLoseContextProvider(); |
| 2329 | 2424 |
| 2330 { | 2425 { |
| 2331 EXPECT_EQ(0u, returned_to_child.size()); | 2426 EXPECT_EQ(0u, returned_to_child.size()); |
| 2332 | 2427 |
| 2333 // Transfer resources back from the parent to the child. Set no resources as | 2428 // Transfer resources back from the parent to the child. Set no resources as |
| 2334 // being in use. | 2429 // being in use. |
| 2335 ResourceProvider::ResourceIdSet no_resources; | 2430 ResourceIdSet no_resources; |
| 2336 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2431 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 2337 | 2432 |
| 2338 // Expect a GL resource to be lost. | 2433 // Expect a GL resource to be lost. |
| 2339 ASSERT_EQ(1u, returned_to_child.size()); | 2434 ASSERT_EQ(1u, returned_to_child.size()); |
| 2340 EXPECT_EQ(should_lose_resource, returned_to_child[0].lost); | 2435 EXPECT_EQ(should_lose_resource, returned_to_child[0].lost); |
| 2341 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2436 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 2342 returned_to_child.clear(); | 2437 returned_to_child.clear(); |
| 2343 } | 2438 } |
| 2344 | 2439 |
| 2345 // A GL resource should be lost. | 2440 // A GL resource should be lost. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2364 { | 2459 { |
| 2365 // Transfer the resource to the parent. | 2460 // Transfer the resource to the parent. |
| 2366 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2461 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2367 resource_ids_to_transfer.push_back(resource); | 2462 resource_ids_to_transfer.push_back(resource); |
| 2368 TransferableResourceArray list; | 2463 TransferableResourceArray list; |
| 2369 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2464 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2370 &list); | 2465 &list); |
| 2371 EXPECT_EQ(1u, list.size()); | 2466 EXPECT_EQ(1u, list.size()); |
| 2372 | 2467 |
| 2373 resource_provider_->ReceiveFromChild(child_id, list); | 2468 resource_provider_->ReceiveFromChild(child_id, list); |
| 2374 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2469 ResourceIdSet resource_ids_to_receive; |
| 2375 resource_ids_to_receive.insert(resource); | 2470 resource_ids_to_receive.insert(resource); |
| 2376 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2471 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 2377 resource_ids_to_receive); | 2472 resource_ids_to_receive); |
| 2378 } | 2473 } |
| 2379 | 2474 |
| 2380 { | 2475 { |
| 2381 ResourceProvider::ResourceIdMap resource_map = | 2476 ResourceProvider::ResourceIdMap resource_map = |
| 2382 resource_provider_->GetChildToParentMap(child_id); | 2477 resource_provider_->GetChildToParentMap(child_id); |
| 2383 ResourceId parent_resource = resource_map[resource]; | 2478 ResourceId parent_resource = resource_map[resource]; |
| 2384 EXPECT_NE(0u, parent_resource); | 2479 EXPECT_NE(0u, parent_resource); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 2404 | 2499 |
| 2405 // Lost resources stay in use in the parent forever. | 2500 // Lost resources stay in use in the parent forever. |
| 2406 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_resource)); | 2501 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_resource)); |
| 2407 } | 2502 } |
| 2408 | 2503 |
| 2409 { | 2504 { |
| 2410 EXPECT_EQ(0u, returned_to_child.size()); | 2505 EXPECT_EQ(0u, returned_to_child.size()); |
| 2411 | 2506 |
| 2412 // Transfer resources back from the parent to the child. Set no resources as | 2507 // Transfer resources back from the parent to the child. Set no resources as |
| 2413 // being in use. | 2508 // being in use. |
| 2414 ResourceProvider::ResourceIdSet no_resources; | 2509 ResourceIdSet no_resources; |
| 2415 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2510 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 2416 | 2511 |
| 2417 // Expect the resource to be lost. | 2512 // Expect the resource to be lost. |
| 2418 ASSERT_EQ(1u, returned_to_child.size()); | 2513 ASSERT_EQ(1u, returned_to_child.size()); |
| 2419 EXPECT_TRUE(returned_to_child[0].lost); | 2514 EXPECT_TRUE(returned_to_child[0].lost); |
| 2420 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2515 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 2421 returned_to_child.clear(); | 2516 returned_to_child.clear(); |
| 2422 } | 2517 } |
| 2423 | 2518 |
| 2424 // The resource should be lost. | 2519 // The resource should be lost. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2442 { | 2537 { |
| 2443 // Transfer the resource to the parent. | 2538 // Transfer the resource to the parent. |
| 2444 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2539 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2445 resource_ids_to_transfer.push_back(resource); | 2540 resource_ids_to_transfer.push_back(resource); |
| 2446 TransferableResourceArray list; | 2541 TransferableResourceArray list; |
| 2447 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2542 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2448 &list); | 2543 &list); |
| 2449 EXPECT_EQ(1u, list.size()); | 2544 EXPECT_EQ(1u, list.size()); |
| 2450 | 2545 |
| 2451 resource_provider_->ReceiveFromChild(child_id, list); | 2546 resource_provider_->ReceiveFromChild(child_id, list); |
| 2452 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2547 ResourceIdSet resource_ids_to_receive; |
| 2453 resource_ids_to_receive.insert(resource); | 2548 resource_ids_to_receive.insert(resource); |
| 2454 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2549 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 2455 resource_ids_to_receive); | 2550 resource_ids_to_receive); |
| 2456 } | 2551 } |
| 2457 | 2552 |
| 2458 // Lose the output surface in the parent. | 2553 // Lose the output surface in the parent. |
| 2459 resource_provider_->DidLoseContextProvider(); | 2554 resource_provider_->DidLoseContextProvider(); |
| 2460 | 2555 |
| 2461 { | 2556 { |
| 2462 EXPECT_EQ(0u, returned_to_child.size()); | 2557 EXPECT_EQ(0u, returned_to_child.size()); |
| 2463 | 2558 |
| 2464 // Transfer resources back from the parent to the child. Set no resources as | 2559 // Transfer resources back from the parent to the child. Set no resources as |
| 2465 // being in use. | 2560 // being in use. |
| 2466 ResourceProvider::ResourceIdSet no_resources; | 2561 ResourceIdSet no_resources; |
| 2467 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2562 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 2468 | 2563 |
| 2469 ASSERT_EQ(1u, returned_to_child.size()); | 2564 ASSERT_EQ(1u, returned_to_child.size()); |
| 2470 // Losing an output surface only loses hardware resources. | 2565 // Losing an output surface only loses hardware resources. |
| 2471 EXPECT_EQ(returned_to_child[0].lost, | 2566 EXPECT_EQ(returned_to_child[0].lost, |
| 2472 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); | 2567 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); |
| 2473 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2568 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 2474 returned_to_child.clear(); | 2569 returned_to_child.clear(); |
| 2475 } | 2570 } |
| 2476 | 2571 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2495 { | 2590 { |
| 2496 // Transfer the resource to the parent. | 2591 // Transfer the resource to the parent. |
| 2497 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2592 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2498 resource_ids_to_transfer.push_back(resource); | 2593 resource_ids_to_transfer.push_back(resource); |
| 2499 TransferableResourceArray list; | 2594 TransferableResourceArray list; |
| 2500 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2595 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2501 &list); | 2596 &list); |
| 2502 EXPECT_EQ(1u, list.size()); | 2597 EXPECT_EQ(1u, list.size()); |
| 2503 | 2598 |
| 2504 resource_provider_->ReceiveFromChild(child_id, list); | 2599 resource_provider_->ReceiveFromChild(child_id, list); |
| 2505 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2600 ResourceIdSet resource_ids_to_receive; |
| 2506 resource_ids_to_receive.insert(resource); | 2601 resource_ids_to_receive.insert(resource); |
| 2507 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2602 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 2508 resource_ids_to_receive); | 2603 resource_ids_to_receive); |
| 2509 } | 2604 } |
| 2510 | 2605 |
| 2511 { | 2606 { |
| 2512 ResourceProvider::ResourceIdMap resource_map = | 2607 ResourceProvider::ResourceIdMap resource_map = |
| 2513 resource_provider_->GetChildToParentMap(child_id); | 2608 resource_provider_->GetChildToParentMap(child_id); |
| 2514 ResourceId parent_resource = resource_map[resource]; | 2609 ResourceId parent_resource = resource_map[resource]; |
| 2515 EXPECT_NE(0u, parent_resource); | 2610 EXPECT_NE(0u, parent_resource); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2529 EXPECT_EQ(parent_resource, returned[0].id); | 2624 EXPECT_EQ(parent_resource, returned[0].id); |
| 2530 returned[0].lost = true; | 2625 returned[0].lost = true; |
| 2531 resource_provider_->ReceiveReturnsFromParent(returned); | 2626 resource_provider_->ReceiveReturnsFromParent(returned); |
| 2532 } | 2627 } |
| 2533 | 2628 |
| 2534 { | 2629 { |
| 2535 EXPECT_EQ(0u, returned_to_child.size()); | 2630 EXPECT_EQ(0u, returned_to_child.size()); |
| 2536 | 2631 |
| 2537 // Transfer resources back from the parent to the child. Set no resources as | 2632 // Transfer resources back from the parent to the child. Set no resources as |
| 2538 // being in use. | 2633 // being in use. |
| 2539 ResourceProvider::ResourceIdSet no_resources; | 2634 ResourceIdSet no_resources; |
| 2540 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2635 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 2541 | 2636 |
| 2542 // Expect the resource to be lost. | 2637 // Expect the resource to be lost. |
| 2543 ASSERT_EQ(1u, returned_to_child.size()); | 2638 ASSERT_EQ(1u, returned_to_child.size()); |
| 2544 EXPECT_TRUE(returned_to_child[0].lost); | 2639 EXPECT_TRUE(returned_to_child[0].lost); |
| 2545 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2640 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 2546 returned_to_child.clear(); | 2641 returned_to_child.clear(); |
| 2547 } | 2642 } |
| 2548 | 2643 |
| 2549 // Delete the resource in the child. Expect the resource to be lost. | 2644 // Delete the resource in the child. Expect the resource to be lost. |
| (...skipping 1134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3684 resource_provider->AllocateForTesting(id); | 3779 resource_provider->AllocateForTesting(id); |
| 3685 Mock::VerifyAndClearExpectations(context); | 3780 Mock::VerifyAndClearExpectations(context); |
| 3686 | 3781 |
| 3687 DCHECK_EQ(10u, context->PeekTextureId()); | 3782 DCHECK_EQ(10u, context->PeekTextureId()); |
| 3688 resource_provider->DeleteResource(id); | 3783 resource_provider->DeleteResource(id); |
| 3689 } | 3784 } |
| 3690 } | 3785 } |
| 3691 | 3786 |
| 3692 } // namespace | 3787 } // namespace |
| 3693 } // namespace cc | 3788 } // namespace cc |
| OLD | NEW |