| 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 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 base::WrapUnique(new SoftwareOutputDevice)); | 449 base::WrapUnique(new SoftwareOutputDevice)); |
| 450 child_output_surface_ = FakeOutputSurface::CreateSoftware( | 450 child_output_surface_ = FakeOutputSurface::CreateSoftware( |
| 451 base::WrapUnique(new SoftwareOutputDevice)); | 451 base::WrapUnique(new SoftwareOutputDevice)); |
| 452 break; | 452 break; |
| 453 } | 453 } |
| 454 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 454 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 455 CHECK(child_output_surface_->BindToClient(&child_output_surface_client_)); | 455 CHECK(child_output_surface_->BindToClient(&child_output_surface_client_)); |
| 456 | 456 |
| 457 shared_bitmap_manager_.reset(new TestSharedBitmapManager); | 457 shared_bitmap_manager_.reset(new TestSharedBitmapManager); |
| 458 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); | 458 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); |
| 459 child_gpu_memory_buffer_manager_ = |
| 460 gpu_memory_buffer_manager_->CreateClientGpuMemoryBufferManager(); |
| 459 | 461 |
| 460 resource_provider_ = ResourceProvider::Create( | 462 resource_provider_ = ResourceProvider::Create( |
| 461 output_surface_.get(), shared_bitmap_manager_.get(), | 463 output_surface_.get(), shared_bitmap_manager_.get(), |
| 462 gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 0, 1, | 464 gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 0, 1, |
| 463 use_gpu_memory_buffer_resources_, use_image_texture_targets_); | 465 use_gpu_memory_buffer_resources_, use_image_texture_targets_); |
| 464 child_resource_provider_ = ResourceProvider::Create( | 466 child_resource_provider_ = ResourceProvider::Create( |
| 465 child_output_surface_.get(), shared_bitmap_manager_.get(), | 467 child_output_surface_.get(), shared_bitmap_manager_.get(), |
| 466 gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), 0, 1, | 468 child_gpu_memory_buffer_manager_.get(), main_thread_task_runner_.get(), |
| 467 use_gpu_memory_buffer_resources_, use_image_texture_targets_); | 469 0, 1, use_gpu_memory_buffer_resources_, use_image_texture_targets_); |
| 468 } | 470 } |
| 469 | 471 |
| 470 ResourceProviderTest() : ResourceProviderTest(true) {} | 472 ResourceProviderTest() : ResourceProviderTest(true) {} |
| 471 | 473 |
| 472 static void CollectResources(ReturnedResourceArray* array, | 474 static void CollectResources(ReturnedResourceArray* array, |
| 473 const ReturnedResourceArray& returned, | 475 const ReturnedResourceArray& returned, |
| 474 BlockingTaskRunner* main_thread_task_runner) { | 476 BlockingTaskRunner* main_thread_task_runner) { |
| 475 array->insert(array->end(), returned.begin(), returned.end()); | 477 array->insert(array->end(), returned.begin(), returned.end()); |
| 476 } | 478 } |
| 477 | 479 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 static bool use_gpu_memory_buffer_resources_; | 539 static bool use_gpu_memory_buffer_resources_; |
| 538 static std::vector<unsigned> use_image_texture_targets_; | 540 static std::vector<unsigned> use_image_texture_targets_; |
| 539 std::unique_ptr<ContextSharedData> shared_data_; | 541 std::unique_ptr<ContextSharedData> shared_data_; |
| 540 ResourceProviderContext* context3d_; | 542 ResourceProviderContext* context3d_; |
| 541 ResourceProviderContext* child_context_; | 543 ResourceProviderContext* child_context_; |
| 542 FakeOutputSurfaceClient output_surface_client_; | 544 FakeOutputSurfaceClient output_surface_client_; |
| 543 FakeOutputSurfaceClient child_output_surface_client_; | 545 FakeOutputSurfaceClient child_output_surface_client_; |
| 544 std::unique_ptr<OutputSurface> output_surface_; | 546 std::unique_ptr<OutputSurface> output_surface_; |
| 545 std::unique_ptr<OutputSurface> child_output_surface_; | 547 std::unique_ptr<OutputSurface> child_output_surface_; |
| 546 std::unique_ptr<BlockingTaskRunner> main_thread_task_runner_; | 548 std::unique_ptr<BlockingTaskRunner> main_thread_task_runner_; |
| 549 std::unique_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_; |
| 547 std::unique_ptr<ResourceProvider> resource_provider_; | 550 std::unique_ptr<ResourceProvider> resource_provider_; |
| 551 std::unique_ptr<TestGpuMemoryBufferManager> child_gpu_memory_buffer_manager_; |
| 548 std::unique_ptr<ResourceProvider> child_resource_provider_; | 552 std::unique_ptr<ResourceProvider> child_resource_provider_; |
| 549 std::unique_ptr<TestSharedBitmapManager> shared_bitmap_manager_; | 553 std::unique_ptr<TestSharedBitmapManager> shared_bitmap_manager_; |
| 550 std::unique_ptr<TestGpuMemoryBufferManager> gpu_memory_buffer_manager_; | |
| 551 }; | 554 }; |
| 552 | 555 |
| 553 bool ResourceProviderTest::use_gpu_memory_buffer_resources_ = false; | 556 bool ResourceProviderTest::use_gpu_memory_buffer_resources_ = false; |
| 554 | 557 |
| 555 std::vector<unsigned> ResourceProviderTest::use_image_texture_targets_ = | 558 std::vector<unsigned> ResourceProviderTest::use_image_texture_targets_ = |
| 556 std::vector<unsigned>(static_cast<size_t>(gfx::BufferFormat::LAST) + 1, | 559 std::vector<unsigned>(static_cast<size_t>(gfx::BufferFormat::LAST) + 1, |
| 557 GL_TEXTURE_2D); | 560 GL_TEXTURE_2D); |
| 558 | 561 |
| 559 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type, | 562 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type, |
| 560 ResourceProvider* resource_provider, | 563 ResourceProvider* resource_provider, |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 gpu::SyncToken external_sync_token; | 661 gpu::SyncToken external_sync_token; |
| 659 child_context_->genSyncToken(child_context_->insertFenceSync(), | 662 child_context_->genSyncToken(child_context_->insertFenceSync(), |
| 660 external_sync_token.GetData()); | 663 external_sync_token.GetData()); |
| 661 EXPECT_TRUE(external_sync_token.HasData()); | 664 EXPECT_TRUE(external_sync_token.HasData()); |
| 662 ResourceId id4 = child_resource_provider_->CreateResourceFromTextureMailbox( | 665 ResourceId id4 = child_resource_provider_->CreateResourceFromTextureMailbox( |
| 663 TextureMailbox(external_mailbox, external_sync_token, | 666 TextureMailbox(external_mailbox, external_sync_token, |
| 664 GL_TEXTURE_EXTERNAL_OES), | 667 GL_TEXTURE_EXTERNAL_OES), |
| 665 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); | 668 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
| 666 | 669 |
| 667 ReturnedResourceArray returned_to_child; | 670 ReturnedResourceArray returned_to_child; |
| 668 int child_id = | 671 int child_id = resource_provider_->CreateChild( |
| 669 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 672 GetReturnCallback(&returned_to_child), |
| 673 child_gpu_memory_buffer_manager_->GetClientId()); |
| 674 |
| 670 { | 675 { |
| 671 // Transfer some resources to the parent. | 676 // Transfer some resources to the parent. |
| 672 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 677 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 673 resource_ids_to_transfer.push_back(id1); | 678 resource_ids_to_transfer.push_back(id1); |
| 674 resource_ids_to_transfer.push_back(id2); | 679 resource_ids_to_transfer.push_back(id2); |
| 675 resource_ids_to_transfer.push_back(id3); | 680 resource_ids_to_transfer.push_back(id3); |
| 676 resource_ids_to_transfer.push_back(id4); | 681 resource_ids_to_transfer.push_back(id4); |
| 677 | 682 |
| 678 child_resource_provider_->GenerateSyncTokenForResources( | 683 child_resource_provider_->GenerateSyncTokenForResources( |
| 679 resource_ids_to_transfer); | 684 resource_ids_to_transfer); |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 gpu::SyncToken external_sync_token; | 926 gpu::SyncToken external_sync_token; |
| 922 child_context_->genSyncToken(child_context_->insertFenceSync(), | 927 child_context_->genSyncToken(child_context_->insertFenceSync(), |
| 923 external_sync_token.GetData()); | 928 external_sync_token.GetData()); |
| 924 EXPECT_TRUE(external_sync_token.HasData()); | 929 EXPECT_TRUE(external_sync_token.HasData()); |
| 925 ResourceId id3 = child_resource_provider_->CreateResourceFromTextureMailbox( | 930 ResourceId id3 = child_resource_provider_->CreateResourceFromTextureMailbox( |
| 926 TextureMailbox(external_mailbox, external_sync_token, | 931 TextureMailbox(external_mailbox, external_sync_token, |
| 927 GL_TEXTURE_EXTERNAL_OES), | 932 GL_TEXTURE_EXTERNAL_OES), |
| 928 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); | 933 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
| 929 | 934 |
| 930 ReturnedResourceArray returned_to_child; | 935 ReturnedResourceArray returned_to_child; |
| 931 int child_id = | 936 int child_id = resource_provider_->CreateChild( |
| 932 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 937 GetReturnCallback(&returned_to_child), |
| 938 child_gpu_memory_buffer_manager_->GetClientId()); |
| 933 resource_provider_->SetChildNeedsSyncTokens(child_id, false); | 939 resource_provider_->SetChildNeedsSyncTokens(child_id, false); |
| 934 { | 940 { |
| 935 // Transfer some resources to the parent. | 941 // Transfer some resources to the parent. |
| 936 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 942 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 937 resource_ids_to_transfer.push_back(id1); | 943 resource_ids_to_transfer.push_back(id1); |
| 938 resource_ids_to_transfer.push_back(id2); | 944 resource_ids_to_transfer.push_back(id2); |
| 939 resource_ids_to_transfer.push_back(id3); | 945 resource_ids_to_transfer.push_back(id3); |
| 940 TransferableResourceArray list; | 946 TransferableResourceArray list; |
| 941 child_resource_provider_->GenerateSyncTokenForResources( | 947 child_resource_provider_->GenerateSyncTokenForResources( |
| 942 resource_ids_to_transfer); | 948 resource_ids_to_transfer); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1000 return; | 1006 return; |
| 1001 gfx::Size size(1, 1); | 1007 gfx::Size size(1, 1); |
| 1002 ResourceFormat format = RGBA_8888; | 1008 ResourceFormat format = RGBA_8888; |
| 1003 | 1009 |
| 1004 ResourceId id1 = child_resource_provider_->CreateResource( | 1010 ResourceId id1 = child_resource_provider_->CreateResource( |
| 1005 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1011 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1006 uint8_t data1[4] = {1, 2, 3, 4}; | 1012 uint8_t data1[4] = {1, 2, 3, 4}; |
| 1007 child_resource_provider_->CopyToResource(id1, data1, size); | 1013 child_resource_provider_->CopyToResource(id1, data1, size); |
| 1008 | 1014 |
| 1009 ReturnedResourceArray returned_to_child; | 1015 ReturnedResourceArray returned_to_child; |
| 1010 int child_id = | 1016 int child_id = resource_provider_->CreateChild( |
| 1011 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1017 GetReturnCallback(&returned_to_child), |
| 1018 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1012 { | 1019 { |
| 1013 // Transfer some resources to the parent. | 1020 // Transfer some resources to the parent. |
| 1014 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1021 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1015 resource_ids_to_transfer.push_back(id1); | 1022 resource_ids_to_transfer.push_back(id1); |
| 1016 | 1023 |
| 1017 child_resource_provider_->GenerateSyncTokenForResources( | 1024 child_resource_provider_->GenerateSyncTokenForResources( |
| 1018 resource_ids_to_transfer); | 1025 resource_ids_to_transfer); |
| 1019 | 1026 |
| 1020 TransferableResourceArray list; | 1027 TransferableResourceArray list; |
| 1021 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1028 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1069 return; | 1076 return; |
| 1070 gfx::Size size(1, 1); | 1077 gfx::Size size(1, 1); |
| 1071 ResourceFormat format = RGBA_8888; | 1078 ResourceFormat format = RGBA_8888; |
| 1072 | 1079 |
| 1073 ResourceId id1 = child_resource_provider_->CreateResource( | 1080 ResourceId id1 = child_resource_provider_->CreateResource( |
| 1074 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1081 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1075 uint8_t data1[4] = {1, 2, 3, 4}; | 1082 uint8_t data1[4] = {1, 2, 3, 4}; |
| 1076 child_resource_provider_->CopyToResource(id1, data1, size); | 1083 child_resource_provider_->CopyToResource(id1, data1, size); |
| 1077 child_resource_provider_->EnableReadLockFencesForTesting(id1); | 1084 child_resource_provider_->EnableReadLockFencesForTesting(id1); |
| 1078 ReturnedResourceArray returned_to_child; | 1085 ReturnedResourceArray returned_to_child; |
| 1079 int child_id = | 1086 int child_id = resource_provider_->CreateChild( |
| 1080 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1087 GetReturnCallback(&returned_to_child), |
| 1088 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1081 | 1089 |
| 1082 // Transfer some resources to the parent. | 1090 // Transfer some resources to the parent. |
| 1083 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1091 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1084 resource_ids_to_transfer.push_back(id1); | 1092 resource_ids_to_transfer.push_back(id1); |
| 1085 | 1093 |
| 1086 child_resource_provider_->GenerateSyncTokenForResources( | 1094 child_resource_provider_->GenerateSyncTokenForResources( |
| 1087 resource_ids_to_transfer); | 1095 resource_ids_to_transfer); |
| 1088 | 1096 |
| 1089 TransferableResourceArray list; | 1097 TransferableResourceArray list; |
| 1090 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1098 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1131 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1139 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1132 uint8_t data[4] = {1, 2, 3, 4}; | 1140 uint8_t data[4] = {1, 2, 3, 4}; |
| 1133 child_resource_provider_->CopyToResource(id1, data, size); | 1141 child_resource_provider_->CopyToResource(id1, data, size); |
| 1134 child_resource_provider_->EnableReadLockFencesForTesting(id1); | 1142 child_resource_provider_->EnableReadLockFencesForTesting(id1); |
| 1135 | 1143 |
| 1136 ResourceId id2 = child_resource_provider_->CreateResource( | 1144 ResourceId id2 = child_resource_provider_->CreateResource( |
| 1137 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1145 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1138 child_resource_provider_->CopyToResource(id2, data, size); | 1146 child_resource_provider_->CopyToResource(id2, data, size); |
| 1139 | 1147 |
| 1140 ReturnedResourceArray returned_to_child; | 1148 ReturnedResourceArray returned_to_child; |
| 1141 int child_id = | 1149 int child_id = resource_provider_->CreateChild( |
| 1142 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1150 GetReturnCallback(&returned_to_child), |
| 1151 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1143 | 1152 |
| 1144 // Transfer resources to the parent. | 1153 // Transfer resources to the parent. |
| 1145 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1154 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1146 resource_ids_to_transfer.push_back(id1); | 1155 resource_ids_to_transfer.push_back(id1); |
| 1147 resource_ids_to_transfer.push_back(id2); | 1156 resource_ids_to_transfer.push_back(id2); |
| 1148 | 1157 |
| 1149 child_resource_provider_->GenerateSyncTokenForResources( | 1158 child_resource_provider_->GenerateSyncTokenForResources( |
| 1150 resource_ids_to_transfer); | 1159 resource_ids_to_transfer); |
| 1151 | 1160 |
| 1152 TransferableResourceArray list; | 1161 TransferableResourceArray list; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1197 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1206 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1198 uint8_t data[4] = {1, 2, 3, 4}; | 1207 uint8_t data[4] = {1, 2, 3, 4}; |
| 1199 child_resource_provider_->CopyToResource(id1, data, size); | 1208 child_resource_provider_->CopyToResource(id1, data, size); |
| 1200 child_resource_provider_->EnableReadLockFencesForTesting(id1); | 1209 child_resource_provider_->EnableReadLockFencesForTesting(id1); |
| 1201 | 1210 |
| 1202 ResourceId id2 = child_resource_provider_->CreateResource( | 1211 ResourceId id2 = child_resource_provider_->CreateResource( |
| 1203 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1212 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1204 child_resource_provider_->CopyToResource(id2, data, size); | 1213 child_resource_provider_->CopyToResource(id2, data, size); |
| 1205 | 1214 |
| 1206 ReturnedResourceArray returned_to_child; | 1215 ReturnedResourceArray returned_to_child; |
| 1207 int child_id = | 1216 int child_id = resource_provider_->CreateChild( |
| 1208 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1217 GetReturnCallback(&returned_to_child), |
| 1218 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1209 | 1219 |
| 1210 // Transfer resources to the parent. | 1220 // Transfer resources to the parent. |
| 1211 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1221 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1212 resource_ids_to_transfer.push_back(id1); | 1222 resource_ids_to_transfer.push_back(id1); |
| 1213 resource_ids_to_transfer.push_back(id2); | 1223 resource_ids_to_transfer.push_back(id2); |
| 1214 | 1224 |
| 1215 child_resource_provider_->GenerateSyncTokenForResources( | 1225 child_resource_provider_->GenerateSyncTokenForResources( |
| 1216 resource_ids_to_transfer); | 1226 resource_ids_to_transfer); |
| 1217 | 1227 |
| 1218 TransferableResourceArray list; | 1228 TransferableResourceArray list; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1267 | 1277 |
| 1268 std::unique_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( | 1278 std::unique_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( |
| 1269 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); | 1279 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); |
| 1270 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); | 1280 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); |
| 1271 ResourceId id3 = child_resource_provider_->CreateResourceFromTextureMailbox( | 1281 ResourceId id3 = child_resource_provider_->CreateResourceFromTextureMailbox( |
| 1272 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), | 1282 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), |
| 1273 SingleReleaseCallbackImpl::Create(base::Bind( | 1283 SingleReleaseCallbackImpl::Create(base::Bind( |
| 1274 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); | 1284 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); |
| 1275 | 1285 |
| 1276 ReturnedResourceArray returned_to_child; | 1286 ReturnedResourceArray returned_to_child; |
| 1277 int child_id = | 1287 int child_id = resource_provider_->CreateChild( |
| 1278 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1288 GetReturnCallback(&returned_to_child), |
| 1289 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1279 { | 1290 { |
| 1280 // Transfer some resources to the parent. | 1291 // Transfer some resources to the parent. |
| 1281 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1292 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1282 resource_ids_to_transfer.push_back(id1); | 1293 resource_ids_to_transfer.push_back(id1); |
| 1283 resource_ids_to_transfer.push_back(id2); | 1294 resource_ids_to_transfer.push_back(id2); |
| 1284 resource_ids_to_transfer.push_back(id3); | 1295 resource_ids_to_transfer.push_back(id3); |
| 1285 | 1296 |
| 1286 child_resource_provider_->GenerateSyncTokenForResources( | 1297 child_resource_provider_->GenerateSyncTokenForResources( |
| 1287 resource_ids_to_transfer); | 1298 resource_ids_to_transfer); |
| 1288 | 1299 |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1472 size_t pixel_size = TextureSizeBytes(size, format); | 1483 size_t pixel_size = TextureSizeBytes(size, format); |
| 1473 ASSERT_EQ(4U, pixel_size); | 1484 ASSERT_EQ(4U, pixel_size); |
| 1474 | 1485 |
| 1475 ResourceId id1 = child_resource_provider->CreateResource( | 1486 ResourceId id1 = child_resource_provider->CreateResource( |
| 1476 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1487 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1477 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1488 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 1478 child_resource_provider->CopyToResource(id1, data1, size); | 1489 child_resource_provider->CopyToResource(id1, data1, size); |
| 1479 child_resource_provider->GenerateSyncTokenForResource(id1); | 1490 child_resource_provider->GenerateSyncTokenForResource(id1); |
| 1480 | 1491 |
| 1481 ReturnedResourceArray returned_to_child; | 1492 ReturnedResourceArray returned_to_child; |
| 1482 int child_id = | 1493 int child_id = resource_provider_->CreateChild( |
| 1483 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1494 GetReturnCallback(&returned_to_child), |
| 1495 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1484 { | 1496 { |
| 1485 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1497 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1486 resource_ids_to_transfer.push_back(id1); | 1498 resource_ids_to_transfer.push_back(id1); |
| 1487 | 1499 |
| 1488 TransferableResourceArray list; | 1500 TransferableResourceArray list; |
| 1489 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, | 1501 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, |
| 1490 &list); | 1502 &list); |
| 1491 ASSERT_EQ(1u, list.size()); | 1503 ASSERT_EQ(1u, list.size()); |
| 1492 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); | 1504 EXPECT_TRUE(list[0].mailbox_holder.sync_token.HasData()); |
| 1493 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), | 1505 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1519 ResourceFormat format = RGBA_8888; | 1531 ResourceFormat format = RGBA_8888; |
| 1520 size_t pixel_size = TextureSizeBytes(size, format); | 1532 size_t pixel_size = TextureSizeBytes(size, format); |
| 1521 ASSERT_EQ(4U, pixel_size); | 1533 ASSERT_EQ(4U, pixel_size); |
| 1522 | 1534 |
| 1523 ResourceId id1 = child_resource_provider_->CreateResource( | 1535 ResourceId id1 = child_resource_provider_->CreateResource( |
| 1524 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1536 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1525 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1537 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 1526 child_resource_provider_->CopyToResource(id1, data1, size); | 1538 child_resource_provider_->CopyToResource(id1, data1, size); |
| 1527 | 1539 |
| 1528 ReturnedResourceArray returned_to_child; | 1540 ReturnedResourceArray returned_to_child; |
| 1529 int child_id = | 1541 int child_id = resource_provider_->CreateChild( |
| 1530 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1542 GetReturnCallback(&returned_to_child), |
| 1543 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1531 { | 1544 { |
| 1532 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1545 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1533 resource_ids_to_transfer.push_back(id1); | 1546 resource_ids_to_transfer.push_back(id1); |
| 1534 | 1547 |
| 1535 child_resource_provider_->GenerateSyncTokenForResources( | 1548 child_resource_provider_->GenerateSyncTokenForResources( |
| 1536 resource_ids_to_transfer); | 1549 resource_ids_to_transfer); |
| 1537 | 1550 |
| 1538 TransferableResourceArray list; | 1551 TransferableResourceArray list; |
| 1539 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1552 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1540 &list); | 1553 &list); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1575 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1588 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1576 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1589 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 1577 child_resource_provider_->CopyToResource(id1, data1, size); | 1590 child_resource_provider_->CopyToResource(id1, data1, size); |
| 1578 | 1591 |
| 1579 ResourceId id2 = child_resource_provider_->CreateResource( | 1592 ResourceId id2 = child_resource_provider_->CreateResource( |
| 1580 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1593 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1581 uint8_t data2[4] = {5, 5, 5, 5}; | 1594 uint8_t data2[4] = {5, 5, 5, 5}; |
| 1582 child_resource_provider_->CopyToResource(id2, data2, size); | 1595 child_resource_provider_->CopyToResource(id2, data2, size); |
| 1583 | 1596 |
| 1584 ReturnedResourceArray returned_to_child; | 1597 ReturnedResourceArray returned_to_child; |
| 1585 int child_id = | 1598 int child_id = resource_provider_->CreateChild( |
| 1586 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1599 GetReturnCallback(&returned_to_child), |
| 1600 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1587 { | 1601 { |
| 1588 // Transfer some resources to the parent. | 1602 // Transfer some resources to the parent. |
| 1589 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1603 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1590 resource_ids_to_transfer.push_back(id1); | 1604 resource_ids_to_transfer.push_back(id1); |
| 1591 resource_ids_to_transfer.push_back(id2); | 1605 resource_ids_to_transfer.push_back(id2); |
| 1592 | 1606 |
| 1593 child_resource_provider_->GenerateSyncTokenForResources( | 1607 child_resource_provider_->GenerateSyncTokenForResources( |
| 1594 resource_ids_to_transfer); | 1608 resource_ids_to_transfer); |
| 1595 | 1609 |
| 1596 TransferableResourceArray list; | 1610 TransferableResourceArray list; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1679 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1693 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1680 uint8_t data1[4] = {1, 2, 3, 4}; | 1694 uint8_t data1[4] = {1, 2, 3, 4}; |
| 1681 child_resource_provider_->CopyToResource(id1, data1, size); | 1695 child_resource_provider_->CopyToResource(id1, data1, size); |
| 1682 | 1696 |
| 1683 ResourceId id2 = child_resource_provider_->CreateResource( | 1697 ResourceId id2 = child_resource_provider_->CreateResource( |
| 1684 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1698 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1685 uint8_t data2[4] = {5, 5, 5, 5}; | 1699 uint8_t data2[4] = {5, 5, 5, 5}; |
| 1686 child_resource_provider_->CopyToResource(id2, data2, size); | 1700 child_resource_provider_->CopyToResource(id2, data2, size); |
| 1687 | 1701 |
| 1688 ReturnedResourceArray returned_to_child; | 1702 ReturnedResourceArray returned_to_child; |
| 1689 int child_id = | 1703 int child_id = resource_provider_->CreateChild( |
| 1690 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1704 GetReturnCallback(&returned_to_child), |
| 1705 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1691 { | 1706 { |
| 1692 // Transfer some resources to the parent. | 1707 // Transfer some resources to the parent. |
| 1693 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1708 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1694 resource_ids_to_transfer.push_back(id1); | 1709 resource_ids_to_transfer.push_back(id1); |
| 1695 resource_ids_to_transfer.push_back(id2); | 1710 resource_ids_to_transfer.push_back(id2); |
| 1696 | 1711 |
| 1697 child_resource_provider_->GenerateSyncTokenForResources( | 1712 child_resource_provider_->GenerateSyncTokenForResources( |
| 1698 resource_ids_to_transfer); | 1713 resource_ids_to_transfer); |
| 1699 | 1714 |
| 1700 TransferableResourceArray list; | 1715 TransferableResourceArray list; |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1795 ResourceFormat format = RGBA_8888; | 1810 ResourceFormat format = RGBA_8888; |
| 1796 size_t pixel_size = TextureSizeBytes(size, format); | 1811 size_t pixel_size = TextureSizeBytes(size, format); |
| 1797 ASSERT_EQ(4U, pixel_size); | 1812 ASSERT_EQ(4U, pixel_size); |
| 1798 | 1813 |
| 1799 ResourceId id = child_resource_provider_->CreateResource( | 1814 ResourceId id = child_resource_provider_->CreateResource( |
| 1800 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1815 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1801 uint8_t data[4] = { 1, 2, 3, 4 }; | 1816 uint8_t data[4] = { 1, 2, 3, 4 }; |
| 1802 child_resource_provider_->CopyToResource(id, data, size); | 1817 child_resource_provider_->CopyToResource(id, data, size); |
| 1803 | 1818 |
| 1804 ReturnedResourceArray returned_to_child; | 1819 ReturnedResourceArray returned_to_child; |
| 1805 int child_id = | 1820 int child_id = resource_provider_->CreateChild( |
| 1806 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1821 GetReturnCallback(&returned_to_child), |
| 1822 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1807 { | 1823 { |
| 1808 // Transfer some resource to the parent. | 1824 // Transfer some resource to the parent. |
| 1809 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1825 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1810 resource_ids_to_transfer.push_back(id); | 1826 resource_ids_to_transfer.push_back(id); |
| 1811 | 1827 |
| 1812 child_resource_provider_->GenerateSyncTokenForResources( | 1828 child_resource_provider_->GenerateSyncTokenForResources( |
| 1813 resource_ids_to_transfer); | 1829 resource_ids_to_transfer); |
| 1814 | 1830 |
| 1815 TransferableResourceArray list; | 1831 TransferableResourceArray list; |
| 1816 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1832 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1850 ResourceFormat format = RGBA_8888; | 1866 ResourceFormat format = RGBA_8888; |
| 1851 size_t pixel_size = TextureSizeBytes(size, format); | 1867 size_t pixel_size = TextureSizeBytes(size, format); |
| 1852 ASSERT_EQ(4U, pixel_size); | 1868 ASSERT_EQ(4U, pixel_size); |
| 1853 | 1869 |
| 1854 ResourceId id = child_resource_provider_->CreateResource( | 1870 ResourceId id = child_resource_provider_->CreateResource( |
| 1855 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1871 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 1856 uint8_t data[4] = {1, 2, 3, 4}; | 1872 uint8_t data[4] = {1, 2, 3, 4}; |
| 1857 child_resource_provider_->CopyToResource(id, data, size); | 1873 child_resource_provider_->CopyToResource(id, data, size); |
| 1858 | 1874 |
| 1859 ReturnedResourceArray returned_to_child; | 1875 ReturnedResourceArray returned_to_child; |
| 1860 int child_id = | 1876 int child_id = resource_provider_->CreateChild( |
| 1861 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1877 GetReturnCallback(&returned_to_child), |
| 1878 child_gpu_memory_buffer_manager_->GetClientId()); |
| 1862 const ResourceProvider::ResourceIdMap& map = | 1879 const ResourceProvider::ResourceIdMap& map = |
| 1863 resource_provider_->GetChildToParentMap(child_id); | 1880 resource_provider_->GetChildToParentMap(child_id); |
| 1864 { | 1881 { |
| 1865 // Transfer some resource to the parent. | 1882 // Transfer some resource to the parent. |
| 1866 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1883 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1867 resource_ids_to_transfer.push_back(id); | 1884 resource_ids_to_transfer.push_back(id); |
| 1868 | 1885 |
| 1869 child_resource_provider_->GenerateSyncTokenForResources( | 1886 child_resource_provider_->GenerateSyncTokenForResources( |
| 1870 resource_ids_to_transfer); | 1887 resource_ids_to_transfer); |
| 1871 | 1888 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2038 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); | 2055 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); |
| 2039 EXPECT_CALL( | 2056 EXPECT_CALL( |
| 2040 *child_context, | 2057 *child_context, |
| 2041 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, child_filter)); | 2058 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, child_filter)); |
| 2042 } | 2059 } |
| 2043 SetResourceFilter(child_resource_provider.get(), id, child_filter); | 2060 SetResourceFilter(child_resource_provider.get(), id, child_filter); |
| 2044 Mock::VerifyAndClearExpectations(child_context); | 2061 Mock::VerifyAndClearExpectations(child_context); |
| 2045 | 2062 |
| 2046 ReturnedResourceArray returned_to_child; | 2063 ReturnedResourceArray returned_to_child; |
| 2047 int child_id = parent_resource_provider->CreateChild( | 2064 int child_id = parent_resource_provider->CreateChild( |
| 2048 GetReturnCallback(&returned_to_child)); | 2065 GetReturnCallback(&returned_to_child), -1); |
| 2049 { | 2066 { |
| 2050 // Transfer some resource to the parent. | 2067 // Transfer some resource to the parent. |
| 2051 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2068 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2052 resource_ids_to_transfer.push_back(id); | 2069 resource_ids_to_transfer.push_back(id); |
| 2053 TransferableResourceArray list; | 2070 TransferableResourceArray list; |
| 2054 | 2071 |
| 2055 EXPECT_CALL(*child_context, | 2072 EXPECT_CALL(*child_context, |
| 2056 produceTextureDirectCHROMIUM(_, GL_TEXTURE_2D, _)); | 2073 produceTextureDirectCHROMIUM(_, GL_TEXTURE_2D, _)); |
| 2057 | 2074 |
| 2058 child_resource_provider->GenerateSyncTokenForResources( | 2075 child_resource_provider->GenerateSyncTokenForResources( |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2282 gfx::Size size(1, 1); | 2299 gfx::Size size(1, 1); |
| 2283 ResourceFormat format = RGBA_8888; | 2300 ResourceFormat format = RGBA_8888; |
| 2284 ResourceId resource = child_resource_provider_->CreateResource( | 2301 ResourceId resource = child_resource_provider_->CreateResource( |
| 2285 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2302 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 2286 child_resource_provider_->AllocateForTesting(resource); | 2303 child_resource_provider_->AllocateForTesting(resource); |
| 2287 // Expect a GL resource to be lost. | 2304 // Expect a GL resource to be lost. |
| 2288 bool should_lose_resource = | 2305 bool should_lose_resource = |
| 2289 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE; | 2306 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE; |
| 2290 | 2307 |
| 2291 ReturnedResourceArray returned_to_child; | 2308 ReturnedResourceArray returned_to_child; |
| 2292 int child_id = | 2309 int child_id = resource_provider_->CreateChild( |
| 2293 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2310 GetReturnCallback(&returned_to_child), |
| 2311 child_gpu_memory_buffer_manager_->GetClientId()); |
| 2294 { | 2312 { |
| 2295 // Transfer the resource to the parent. | 2313 // Transfer the resource to the parent. |
| 2296 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2314 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2297 resource_ids_to_transfer.push_back(resource); | 2315 resource_ids_to_transfer.push_back(resource); |
| 2298 TransferableResourceArray list; | 2316 TransferableResourceArray list; |
| 2299 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2317 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2300 &list); | 2318 &list); |
| 2301 EXPECT_EQ(1u, list.size()); | 2319 EXPECT_EQ(1u, list.size()); |
| 2302 | 2320 |
| 2303 resource_provider_->ReceiveFromChild(child_id, list); | 2321 resource_provider_->ReceiveFromChild(child_id, list); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2334 } | 2352 } |
| 2335 | 2353 |
| 2336 TEST_P(ResourceProviderTest, LostResourceInGrandParent) { | 2354 TEST_P(ResourceProviderTest, LostResourceInGrandParent) { |
| 2337 gfx::Size size(1, 1); | 2355 gfx::Size size(1, 1); |
| 2338 ResourceFormat format = RGBA_8888; | 2356 ResourceFormat format = RGBA_8888; |
| 2339 ResourceId resource = child_resource_provider_->CreateResource( | 2357 ResourceId resource = child_resource_provider_->CreateResource( |
| 2340 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2358 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 2341 child_resource_provider_->AllocateForTesting(resource); | 2359 child_resource_provider_->AllocateForTesting(resource); |
| 2342 | 2360 |
| 2343 ReturnedResourceArray returned_to_child; | 2361 ReturnedResourceArray returned_to_child; |
| 2344 int child_id = | 2362 int child_id = resource_provider_->CreateChild( |
| 2345 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2363 GetReturnCallback(&returned_to_child), |
| 2364 child_gpu_memory_buffer_manager_->GetClientId()); |
| 2346 { | 2365 { |
| 2347 // Transfer the resource to the parent. | 2366 // Transfer the resource to the parent. |
| 2348 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2367 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2349 resource_ids_to_transfer.push_back(resource); | 2368 resource_ids_to_transfer.push_back(resource); |
| 2350 TransferableResourceArray list; | 2369 TransferableResourceArray list; |
| 2351 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2370 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2352 &list); | 2371 &list); |
| 2353 EXPECT_EQ(1u, list.size()); | 2372 EXPECT_EQ(1u, list.size()); |
| 2354 | 2373 |
| 2355 resource_provider_->ReceiveFromChild(child_id, list); | 2374 resource_provider_->ReceiveFromChild(child_id, list); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2412 | 2431 |
| 2413 TEST_P(ResourceProviderTest, LostMailboxInParent) { | 2432 TEST_P(ResourceProviderTest, LostMailboxInParent) { |
| 2414 gpu::SyncToken release_sync_token; | 2433 gpu::SyncToken release_sync_token; |
| 2415 bool lost_resource = false; | 2434 bool lost_resource = false; |
| 2416 bool release_called = false; | 2435 bool release_called = false; |
| 2417 gpu::SyncToken sync_token; | 2436 gpu::SyncToken sync_token; |
| 2418 ResourceId resource = CreateChildMailbox(&release_sync_token, &lost_resource, | 2437 ResourceId resource = CreateChildMailbox(&release_sync_token, &lost_resource, |
| 2419 &release_called, &sync_token); | 2438 &release_called, &sync_token); |
| 2420 | 2439 |
| 2421 ReturnedResourceArray returned_to_child; | 2440 ReturnedResourceArray returned_to_child; |
| 2422 int child_id = | 2441 int child_id = resource_provider_->CreateChild( |
| 2423 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2442 GetReturnCallback(&returned_to_child), |
| 2443 child_gpu_memory_buffer_manager_->GetClientId()); |
| 2424 { | 2444 { |
| 2425 // Transfer the resource to the parent. | 2445 // Transfer the resource to the parent. |
| 2426 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2446 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2427 resource_ids_to_transfer.push_back(resource); | 2447 resource_ids_to_transfer.push_back(resource); |
| 2428 TransferableResourceArray list; | 2448 TransferableResourceArray list; |
| 2429 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2449 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2430 &list); | 2450 &list); |
| 2431 EXPECT_EQ(1u, list.size()); | 2451 EXPECT_EQ(1u, list.size()); |
| 2432 | 2452 |
| 2433 resource_provider_->ReceiveFromChild(child_id, list); | 2453 resource_provider_->ReceiveFromChild(child_id, list); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2465 | 2485 |
| 2466 TEST_P(ResourceProviderTest, LostMailboxInGrandParent) { | 2486 TEST_P(ResourceProviderTest, LostMailboxInGrandParent) { |
| 2467 gpu::SyncToken release_sync_token; | 2487 gpu::SyncToken release_sync_token; |
| 2468 bool lost_resource = false; | 2488 bool lost_resource = false; |
| 2469 bool release_called = false; | 2489 bool release_called = false; |
| 2470 gpu::SyncToken sync_token; | 2490 gpu::SyncToken sync_token; |
| 2471 ResourceId resource = CreateChildMailbox(&release_sync_token, &lost_resource, | 2491 ResourceId resource = CreateChildMailbox(&release_sync_token, &lost_resource, |
| 2472 &release_called, &sync_token); | 2492 &release_called, &sync_token); |
| 2473 | 2493 |
| 2474 ReturnedResourceArray returned_to_child; | 2494 ReturnedResourceArray returned_to_child; |
| 2475 int child_id = | 2495 int child_id = resource_provider_->CreateChild( |
| 2476 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2496 GetReturnCallback(&returned_to_child), |
| 2497 child_gpu_memory_buffer_manager_->GetClientId()); |
| 2477 { | 2498 { |
| 2478 // Transfer the resource to the parent. | 2499 // Transfer the resource to the parent. |
| 2479 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2500 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2480 resource_ids_to_transfer.push_back(resource); | 2501 resource_ids_to_transfer.push_back(resource); |
| 2481 TransferableResourceArray list; | 2502 TransferableResourceArray list; |
| 2482 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2503 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 2483 &list); | 2504 &list); |
| 2484 EXPECT_EQ(1u, list.size()); | 2505 EXPECT_EQ(1u, list.size()); |
| 2485 | 2506 |
| 2486 resource_provider_->ReceiveFromChild(child_id, list); | 2507 resource_provider_->ReceiveFromChild(child_id, list); |
| (...skipping 1201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3688 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); | 3709 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); |
| 3689 } | 3710 } |
| 3690 EXPECT_TRUE(resource_provider_->CanLockForWrite(id)); | 3711 EXPECT_TRUE(resource_provider_->CanLockForWrite(id)); |
| 3691 EXPECT_FALSE(resource_provider_->InUseByConsumer(id)); | 3712 EXPECT_FALSE(resource_provider_->InUseByConsumer(id)); |
| 3692 gpu_memory_buffer_manager_->SetGpuMemoryBufferIsInUseByMacOSWindowServer( | 3713 gpu_memory_buffer_manager_->SetGpuMemoryBufferIsInUseByMacOSWindowServer( |
| 3693 gpu_memory_buffer, true); | 3714 gpu_memory_buffer, true); |
| 3694 EXPECT_FALSE(resource_provider_->CanLockForWrite(id)); | 3715 EXPECT_FALSE(resource_provider_->CanLockForWrite(id)); |
| 3695 EXPECT_TRUE(resource_provider_->InUseByConsumer(id)); | 3716 EXPECT_TRUE(resource_provider_->InUseByConsumer(id)); |
| 3696 } | 3717 } |
| 3697 | 3718 |
| 3719 TEST_P(ResourceProviderTest, GpuMemoryBufferReadLockFail) { |
| 3720 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 3721 return; |
| 3722 |
| 3723 gfx::Size size(1, 1); |
| 3724 ResourceFormat format = RGBA_8888; |
| 3725 size_t pixel_size = TextureSizeBytes(size, format); |
| 3726 ASSERT_EQ(4U, pixel_size); |
| 3727 |
| 3728 ResourceId id = resource_provider_->CreateResource( |
| 3729 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 3730 resource_provider_->AllocateForTesting(id); |
| 3731 { |
| 3732 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( |
| 3733 resource_provider_.get(), id); |
| 3734 EXPECT_FALSE(lock.GetGpuMemoryBuffer()); |
| 3735 } |
| 3736 } |
| 3737 |
| 3738 TEST_P(ResourceProviderTest, GpuMemoryBufferReadLockSucceed) { |
| 3739 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 3740 return; |
| 3741 |
| 3742 gfx::Size size(1, 1); |
| 3743 ResourceFormat format = RGBA_8888; |
| 3744 size_t pixel_size = TextureSizeBytes(size, format); |
| 3745 ASSERT_EQ(4U, pixel_size); |
| 3746 |
| 3747 ResourceId id = resource_provider_->CreateResource( |
| 3748 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 3749 gfx::GpuMemoryBuffer* gpu_memory_buffer = nullptr; |
| 3750 { |
| 3751 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
| 3752 resource_provider_.get(), id); |
| 3753 gpu_memory_buffer = lock.GetGpuMemoryBuffer(); |
| 3754 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); |
| 3755 } |
| 3756 { |
| 3757 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( |
| 3758 resource_provider_.get(), id); |
| 3759 EXPECT_EQ(gpu_memory_buffer, lock.GetGpuMemoryBuffer()); |
| 3760 } |
| 3761 } |
| 3762 |
| 3763 TEST_P(ResourceProviderTest, ChildGpuMemoryBufferReadLock) { |
| 3764 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
| 3765 return; |
| 3766 |
| 3767 gfx::Size size(1, 1); |
| 3768 ResourceFormat format = RGBA_8888; |
| 3769 size_t pixel_size = TextureSizeBytes(size, format); |
| 3770 ASSERT_EQ(4U, pixel_size); |
| 3771 |
| 3772 // Create the child resource provider. |
| 3773 ReturnedResourceArray returned_to_child; |
| 3774 int child_id = resource_provider_->CreateChild( |
| 3775 GetReturnCallback(&returned_to_child), |
| 3776 child_gpu_memory_buffer_manager_->GetClientId()); |
| 3777 |
| 3778 // Create a non-GMB-backed resource. |
| 3779 ResourceId child_resource = child_resource_provider_->CreateResource( |
| 3780 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 3781 { |
| 3782 uint8_t data1[4] = {1, 2, 3, 4}; |
| 3783 child_resource_provider_->CopyToResource(child_resource, data1, size); |
| 3784 } |
| 3785 |
| 3786 // Create a GMB-backed resource. |
| 3787 ResourceId child_gmb_resource = child_resource_provider_->CreateResource( |
| 3788 size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
| 3789 gfx::GpuMemoryBuffer* child_gmb = nullptr; |
| 3790 { |
| 3791 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
| 3792 child_resource_provider_.get(), child_gmb_resource); |
| 3793 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); |
| 3794 child_gmb = lock.GetGpuMemoryBuffer(); |
| 3795 } |
| 3796 |
| 3797 // Transfer to the parent. |
| 3798 TransferableResourceArray list; |
| 3799 { |
| 3800 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 3801 resource_ids_to_transfer.push_back(child_resource); |
| 3802 resource_ids_to_transfer.push_back(child_gmb_resource); |
| 3803 child_resource_provider_->GenerateSyncTokenForResources( |
| 3804 resource_ids_to_transfer); |
| 3805 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 3806 &list); |
| 3807 resource_provider_->ReceiveFromChild(child_id, list); |
| 3808 resource_provider_->WaitSyncTokenIfNeeded(list[0].id); |
| 3809 resource_provider_->WaitSyncTokenIfNeeded(list[1].id); |
| 3810 } |
| 3811 |
| 3812 // The non-gmb resource should not have a GpuMemoryBuffer when locked. |
| 3813 { |
| 3814 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( |
| 3815 resource_provider_.get(), list[0].id); |
| 3816 EXPECT_FALSE(lock.GetGpuMemoryBuffer()); |
| 3817 } |
| 3818 |
| 3819 // The gmb resource should have a GpuMemoryBuffer when locked |
| 3820 { |
| 3821 ResourceProvider::ScopedReadLockGpuMemoryBuffer lock( |
| 3822 resource_provider_.get(), list[1].id); |
| 3823 gfx::GpuMemoryBuffer* parent_gmb = lock.GetGpuMemoryBuffer(); |
| 3824 EXPECT_TRUE(parent_gmb); |
| 3825 EXPECT_NE(child_gmb, parent_gmb); |
| 3826 |
| 3827 // Verify that the IsInUseByMacOSWindowServer signal is shared between |
| 3828 // parent and child. |
| 3829 EXPECT_FALSE(parent_gmb->IsInUseByMacOSWindowServer()); |
| 3830 child_gpu_memory_buffer_manager_ |
| 3831 ->SetGpuMemoryBufferIsInUseByMacOSWindowServer(child_gmb, true); |
| 3832 EXPECT_TRUE(parent_gmb->IsInUseByMacOSWindowServer()); |
| 3833 child_gpu_memory_buffer_manager_ |
| 3834 ->SetGpuMemoryBufferIsInUseByMacOSWindowServer(child_gmb, false); |
| 3835 EXPECT_FALSE(parent_gmb->IsInUseByMacOSWindowServer()); |
| 3836 } |
| 3837 |
| 3838 // Transfer back to the child.{ |
| 3839 { |
| 3840 ResourceProvider::ResourceIdSet resource_ids_to_receive; |
| 3841 resource_ids_to_receive.insert(child_resource); |
| 3842 resource_ids_to_receive.insert(child_gmb_resource); |
| 3843 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 3844 resource_ids_to_receive); |
| 3845 } |
| 3846 resource_provider_->DestroyChild(child_id); |
| 3847 |
| 3848 EXPECT_EQ(0u, resource_provider_->num_resources()); |
| 3849 } |
| 3850 |
| 3698 } // namespace | 3851 } // namespace |
| 3699 } // namespace cc | 3852 } // namespace cc |
| OLD | NEW |