| 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 |