Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: cc/resources/resource_provider_unittest.cc

Issue 2769573002: Return overlay resources to renderers in larger batches. (Closed)
Patch Set: make friend Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/resources/resource_provider.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 } 1087 }
1088 1088
1089 resource_provider_->DestroyChild(child_id); 1089 resource_provider_->DestroyChild(child_id);
1090 } 1090 }
1091 1091
1092 INSTANTIATE_TEST_CASE_P( 1092 INSTANTIATE_TEST_CASE_P(
1093 ResourceProviderTests, 1093 ResourceProviderTests,
1094 ResourceProviderTestNoSyncToken, 1094 ResourceProviderTestNoSyncToken,
1095 ::testing::Values(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)); 1095 ::testing::Values(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE));
1096 1096
1097 // Test that SetBatchReturnResources batching works.
1098 TEST_P(ResourceProviderTest, SetBatchPreventsReturn) {
1099 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)
1100 return;
1101 gfx::Size size(1, 1);
1102 ResourceFormat format = RGBA_8888;
1103
1104 uint8_t data1[4] = {1, 2, 3, 4};
1105 ReturnedResourceArray returned_to_child;
1106 int child_id =
1107 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child));
1108
1109 // Transfer some resources to the parent.
1110 ResourceProvider::ResourceIdArray resource_ids_to_transfer;
1111 ResourceId ids[2];
1112 for (size_t i = 0; i < arraysize(ids); i++) {
1113 ids[i] = child_resource_provider_->CreateResource(
1114 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format,
1115 gfx::ColorSpace());
1116 child_resource_provider_->CopyToResource(ids[i], data1, size);
1117 resource_ids_to_transfer.push_back(ids[i]);
1118 }
1119
1120 child_resource_provider_->GenerateSyncTokenForResources(
1121 resource_ids_to_transfer);
1122
1123 TransferableResourceArray list;
1124 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer,
1125 &list);
1126 ASSERT_EQ(2u, list.size());
1127 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(ids[0]));
1128 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(ids[1]));
1129
1130 resource_provider_->ReceiveFromChild(child_id, list);
1131
1132 std::vector<std::unique_ptr<ResourceProvider::ScopedReadLockGL>> read_locks;
1133 for (auto& parent_resource : list) {
1134 resource_provider_->WaitSyncTokenIfNeeded(parent_resource.id);
1135 read_locks.push_back(base::MakeUnique<ResourceProvider::ScopedReadLockGL>(
1136 resource_provider_.get(), parent_resource.id));
1137 }
1138
1139 resource_provider_->DeclareUsedResourcesFromChild(child_id, ResourceIdSet());
1140 std::unique_ptr<ResourceProvider::ScopedBatchReturnResources> returner =
1141 base::MakeUnique<ResourceProvider::ScopedBatchReturnResources>(
1142 resource_provider_.get());
1143 EXPECT_EQ(0u, returned_to_child.size());
1144
1145 read_locks.clear();
1146 EXPECT_EQ(0u, returned_to_child.size());
1147
1148 returner.reset();
1149 EXPECT_EQ(2u, returned_to_child.size());
1150 // All resources in a batch should share a sync token.
1151 EXPECT_EQ(returned_to_child[0].sync_token, returned_to_child[1].sync_token);
1152
1153 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child);
1154 child_resource_provider_->DeleteResource(ids[0]);
1155 child_resource_provider_->DeleteResource(ids[1]);
1156 EXPECT_EQ(0u, child_resource_provider_->num_resources());
1157 }
1158
1097 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { 1159 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) {
1098 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) 1160 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)
1099 return; 1161 return;
1100 gfx::Size size(1, 1); 1162 gfx::Size size(1, 1);
1101 ResourceFormat format = RGBA_8888; 1163 ResourceFormat format = RGBA_8888;
1102 1164
1103 ResourceId id1 = child_resource_provider_->CreateResource( 1165 ResourceId id1 = child_resource_provider_->CreateResource(
1104 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format, 1166 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format,
1105 gfx::ColorSpace()); 1167 gfx::ColorSpace());
1106 uint8_t data1[4] = {1, 2, 3, 4}; 1168 uint8_t data1[4] = {1, 2, 3, 4};
(...skipping 2700 matching lines...) Expand 10 before | Expand all | Expand 10 after
3807 lock.set_sync_token(token); 3869 lock.set_sync_token(token);
3808 } 3870 }
3809 3871
3810 gpu::SyncToken last_token = 3872 gpu::SyncToken last_token =
3811 resource_provider_->GetSyncTokenForResources(array); 3873 resource_provider_->GetSyncTokenForResources(array);
3812 EXPECT_EQ(last_token.release_count(), 10u); 3874 EXPECT_EQ(last_token.release_count(), 10u);
3813 } 3875 }
3814 3876
3815 } // namespace 3877 } // namespace
3816 } // namespace cc 3878 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/resource_provider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698