OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/resources/resource_provider.h" | 5 #include "cc/resources/resource_provider.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 size_t pixel_size = TextureSizeBytes(size, format); | 515 size_t pixel_size = TextureSizeBytes(size, format); |
516 ASSERT_EQ(4U, pixel_size); | 516 ASSERT_EQ(4U, pixel_size); |
517 | 517 |
518 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 518 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
519 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 519 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
520 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources())); | 520 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources())); |
521 if (expected_default_type == ResourceProvider::GLTexture) | 521 if (expected_default_type == ResourceProvider::GLTexture) |
522 EXPECT_EQ(0u, context->NumTextures()); | 522 EXPECT_EQ(0u, context->NumTextures()); |
523 | 523 |
524 uint8_t data[4] = { 1, 2, 3, 4 }; | 524 uint8_t data[4] = { 1, 2, 3, 4 }; |
525 gfx::Rect rect(size); | 525 resource_provider->CopyToResource(id, data, size); |
526 resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d()); | |
527 if (expected_default_type == ResourceProvider::GLTexture) | 526 if (expected_default_type == ResourceProvider::GLTexture) |
528 EXPECT_EQ(1u, context->NumTextures()); | 527 EXPECT_EQ(1u, context->NumTextures()); |
529 | 528 |
530 uint8_t result[4] = { 0 }; | 529 uint8_t result[4] = { 0 }; |
531 GetResourcePixels(resource_provider, context, id, size, format, result); | 530 GetResourcePixels(resource_provider, context, id, size, format, result); |
532 EXPECT_EQ(0, memcmp(data, result, pixel_size)); | 531 EXPECT_EQ(0, memcmp(data, result, pixel_size)); |
533 | 532 |
534 resource_provider->DeleteResource(id); | 533 resource_provider->DeleteResource(id); |
535 EXPECT_EQ(0, static_cast<int>(resource_provider->num_resources())); | 534 EXPECT_EQ(0, static_cast<int>(resource_provider->num_resources())); |
536 if (expected_default_type == ResourceProvider::GLTexture) | 535 if (expected_default_type == ResourceProvider::GLTexture) |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 | 600 |
602 uint8_t expected[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3 }; | 601 uint8_t expected[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3 }; |
603 GetResourcePixels( | 602 GetResourcePixels( |
604 resource_provider_.get(), context(), id, size, format, result); | 603 resource_provider_.get(), context(), id, size, format, result); |
605 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); | 604 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); |
606 } | 605 } |
607 | 606 |
608 resource_provider_->DeleteResource(id); | 607 resource_provider_->DeleteResource(id); |
609 } | 608 } |
610 | 609 |
| 610 TEST_P(ResourceProviderTest, SimpleUpload) { |
| 611 gfx::Size size(2, 2); |
| 612 ResourceFormat format = RGBA_8888; |
| 613 size_t pixel_size = TextureSizeBytes(size, format); |
| 614 ASSERT_EQ(16U, pixel_size); |
| 615 |
| 616 ResourceProvider::ResourceId id = resource_provider_->CreateResource( |
| 617 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 618 |
| 619 uint8_t image[16] = {0}; |
| 620 resource_provider_->CopyToResource(id, image, size); |
| 621 { |
| 622 uint8_t result[16] = {0}; |
| 623 uint8_t expected[16] = {0}; |
| 624 GetResourcePixels(resource_provider_.get(), context(), id, size, format, |
| 625 result); |
| 626 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); |
| 627 } |
| 628 |
| 629 for (uint8_t i = 0; i < pixel_size; ++i) |
| 630 image[i] = i; |
| 631 resource_provider_->CopyToResource(id, image, size); |
| 632 { |
| 633 uint8_t result[16] = {0}; |
| 634 uint8_t expected[16] = { |
| 635 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; |
| 636 GetResourcePixels(resource_provider_.get(), context(), id, size, format, |
| 637 result); |
| 638 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); |
| 639 } |
| 640 } |
| 641 |
611 TEST_P(ResourceProviderTest, TransferGLResources) { | 642 TEST_P(ResourceProviderTest, TransferGLResources) { |
612 if (GetParam() != ResourceProvider::GLTexture) | 643 if (GetParam() != ResourceProvider::GLTexture) |
613 return; | 644 return; |
614 gfx::Size size(1, 1); | 645 gfx::Size size(1, 1); |
615 ResourceFormat format = RGBA_8888; | 646 ResourceFormat format = RGBA_8888; |
616 size_t pixel_size = TextureSizeBytes(size, format); | 647 size_t pixel_size = TextureSizeBytes(size, format); |
617 ASSERT_EQ(4U, pixel_size); | 648 ASSERT_EQ(4U, pixel_size); |
618 | 649 |
619 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 650 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
620 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 651 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
621 uint8_t data1[4] = { 1, 2, 3, 4 }; | 652 uint8_t data1[4] = { 1, 2, 3, 4 }; |
622 gfx::Rect rect(size); | 653 child_resource_provider_->CopyToResource(id1, data1, size); |
623 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | |
624 | 654 |
625 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 655 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
626 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 656 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
627 uint8_t data2[4] = { 5, 5, 5, 5 }; | 657 uint8_t data2[4] = { 5, 5, 5, 5 }; |
628 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); | 658 child_resource_provider_->CopyToResource(id2, data2, size); |
629 | 659 |
630 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( | 660 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( |
631 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 661 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
632 { | 662 { |
633 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( | 663 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
634 child_resource_provider_.get(), id3); | 664 child_resource_provider_.get(), id3); |
635 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); | 665 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); |
636 } | 666 } |
637 | 667 |
638 GLuint external_texture_id = child_context_->createExternalTexture(); | 668 GLuint external_texture_id = child_context_->createExternalTexture(); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 | 886 |
857 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { | 887 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { |
858 if (GetParam() != ResourceProvider::GLTexture) | 888 if (GetParam() != ResourceProvider::GLTexture) |
859 return; | 889 return; |
860 gfx::Size size(1, 1); | 890 gfx::Size size(1, 1); |
861 ResourceFormat format = RGBA_8888; | 891 ResourceFormat format = RGBA_8888; |
862 | 892 |
863 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 893 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
864 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 894 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
865 uint8_t data1[4] = {1, 2, 3, 4}; | 895 uint8_t data1[4] = {1, 2, 3, 4}; |
866 gfx::Rect rect(size); | 896 child_resource_provider_->CopyToResource(id1, data1, size); |
867 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | |
868 | 897 |
869 ReturnedResourceArray returned_to_child; | 898 ReturnedResourceArray returned_to_child; |
870 int child_id = | 899 int child_id = |
871 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 900 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
872 { | 901 { |
873 // Transfer some resources to the parent. | 902 // Transfer some resources to the parent. |
874 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 903 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
875 resource_ids_to_transfer.push_back(id1); | 904 resource_ids_to_transfer.push_back(id1); |
876 TransferableResourceArray list; | 905 TransferableResourceArray list; |
877 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 906 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
962 return; | 991 return; |
963 | 992 |
964 gfx::Size size(1, 1); | 993 gfx::Size size(1, 1); |
965 ResourceFormat format = RGBA_8888; | 994 ResourceFormat format = RGBA_8888; |
966 size_t pixel_size = TextureSizeBytes(size, format); | 995 size_t pixel_size = TextureSizeBytes(size, format); |
967 ASSERT_EQ(4U, pixel_size); | 996 ASSERT_EQ(4U, pixel_size); |
968 | 997 |
969 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 998 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
970 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 999 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
971 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1000 uint8_t data1[4] = { 1, 2, 3, 4 }; |
972 gfx::Rect rect(size); | 1001 child_resource_provider_->CopyToResource(id1, data1, size); |
973 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | |
974 | 1002 |
975 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1003 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
976 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1004 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
977 uint8_t data2[4] = { 5, 5, 5, 5 }; | 1005 uint8_t data2[4] = { 5, 5, 5, 5 }; |
978 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); | 1006 child_resource_provider_->CopyToResource(id2, data2, size); |
979 | 1007 |
980 scoped_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( | 1008 scoped_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( |
981 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); | 1009 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); |
982 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); | 1010 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); |
983 ResourceProvider::ResourceId id3 = | 1011 ResourceProvider::ResourceId id3 = |
984 child_resource_provider_->CreateResourceFromTextureMailbox( | 1012 child_resource_provider_->CreateResourceFromTextureMailbox( |
985 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), | 1013 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), |
986 SingleReleaseCallbackImpl::Create(base::Bind( | 1014 SingleReleaseCallbackImpl::Create(base::Bind( |
987 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); | 1015 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); |
988 | 1016 |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1164 1)); | 1192 1)); |
1165 | 1193 |
1166 gfx::Size size(1, 1); | 1194 gfx::Size size(1, 1); |
1167 ResourceFormat format = RGBA_8888; | 1195 ResourceFormat format = RGBA_8888; |
1168 size_t pixel_size = TextureSizeBytes(size, format); | 1196 size_t pixel_size = TextureSizeBytes(size, format); |
1169 ASSERT_EQ(4U, pixel_size); | 1197 ASSERT_EQ(4U, pixel_size); |
1170 | 1198 |
1171 ResourceProvider::ResourceId id1 = child_resource_provider->CreateResource( | 1199 ResourceProvider::ResourceId id1 = child_resource_provider->CreateResource( |
1172 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1200 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1173 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1201 uint8_t data1[4] = { 1, 2, 3, 4 }; |
1174 gfx::Rect rect(size); | 1202 child_resource_provider->CopyToResource(id1, data1, size); |
1175 child_resource_provider->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | |
1176 | 1203 |
1177 ReturnedResourceArray returned_to_child; | 1204 ReturnedResourceArray returned_to_child; |
1178 int child_id = | 1205 int child_id = |
1179 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1206 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1180 { | 1207 { |
1181 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1208 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1182 resource_ids_to_transfer.push_back(id1); | 1209 resource_ids_to_transfer.push_back(id1); |
1183 TransferableResourceArray list; | 1210 TransferableResourceArray list; |
1184 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, | 1211 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, |
1185 &list); | 1212 &list); |
(...skipping 25 matching lines...) Expand all Loading... |
1211 return; | 1238 return; |
1212 | 1239 |
1213 gfx::Size size(1, 1); | 1240 gfx::Size size(1, 1); |
1214 ResourceFormat format = RGBA_8888; | 1241 ResourceFormat format = RGBA_8888; |
1215 size_t pixel_size = TextureSizeBytes(size, format); | 1242 size_t pixel_size = TextureSizeBytes(size, format); |
1216 ASSERT_EQ(4U, pixel_size); | 1243 ASSERT_EQ(4U, pixel_size); |
1217 | 1244 |
1218 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1245 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
1219 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1246 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1220 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1247 uint8_t data1[4] = { 1, 2, 3, 4 }; |
1221 gfx::Rect rect(size); | 1248 child_resource_provider_->CopyToResource(id1, data1, size); |
1222 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | |
1223 | 1249 |
1224 ReturnedResourceArray returned_to_child; | 1250 ReturnedResourceArray returned_to_child; |
1225 int child_id = | 1251 int child_id = |
1226 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1252 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1227 { | 1253 { |
1228 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1254 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1229 resource_ids_to_transfer.push_back(id1); | 1255 resource_ids_to_transfer.push_back(id1); |
1230 TransferableResourceArray list; | 1256 TransferableResourceArray list; |
1231 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1257 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1232 &list); | 1258 &list); |
(...skipping 26 matching lines...) Expand all Loading... |
1259 | 1285 |
1260 TEST_P(ResourceProviderTest, DeleteExportedResources) { | 1286 TEST_P(ResourceProviderTest, DeleteExportedResources) { |
1261 gfx::Size size(1, 1); | 1287 gfx::Size size(1, 1); |
1262 ResourceFormat format = RGBA_8888; | 1288 ResourceFormat format = RGBA_8888; |
1263 size_t pixel_size = TextureSizeBytes(size, format); | 1289 size_t pixel_size = TextureSizeBytes(size, format); |
1264 ASSERT_EQ(4U, pixel_size); | 1290 ASSERT_EQ(4U, pixel_size); |
1265 | 1291 |
1266 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1292 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
1267 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1293 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1268 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1294 uint8_t data1[4] = { 1, 2, 3, 4 }; |
1269 gfx::Rect rect(size); | 1295 child_resource_provider_->CopyToResource(id1, data1, size); |
1270 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | |
1271 | 1296 |
1272 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1297 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
1273 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1298 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1274 uint8_t data2[4] = {5, 5, 5, 5}; | 1299 uint8_t data2[4] = {5, 5, 5, 5}; |
1275 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); | 1300 child_resource_provider_->CopyToResource(id2, data2, size); |
1276 | 1301 |
1277 ReturnedResourceArray returned_to_child; | 1302 ReturnedResourceArray returned_to_child; |
1278 int child_id = | 1303 int child_id = |
1279 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1304 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1280 { | 1305 { |
1281 // Transfer some resources to the parent. | 1306 // Transfer some resources to the parent. |
1282 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1307 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1283 resource_ids_to_transfer.push_back(id1); | 1308 resource_ids_to_transfer.push_back(id1); |
1284 resource_ids_to_transfer.push_back(id2); | 1309 resource_ids_to_transfer.push_back(id2); |
1285 TransferableResourceArray list; | 1310 TransferableResourceArray list; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1353 | 1378 |
1354 TEST_P(ResourceProviderTest, DestroyChildWithExportedResources) { | 1379 TEST_P(ResourceProviderTest, DestroyChildWithExportedResources) { |
1355 gfx::Size size(1, 1); | 1380 gfx::Size size(1, 1); |
1356 ResourceFormat format = RGBA_8888; | 1381 ResourceFormat format = RGBA_8888; |
1357 size_t pixel_size = TextureSizeBytes(size, format); | 1382 size_t pixel_size = TextureSizeBytes(size, format); |
1358 ASSERT_EQ(4U, pixel_size); | 1383 ASSERT_EQ(4U, pixel_size); |
1359 | 1384 |
1360 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1385 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
1361 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1386 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1362 uint8_t data1[4] = {1, 2, 3, 4}; | 1387 uint8_t data1[4] = {1, 2, 3, 4}; |
1363 gfx::Rect rect(size); | 1388 child_resource_provider_->CopyToResource(id1, data1, size); |
1364 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | |
1365 | 1389 |
1366 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1390 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
1367 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1391 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1368 uint8_t data2[4] = {5, 5, 5, 5}; | 1392 uint8_t data2[4] = {5, 5, 5, 5}; |
1369 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); | 1393 child_resource_provider_->CopyToResource(id2, data2, size); |
1370 | 1394 |
1371 ReturnedResourceArray returned_to_child; | 1395 ReturnedResourceArray returned_to_child; |
1372 int child_id = | 1396 int child_id = |
1373 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1397 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1374 { | 1398 { |
1375 // Transfer some resources to the parent. | 1399 // Transfer some resources to the parent. |
1376 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1400 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1377 resource_ids_to_transfer.push_back(id1); | 1401 resource_ids_to_transfer.push_back(id1); |
1378 resource_ids_to_transfer.push_back(id2); | 1402 resource_ids_to_transfer.push_back(id2); |
1379 TransferableResourceArray list; | 1403 TransferableResourceArray list; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1464 | 1488 |
1465 TEST_P(ResourceProviderTest, DeleteTransferredResources) { | 1489 TEST_P(ResourceProviderTest, DeleteTransferredResources) { |
1466 gfx::Size size(1, 1); | 1490 gfx::Size size(1, 1); |
1467 ResourceFormat format = RGBA_8888; | 1491 ResourceFormat format = RGBA_8888; |
1468 size_t pixel_size = TextureSizeBytes(size, format); | 1492 size_t pixel_size = TextureSizeBytes(size, format); |
1469 ASSERT_EQ(4U, pixel_size); | 1493 ASSERT_EQ(4U, pixel_size); |
1470 | 1494 |
1471 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( | 1495 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( |
1472 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1496 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1473 uint8_t data[4] = { 1, 2, 3, 4 }; | 1497 uint8_t data[4] = { 1, 2, 3, 4 }; |
1474 gfx::Rect rect(size); | 1498 child_resource_provider_->CopyToResource(id, data, size); |
1475 child_resource_provider_->SetPixels(id, data, rect, rect, gfx::Vector2d()); | |
1476 | 1499 |
1477 ReturnedResourceArray returned_to_child; | 1500 ReturnedResourceArray returned_to_child; |
1478 int child_id = | 1501 int child_id = |
1479 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1502 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1480 { | 1503 { |
1481 // Transfer some resource to the parent. | 1504 // Transfer some resource to the parent. |
1482 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1505 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1483 resource_ids_to_transfer.push_back(id); | 1506 resource_ids_to_transfer.push_back(id); |
1484 TransferableResourceArray list; | 1507 TransferableResourceArray list; |
1485 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1508 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
(...skipping 28 matching lines...) Expand all Loading... |
1514 | 1537 |
1515 TEST_P(ResourceProviderTest, UnuseTransferredResources) { | 1538 TEST_P(ResourceProviderTest, UnuseTransferredResources) { |
1516 gfx::Size size(1, 1); | 1539 gfx::Size size(1, 1); |
1517 ResourceFormat format = RGBA_8888; | 1540 ResourceFormat format = RGBA_8888; |
1518 size_t pixel_size = TextureSizeBytes(size, format); | 1541 size_t pixel_size = TextureSizeBytes(size, format); |
1519 ASSERT_EQ(4U, pixel_size); | 1542 ASSERT_EQ(4U, pixel_size); |
1520 | 1543 |
1521 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( | 1544 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( |
1522 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 1545 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
1523 uint8_t data[4] = {1, 2, 3, 4}; | 1546 uint8_t data[4] = {1, 2, 3, 4}; |
1524 gfx::Rect rect(size); | 1547 child_resource_provider_->CopyToResource(id, data, size); |
1525 child_resource_provider_->SetPixels(id, data, rect, rect, gfx::Vector2d()); | |
1526 | 1548 |
1527 ReturnedResourceArray returned_to_child; | 1549 ReturnedResourceArray returned_to_child; |
1528 int child_id = | 1550 int child_id = |
1529 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1551 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1530 const ResourceProvider::ResourceIdMap& map = | 1552 const ResourceProvider::ResourceIdMap& map = |
1531 resource_provider_->GetChildToParentMap(child_id); | 1553 resource_provider_->GetChildToParentMap(child_id); |
1532 { | 1554 { |
1533 // Transfer some resource to the parent. | 1555 // Transfer some resource to the parent. |
1534 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1556 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1535 resource_ids_to_transfer.push_back(id); | 1557 resource_ids_to_transfer.push_back(id); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1688 *child_context, | 1710 *child_context, |
1689 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); | 1711 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); |
1690 EXPECT_CALL(*child_context, | 1712 EXPECT_CALL(*child_context, |
1691 texParameteri(GL_TEXTURE_2D, | 1713 texParameteri(GL_TEXTURE_2D, |
1692 GL_TEXTURE_POOL_CHROMIUM, | 1714 GL_TEXTURE_POOL_CHROMIUM, |
1693 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); | 1715 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); |
1694 child_resource_provider->AllocateForTesting(id); | 1716 child_resource_provider->AllocateForTesting(id); |
1695 Mock::VerifyAndClearExpectations(child_context); | 1717 Mock::VerifyAndClearExpectations(child_context); |
1696 | 1718 |
1697 uint8_t data[4] = { 1, 2, 3, 4 }; | 1719 uint8_t data[4] = { 1, 2, 3, 4 }; |
1698 gfx::Rect rect(size); | |
1699 | 1720 |
1700 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); | 1721 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); |
1701 child_resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d()); | 1722 child_resource_provider->CopyToResource(id, data, size); |
1702 Mock::VerifyAndClearExpectations(child_context); | 1723 Mock::VerifyAndClearExpectations(child_context); |
1703 | 1724 |
1704 // The texture is set to |child_filter| in the child. | 1725 // The texture is set to |child_filter| in the child. |
1705 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); | 1726 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); |
1706 if (child_filter != GL_LINEAR) { | 1727 if (child_filter != GL_LINEAR) { |
1707 EXPECT_CALL( | 1728 EXPECT_CALL( |
1708 *child_context, | 1729 *child_context, |
1709 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); | 1730 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); |
1710 EXPECT_CALL( | 1731 EXPECT_CALL( |
1711 *child_context, | 1732 *child_context, |
(...skipping 1316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3028 ResourceProvider::Create(output_surface.get(), | 3049 ResourceProvider::Create(output_surface.get(), |
3029 shared_bitmap_manager_.get(), | 3050 shared_bitmap_manager_.get(), |
3030 gpu_memory_buffer_manager_.get(), | 3051 gpu_memory_buffer_manager_.get(), |
3031 NULL, | 3052 NULL, |
3032 0, | 3053 0, |
3033 false, | 3054 false, |
3034 1)); | 3055 1)); |
3035 | 3056 |
3036 gfx::Size size(2, 2); | 3057 gfx::Size size(2, 2); |
3037 gfx::Vector2d offset(0, 0); | 3058 gfx::Vector2d offset(0, 0); |
3038 gfx::Rect rect(0, 0, 2, 2); | |
3039 ResourceFormat format = RGBA_8888; | 3059 ResourceFormat format = RGBA_8888; |
3040 ResourceProvider::ResourceId id = 0; | 3060 ResourceProvider::ResourceId id = 0; |
3041 uint8_t pixels[16] = { 0 }; | 3061 uint8_t pixels[16] = { 0 }; |
3042 int texture_id = 123; | 3062 int texture_id = 123; |
3043 | 3063 |
3044 // Lazy allocation. Don't allocate when creating the resource. | 3064 // Lazy allocation. Don't allocate when creating the resource. |
3045 id = resource_provider->CreateResource( | 3065 id = resource_provider->CreateResource( |
3046 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 3066 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
3047 | 3067 |
3048 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3068 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3049 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); | 3069 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); |
3050 resource_provider->CreateForTesting(id); | 3070 resource_provider->CreateForTesting(id); |
3051 | 3071 |
3052 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3072 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
3053 resource_provider->DeleteResource(id); | 3073 resource_provider->DeleteResource(id); |
3054 | 3074 |
3055 Mock::VerifyAndClearExpectations(context); | 3075 Mock::VerifyAndClearExpectations(context); |
3056 | 3076 |
3057 // Do allocate when we set the pixels. | 3077 // Do allocate when we set the pixels. |
3058 id = resource_provider->CreateResource( | 3078 id = resource_provider->CreateResource( |
3059 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 3079 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
3060 | 3080 |
3061 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3081 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3062 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); | 3082 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); |
3063 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)).Times(1); | 3083 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)).Times(1); |
3064 EXPECT_CALL(*context, texSubImage2D(_, _, _, _, 2, 2, _, _, _)).Times(1); | 3084 EXPECT_CALL(*context, texSubImage2D(_, _, _, _, 2, 2, _, _, _)).Times(1); |
3065 resource_provider->SetPixels(id, pixels, rect, rect, offset); | 3085 resource_provider->CopyToResource(id, pixels, size); |
3066 | 3086 |
3067 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3087 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
3068 resource_provider->DeleteResource(id); | 3088 resource_provider->DeleteResource(id); |
3069 | 3089 |
3070 Mock::VerifyAndClearExpectations(context); | 3090 Mock::VerifyAndClearExpectations(context); |
3071 | 3091 |
3072 // Same for async version. | 3092 // Same for async version. |
3073 id = resource_provider->CreateResource( | 3093 id = resource_provider->CreateResource( |
3074 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); | 3094 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
3075 resource_provider->AcquirePixelBuffer(id); | 3095 resource_provider->AcquirePixelBuffer(id); |
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3588 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, ETC1); | 3608 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, ETC1); |
3589 EXPECT_NE(0u, id); | 3609 EXPECT_NE(0u, id); |
3590 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3610 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3591 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3611 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
3592 resource_provider->AllocateForTesting(id); | 3612 resource_provider->AllocateForTesting(id); |
3593 | 3613 |
3594 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3614 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
3595 resource_provider->DeleteResource(id); | 3615 resource_provider->DeleteResource(id); |
3596 } | 3616 } |
3597 | 3617 |
3598 TEST_P(ResourceProviderTest, CompressedTextureETC1SetPixels) { | 3618 TEST_P(ResourceProviderTest, CompressedTextureETC1Upload) { |
3599 if (GetParam() != ResourceProvider::GLTexture) | 3619 if (GetParam() != ResourceProvider::GLTexture) |
3600 return; | 3620 return; |
3601 | 3621 |
3602 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3622 scoped_ptr<AllocationTrackingContext3D> context_owned( |
3603 new AllocationTrackingContext3D); | 3623 new AllocationTrackingContext3D); |
3604 AllocationTrackingContext3D* context = context_owned.get(); | 3624 AllocationTrackingContext3D* context = context_owned.get(); |
3605 context_owned->set_support_compressed_texture_etc1(true); | 3625 context_owned->set_support_compressed_texture_etc1(true); |
3606 | 3626 |
3607 FakeOutputSurfaceClient output_surface_client; | 3627 FakeOutputSurfaceClient output_surface_client; |
3608 scoped_ptr<OutputSurface> output_surface( | 3628 scoped_ptr<OutputSurface> output_surface( |
(...skipping 13 matching lines...) Expand all Loading... |
3622 uint8_t pixels[8]; | 3642 uint8_t pixels[8]; |
3623 | 3643 |
3624 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3644 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
3625 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, ETC1); | 3645 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, ETC1); |
3626 EXPECT_NE(0u, id); | 3646 EXPECT_NE(0u, id); |
3627 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3647 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3628 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); | 3648 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); |
3629 EXPECT_CALL(*context, | 3649 EXPECT_CALL(*context, |
3630 compressedTexImage2D( | 3650 compressedTexImage2D( |
3631 _, 0, _, size.width(), size.height(), _, _, _)).Times(1); | 3651 _, 0, _, size.width(), size.height(), _, _, _)).Times(1); |
3632 resource_provider->SetPixels( | 3652 resource_provider->CopyToResource(id, pixels, size); |
3633 id, pixels, gfx::Rect(size), gfx::Rect(size), gfx::Vector2d(0, 0)); | |
3634 | 3653 |
3635 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3654 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
3636 resource_provider->DeleteResource(id); | 3655 resource_provider->DeleteResource(id); |
3637 } | 3656 } |
3638 | 3657 |
3639 INSTANTIATE_TEST_CASE_P( | 3658 INSTANTIATE_TEST_CASE_P( |
3640 ResourceProviderTests, | 3659 ResourceProviderTests, |
3641 ResourceProviderTest, | 3660 ResourceProviderTest, |
3642 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); | 3661 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); |
3643 | 3662 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3705 resource_provider->AllocateForTesting(id); | 3724 resource_provider->AllocateForTesting(id); |
3706 Mock::VerifyAndClearExpectations(context); | 3725 Mock::VerifyAndClearExpectations(context); |
3707 | 3726 |
3708 DCHECK_EQ(10u, context->PeekTextureId()); | 3727 DCHECK_EQ(10u, context->PeekTextureId()); |
3709 resource_provider->DeleteResource(id); | 3728 resource_provider->DeleteResource(id); |
3710 } | 3729 } |
3711 } | 3730 } |
3712 | 3731 |
3713 } // namespace | 3732 } // namespace |
3714 } // namespace cc | 3733 } // namespace cc |
OLD | NEW |