| 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 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "cc/base/scoped_ptr_deque.h" | 13 #include "cc/base/scoped_ptr_deque.h" |
| 14 #include "cc/debug/test_web_graphics_context_3d.h" | 14 #include "cc/debug/test_web_graphics_context_3d.h" |
| 15 #include "cc/output/output_surface.h" | 15 #include "cc/output/output_surface.h" |
| 16 #include "cc/resources/returned_resource.h" | 16 #include "cc/resources/returned_resource.h" |
| 17 #include "cc/resources/scoped_release_callback.h" |
| 17 #include "cc/test/fake_output_surface.h" | 18 #include "cc/test/fake_output_surface.h" |
| 18 #include "cc/test/fake_output_surface_client.h" | 19 #include "cc/test/fake_output_surface_client.h" |
| 19 #include "gpu/GLES2/gl2extchromium.h" | 20 #include "gpu/GLES2/gl2extchromium.h" |
| 20 #include "testing/gmock/include/gmock/gmock.h" | 21 #include "testing/gmock/include/gmock/gmock.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 22 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" | 23 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" |
| 23 #include "third_party/khronos/GLES2/gl2.h" | 24 #include "third_party/khronos/GLES2/gl2.h" |
| 24 #include "third_party/khronos/GLES2/gl2ext.h" | 25 #include "third_party/khronos/GLES2/gl2ext.h" |
| 25 #include "ui/gfx/rect.h" | 26 #include "ui/gfx/rect.h" |
| 26 | 27 |
| (...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 824 gpu::Mailbox mailbox; | 825 gpu::Mailbox mailbox; |
| 825 context()->genMailboxCHROMIUM(mailbox.name); | 826 context()->genMailboxCHROMIUM(mailbox.name); |
| 826 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 827 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 827 unsigned sync_point = context()->insertSyncPoint(); | 828 unsigned sync_point = context()->insertSyncPoint(); |
| 828 | 829 |
| 829 // All the logic below assumes that the sync points are all positive. | 830 // All the logic below assumes that the sync points are all positive. |
| 830 EXPECT_LT(0u, sync_point); | 831 EXPECT_LT(0u, sync_point); |
| 831 | 832 |
| 832 unsigned release_sync_point = 0; | 833 unsigned release_sync_point = 0; |
| 833 bool lost_resource = false; | 834 bool lost_resource = false; |
| 834 TextureMailbox::ReleaseCallback callback = | 835 ReleaseCallback callback = |
| 835 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource); | 836 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource); |
| 836 ResourceProvider::ResourceId resource = | 837 ResourceProvider::ResourceId resource = |
| 837 resource_provider_->CreateResourceFromTextureMailbox( | 838 resource_provider_->CreateResourceFromTextureMailbox( |
| 838 TextureMailbox(mailbox, callback, sync_point)); | 839 TextureMailbox(mailbox, sync_point), |
| 840 ScopedReleaseCallback::Create(callback)); |
| 839 EXPECT_EQ(1, context()->texture_count()); | 841 EXPECT_EQ(1, context()->texture_count()); |
| 840 EXPECT_EQ(0u, release_sync_point); | 842 EXPECT_EQ(0u, release_sync_point); |
| 841 { | 843 { |
| 842 // Transfer the resource, expect the sync points to be consistent. | 844 // Transfer the resource, expect the sync points to be consistent. |
| 843 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 845 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 844 resource_ids_to_transfer.push_back(resource); | 846 resource_ids_to_transfer.push_back(resource); |
| 845 TransferableResourceArray list; | 847 TransferableResourceArray list; |
| 846 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 848 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
| 847 ASSERT_EQ(1u, list.size()); | 849 ASSERT_EQ(1u, list.size()); |
| 848 EXPECT_LE(sync_point, list[0].sync_point); | 850 EXPECT_LE(sync_point, list[0].sync_point); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 874 EXPECT_LE(list[0].sync_point, release_sync_point); | 876 EXPECT_LE(list[0].sync_point, release_sync_point); |
| 875 EXPECT_FALSE(lost_resource); | 877 EXPECT_FALSE(lost_resource); |
| 876 } | 878 } |
| 877 | 879 |
| 878 // We're going to do the same thing as above, but testing the case where we | 880 // We're going to do the same thing as above, but testing the case where we |
| 879 // delete the resource before we receive it back. | 881 // delete the resource before we receive it back. |
| 880 sync_point = release_sync_point; | 882 sync_point = release_sync_point; |
| 881 EXPECT_LT(0u, sync_point); | 883 EXPECT_LT(0u, sync_point); |
| 882 release_sync_point = 0; | 884 release_sync_point = 0; |
| 883 resource = resource_provider_->CreateResourceFromTextureMailbox( | 885 resource = resource_provider_->CreateResourceFromTextureMailbox( |
| 884 TextureMailbox(mailbox, callback, sync_point)); | 886 TextureMailbox(mailbox, sync_point), |
| 887 ScopedReleaseCallback::Create(callback)); |
| 885 EXPECT_EQ(1, context()->texture_count()); | 888 EXPECT_EQ(1, context()->texture_count()); |
| 886 EXPECT_EQ(0u, release_sync_point); | 889 EXPECT_EQ(0u, release_sync_point); |
| 887 { | 890 { |
| 888 // Transfer the resource, expect the sync points to be consistent. | 891 // Transfer the resource, expect the sync points to be consistent. |
| 889 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 892 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 890 resource_ids_to_transfer.push_back(resource); | 893 resource_ids_to_transfer.push_back(resource); |
| 891 TransferableResourceArray list; | 894 TransferableResourceArray list; |
| 892 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 895 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
| 893 ASSERT_EQ(1u, list.size()); | 896 ASSERT_EQ(1u, list.size()); |
| 894 EXPECT_LE(sync_point, list[0].sync_point); | 897 EXPECT_LE(sync_point, list[0].sync_point); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 context()->bindTexture(GL_TEXTURE_2D, texture); | 939 context()->bindTexture(GL_TEXTURE_2D, texture); |
| 937 gpu::Mailbox mailbox; | 940 gpu::Mailbox mailbox; |
| 938 context()->genMailboxCHROMIUM(mailbox.name); | 941 context()->genMailboxCHROMIUM(mailbox.name); |
| 939 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 942 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 940 unsigned sync_point = context()->insertSyncPoint(); | 943 unsigned sync_point = context()->insertSyncPoint(); |
| 941 | 944 |
| 942 EXPECT_LT(0u, sync_point); | 945 EXPECT_LT(0u, sync_point); |
| 943 | 946 |
| 944 unsigned release_sync_point = 0; | 947 unsigned release_sync_point = 0; |
| 945 bool lost_resource = false; | 948 bool lost_resource = false; |
| 946 TextureMailbox::ReleaseCallback callback = | 949 scoped_ptr<ScopedReleaseCallback> callback = ScopedReleaseCallback::Create( |
| 947 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource); | 950 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource)); |
| 948 resource_provider_->CreateResourceFromTextureMailbox( | 951 resource_provider_->CreateResourceFromTextureMailbox( |
| 949 TextureMailbox(mailbox, callback, sync_point)); | 952 TextureMailbox(mailbox, sync_point), |
| 953 callback.Pass()); |
| 950 | 954 |
| 951 EXPECT_EQ(0u, release_sync_point); | 955 EXPECT_EQ(0u, release_sync_point); |
| 952 EXPECT_FALSE(lost_resource); | 956 EXPECT_FALSE(lost_resource); |
| 953 | 957 |
| 954 resource_provider_.reset(); | 958 resource_provider_.reset(); |
| 955 | 959 |
| 956 EXPECT_LE(sync_point, release_sync_point); | 960 EXPECT_LE(sync_point, release_sync_point); |
| 957 EXPECT_FALSE(lost_resource); | 961 EXPECT_FALSE(lost_resource); |
| 958 } | 962 } |
| 959 | 963 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 975 | 979 |
| 976 TEST_P(ResourceProviderTest, ShutdownSharedMemory) { | 980 TEST_P(ResourceProviderTest, ShutdownSharedMemory) { |
| 977 if (GetParam() != ResourceProvider::Bitmap) | 981 if (GetParam() != ResourceProvider::Bitmap) |
| 978 return; | 982 return; |
| 979 | 983 |
| 980 gfx::Size size(64, 64); | 984 gfx::Size size(64, 64); |
| 981 scoped_ptr<base::SharedMemory> shared_memory( | 985 scoped_ptr<base::SharedMemory> shared_memory( |
| 982 CreateAndFillSharedMemory(size, 0)); | 986 CreateAndFillSharedMemory(size, 0)); |
| 983 | 987 |
| 984 bool release_called = false; | 988 bool release_called = false; |
| 985 TextureMailbox::ReleaseCallback callback = | 989 scoped_ptr<ScopedReleaseCallback> callback = ScopedReleaseCallback::Create( |
| 986 base::Bind(ReleaseSharedMemoryCallback, &release_called); | 990 base::Bind(ReleaseSharedMemoryCallback, &release_called)); |
| 987 resource_provider_->CreateResourceFromTextureMailbox( | 991 resource_provider_->CreateResourceFromTextureMailbox( |
| 988 TextureMailbox(shared_memory.get(), size, callback)); | 992 TextureMailbox(shared_memory.get(), size), |
| 993 callback.Pass()); |
| 989 | 994 |
| 990 resource_provider_.reset(); | 995 resource_provider_.reset(); |
| 991 | 996 |
| 992 EXPECT_TRUE(release_called); | 997 EXPECT_TRUE(release_called); |
| 993 } | 998 } |
| 994 | 999 |
| 995 TEST_P(ResourceProviderTest, ShutdownWithExportedResource) { | 1000 TEST_P(ResourceProviderTest, ShutdownWithExportedResource) { |
| 996 // TextureMailbox callbacks only exist for GL textures for now. | 1001 // TextureMailbox callbacks only exist for GL textures for now. |
| 997 if (GetParam() != ResourceProvider::GLTexture) | 1002 if (GetParam() != ResourceProvider::GLTexture) |
| 998 return; | 1003 return; |
| 999 unsigned texture = context()->createTexture(); | 1004 unsigned texture = context()->createTexture(); |
| 1000 context()->bindTexture(GL_TEXTURE_2D, texture); | 1005 context()->bindTexture(GL_TEXTURE_2D, texture); |
| 1001 gpu::Mailbox mailbox; | 1006 gpu::Mailbox mailbox; |
| 1002 context()->genMailboxCHROMIUM(mailbox.name); | 1007 context()->genMailboxCHROMIUM(mailbox.name); |
| 1003 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 1008 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 1004 unsigned sync_point = context()->insertSyncPoint(); | 1009 unsigned sync_point = context()->insertSyncPoint(); |
| 1005 | 1010 |
| 1006 EXPECT_LT(0u, sync_point); | 1011 EXPECT_LT(0u, sync_point); |
| 1007 | 1012 |
| 1008 unsigned release_sync_point = 0; | 1013 unsigned release_sync_point = 0; |
| 1009 bool lost_resource = false; | 1014 bool lost_resource = false; |
| 1010 TextureMailbox::ReleaseCallback callback = | 1015 scoped_ptr<ScopedReleaseCallback> callback = ScopedReleaseCallback::Create( |
| 1011 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource); | 1016 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource)); |
| 1012 ResourceProvider::ResourceId resource = | 1017 ResourceProvider::ResourceId resource = |
| 1013 resource_provider_->CreateResourceFromTextureMailbox( | 1018 resource_provider_->CreateResourceFromTextureMailbox( |
| 1014 TextureMailbox(mailbox, callback, sync_point)); | 1019 TextureMailbox(mailbox, sync_point), |
| 1020 callback.Pass()); |
| 1015 | 1021 |
| 1016 // Transfer the resource, so we can't release it properly on shutdown. | 1022 // Transfer the resource, so we can't release it properly on shutdown. |
| 1017 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1023 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1018 resource_ids_to_transfer.push_back(resource); | 1024 resource_ids_to_transfer.push_back(resource); |
| 1019 TransferableResourceArray list; | 1025 TransferableResourceArray list; |
| 1020 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 1026 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
| 1021 | 1027 |
| 1022 EXPECT_EQ(0u, release_sync_point); | 1028 EXPECT_EQ(0u, release_sync_point); |
| 1023 EXPECT_FALSE(lost_resource); | 1029 EXPECT_FALSE(lost_resource); |
| 1024 | 1030 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1037 context()->bindTexture(GL_TEXTURE_2D, texture); | 1043 context()->bindTexture(GL_TEXTURE_2D, texture); |
| 1038 gpu::Mailbox mailbox; | 1044 gpu::Mailbox mailbox; |
| 1039 context()->genMailboxCHROMIUM(mailbox.name); | 1045 context()->genMailboxCHROMIUM(mailbox.name); |
| 1040 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 1046 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 1041 unsigned sync_point = context()->insertSyncPoint(); | 1047 unsigned sync_point = context()->insertSyncPoint(); |
| 1042 | 1048 |
| 1043 EXPECT_LT(0u, sync_point); | 1049 EXPECT_LT(0u, sync_point); |
| 1044 | 1050 |
| 1045 unsigned release_sync_point = 0; | 1051 unsigned release_sync_point = 0; |
| 1046 bool lost_resource = false; | 1052 bool lost_resource = false; |
| 1047 TextureMailbox::ReleaseCallback callback = | 1053 scoped_ptr<ScopedReleaseCallback> callback = ScopedReleaseCallback::Create( |
| 1048 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource); | 1054 base::Bind(ReleaseTextureMailbox, &release_sync_point, &lost_resource)); |
| 1049 resource_provider_->CreateResourceFromTextureMailbox( | 1055 resource_provider_->CreateResourceFromTextureMailbox( |
| 1050 TextureMailbox(mailbox, callback, sync_point)); | 1056 TextureMailbox(mailbox, sync_point), |
| 1057 callback.Pass()); |
| 1051 | 1058 |
| 1052 EXPECT_EQ(0u, release_sync_point); | 1059 EXPECT_EQ(0u, release_sync_point); |
| 1053 EXPECT_FALSE(lost_resource); | 1060 EXPECT_FALSE(lost_resource); |
| 1054 | 1061 |
| 1055 resource_provider_->DidLoseOutputSurface(); | 1062 resource_provider_->DidLoseOutputSurface(); |
| 1056 resource_provider_.reset(); | 1063 resource_provider_.reset(); |
| 1057 | 1064 |
| 1058 EXPECT_LE(sync_point, release_sync_point); | 1065 EXPECT_LE(sync_point, release_sync_point); |
| 1059 EXPECT_TRUE(lost_resource); | 1066 EXPECT_TRUE(lost_resource); |
| 1060 } | 1067 } |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1260 | 1267 |
| 1261 FakeOutputSurfaceClient output_surface_client; | 1268 FakeOutputSurfaceClient output_surface_client; |
| 1262 scoped_ptr<OutputSurface> output_surface( | 1269 scoped_ptr<OutputSurface> output_surface( |
| 1263 FakeOutputSurface::CreateSoftware(make_scoped_ptr( | 1270 FakeOutputSurface::CreateSoftware(make_scoped_ptr( |
| 1264 new SoftwareOutputDevice))); | 1271 new SoftwareOutputDevice))); |
| 1265 CHECK(output_surface->BindToClient(&output_surface_client)); | 1272 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 1266 | 1273 |
| 1267 scoped_ptr<ResourceProvider> resource_provider( | 1274 scoped_ptr<ResourceProvider> resource_provider( |
| 1268 ResourceProvider::Create(output_surface.get(), 0)); | 1275 ResourceProvider::Create(output_surface.get(), 0)); |
| 1269 | 1276 |
| 1270 TextureMailbox::ReleaseCallback callback = base::Bind(&EmptyReleaseCallback); | 1277 scoped_ptr<ScopedReleaseCallback> callback = ScopedReleaseCallback::Create( |
| 1271 TextureMailbox mailbox(shared_memory.get(), size, callback); | 1278 base::Bind(&EmptyReleaseCallback)); |
| 1279 TextureMailbox mailbox(shared_memory.get(), size); |
| 1272 | 1280 |
| 1273 ResourceProvider::ResourceId id = | 1281 ResourceProvider::ResourceId id = |
| 1274 resource_provider->CreateResourceFromTextureMailbox(mailbox); | 1282 resource_provider->CreateResourceFromTextureMailbox( |
| 1283 mailbox, callback.Pass()); |
| 1275 EXPECT_NE(0u, id); | 1284 EXPECT_NE(0u, id); |
| 1276 | 1285 |
| 1277 { | 1286 { |
| 1278 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); | 1287 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); |
| 1279 const SkBitmap* sk_bitmap = lock.sk_bitmap(); | 1288 const SkBitmap* sk_bitmap = lock.sk_bitmap(); |
| 1280 EXPECT_EQ(sk_bitmap->width(), size.width()); | 1289 EXPECT_EQ(sk_bitmap->width(), size.width()); |
| 1281 EXPECT_EQ(sk_bitmap->height(), size.height()); | 1290 EXPECT_EQ(sk_bitmap->height(), size.height()); |
| 1282 EXPECT_EQ(*sk_bitmap->getAddr32(16, 16), kBadBeef); | 1291 EXPECT_EQ(*sk_bitmap->getAddr32(16, 16), kBadBeef); |
| 1283 } | 1292 } |
| 1284 } | 1293 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1305 unsigned target = GL_TEXTURE_2D; | 1314 unsigned target = GL_TEXTURE_2D; |
| 1306 | 1315 |
| 1307 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); | 1316 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); |
| 1308 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); | 1317 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); |
| 1309 EXPECT_CALL(*context, insertSyncPoint()).Times(0); | 1318 EXPECT_CALL(*context, insertSyncPoint()).Times(0); |
| 1310 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); | 1319 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); |
| 1311 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); | 1320 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); |
| 1312 | 1321 |
| 1313 gpu::Mailbox gpu_mailbox; | 1322 gpu::Mailbox gpu_mailbox; |
| 1314 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); | 1323 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); |
| 1315 TextureMailbox::ReleaseCallback callback = base::Bind(&EmptyReleaseCallback); | 1324 scoped_ptr<ScopedReleaseCallback> callback = ScopedReleaseCallback::Create( |
| 1325 base::Bind(&EmptyReleaseCallback)); |
| 1316 | 1326 |
| 1317 TextureMailbox mailbox(gpu_mailbox, | 1327 TextureMailbox mailbox(gpu_mailbox, sync_point); |
| 1318 callback, | |
| 1319 sync_point); | |
| 1320 | 1328 |
| 1321 ResourceProvider::ResourceId id = | 1329 ResourceProvider::ResourceId id = |
| 1322 resource_provider->CreateResourceFromTextureMailbox(mailbox); | 1330 resource_provider->CreateResourceFromTextureMailbox( |
| 1331 mailbox, callback.Pass()); |
| 1323 EXPECT_NE(0u, id); | 1332 EXPECT_NE(0u, id); |
| 1324 | 1333 |
| 1325 Mock::VerifyAndClearExpectations(context); | 1334 Mock::VerifyAndClearExpectations(context); |
| 1326 | 1335 |
| 1327 { | 1336 { |
| 1328 // Using the texture does a consume of the mailbox. | 1337 // Using the texture does a consume of the mailbox. |
| 1329 EXPECT_CALL(*context, bindTexture(target, texture_id)); | 1338 EXPECT_CALL(*context, bindTexture(target, texture_id)); |
| 1330 EXPECT_CALL(*context, waitSyncPoint(sync_point)); | 1339 EXPECT_CALL(*context, waitSyncPoint(sync_point)); |
| 1331 EXPECT_CALL(*context, consumeTextureCHROMIUM(target, _)); | 1340 EXPECT_CALL(*context, consumeTextureCHROMIUM(target, _)); |
| 1332 | 1341 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1369 unsigned target = GL_TEXTURE_EXTERNAL_OES; | 1378 unsigned target = GL_TEXTURE_EXTERNAL_OES; |
| 1370 | 1379 |
| 1371 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); | 1380 EXPECT_CALL(*context, bindTexture(_, _)).Times(0); |
| 1372 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); | 1381 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); |
| 1373 EXPECT_CALL(*context, insertSyncPoint()).Times(0); | 1382 EXPECT_CALL(*context, insertSyncPoint()).Times(0); |
| 1374 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); | 1383 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); |
| 1375 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); | 1384 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); |
| 1376 | 1385 |
| 1377 gpu::Mailbox gpu_mailbox; | 1386 gpu::Mailbox gpu_mailbox; |
| 1378 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); | 1387 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); |
| 1379 TextureMailbox::ReleaseCallback callback = base::Bind(&EmptyReleaseCallback); | 1388 scoped_ptr<ScopedReleaseCallback> callback = ScopedReleaseCallback::Create( |
| 1389 base::Bind(&EmptyReleaseCallback)); |
| 1380 | 1390 |
| 1381 TextureMailbox mailbox(gpu_mailbox, | 1391 TextureMailbox mailbox(gpu_mailbox, target, sync_point); |
| 1382 callback, | |
| 1383 target, | |
| 1384 sync_point); | |
| 1385 | 1392 |
| 1386 ResourceProvider::ResourceId id = | 1393 ResourceProvider::ResourceId id = |
| 1387 resource_provider->CreateResourceFromTextureMailbox(mailbox); | 1394 resource_provider->CreateResourceFromTextureMailbox( |
| 1395 mailbox, callback.Pass()); |
| 1388 EXPECT_NE(0u, id); | 1396 EXPECT_NE(0u, id); |
| 1389 | 1397 |
| 1390 Mock::VerifyAndClearExpectations(context); | 1398 Mock::VerifyAndClearExpectations(context); |
| 1391 | 1399 |
| 1392 { | 1400 { |
| 1393 // Using the texture does a consume of the mailbox. | 1401 // Using the texture does a consume of the mailbox. |
| 1394 EXPECT_CALL(*context, bindTexture(target, texture_id)); | 1402 EXPECT_CALL(*context, bindTexture(target, texture_id)); |
| 1395 EXPECT_CALL(*context, waitSyncPoint(sync_point)); | 1403 EXPECT_CALL(*context, waitSyncPoint(sync_point)); |
| 1396 EXPECT_CALL(*context, consumeTextureCHROMIUM(target, _)); | 1404 EXPECT_CALL(*context, consumeTextureCHROMIUM(target, _)); |
| 1397 | 1405 |
| (...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1860 output_surface.get()); | 1868 output_surface.get()); |
| 1861 } | 1869 } |
| 1862 | 1870 |
| 1863 INSTANTIATE_TEST_CASE_P( | 1871 INSTANTIATE_TEST_CASE_P( |
| 1864 ResourceProviderTests, | 1872 ResourceProviderTests, |
| 1865 ResourceProviderTest, | 1873 ResourceProviderTest, |
| 1866 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); | 1874 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); |
| 1867 | 1875 |
| 1868 } // namespace | 1876 } // namespace |
| 1869 } // namespace cc | 1877 } // namespace cc |
| OLD | NEW |