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 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); | 841 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
842 | 842 |
843 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 843 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
844 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 844 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
845 uint8_t data2[4] = { 5, 5, 5, 5 }; | 845 uint8_t data2[4] = { 5, 5, 5, 5 }; |
846 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); | 846 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); |
847 | 847 |
848 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( | 848 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( |
849 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 849 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
850 uint8_t data3[4] = { 6, 7, 8, 9 }; | 850 uint8_t data3[4] = { 6, 7, 8, 9 }; |
851 SkBitmap bitmap3; | 851 SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height()); |
852 bitmap3.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height()); | |
853 bitmap3.setPixels(data3); | |
854 SkCanvas* raster_canvas = child_resource_provider_->MapImageRasterBuffer(id3); | 852 SkCanvas* raster_canvas = child_resource_provider_->MapImageRasterBuffer(id3); |
855 raster_canvas->writePixels(bitmap3, 0, 0); | 853 raster_canvas->writePixels(info, data3, info.minRowBytes(), 0, 0); |
856 child_resource_provider_->UnmapImageRasterBuffer(id3); | 854 child_resource_provider_->UnmapImageRasterBuffer(id3); |
857 | 855 |
858 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); | 856 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); |
859 shared_memory->CreateAndMapAnonymous(1); | 857 shared_memory->CreateAndMapAnonymous(1); |
860 base::SharedMemory* shared_memory_ptr = shared_memory.get(); | 858 base::SharedMemory* shared_memory_ptr = shared_memory.get(); |
861 ResourceProvider::ResourceId id4 = | 859 ResourceProvider::ResourceId id4 = |
862 child_resource_provider_->CreateResourceFromTextureMailbox( | 860 child_resource_provider_->CreateResourceFromTextureMailbox( |
863 TextureMailbox(shared_memory_ptr, gfx::Size(1, 1)), | 861 TextureMailbox(shared_memory_ptr, gfx::Size(1, 1)), |
864 SingleReleaseCallback::Create(base::Bind( | 862 SingleReleaseCallback::Create(base::Bind( |
865 &SharedMemoryReleaseCallback, base::Passed(&shared_memory)))); | 863 &SharedMemoryReleaseCallback, base::Passed(&shared_memory)))); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
955 EXPECT_EQ(0u, returned_to_child[0].sync_point); | 953 EXPECT_EQ(0u, returned_to_child[0].sync_point); |
956 EXPECT_EQ(0u, returned_to_child[1].sync_point); | 954 EXPECT_EQ(0u, returned_to_child[1].sync_point); |
957 EXPECT_EQ(0u, returned_to_child[2].sync_point); | 955 EXPECT_EQ(0u, returned_to_child[2].sync_point); |
958 EXPECT_EQ(0u, returned_to_child[3].sync_point); | 956 EXPECT_EQ(0u, returned_to_child[3].sync_point); |
959 std::set<ResourceProvider::ResourceId> expected_ids; | 957 std::set<ResourceProvider::ResourceId> expected_ids; |
960 expected_ids.insert(id1); | 958 expected_ids.insert(id1); |
961 expected_ids.insert(id2); | 959 expected_ids.insert(id2); |
962 expected_ids.insert(id3); | 960 expected_ids.insert(id3); |
963 expected_ids.insert(id4); | 961 expected_ids.insert(id4); |
964 std::set<ResourceProvider::ResourceId> returned_ids; | 962 std::set<ResourceProvider::ResourceId> returned_ids; |
965 for(unsigned i = 0; i < 4; i++) | 963 for (unsigned i = 0; i < 4; i++) |
966 returned_ids.insert(returned_to_child[i].id); | 964 returned_ids.insert(returned_to_child[i].id); |
967 EXPECT_EQ(expected_ids, returned_ids); | 965 EXPECT_EQ(expected_ids, returned_ids); |
968 EXPECT_FALSE(returned_to_child[0].lost); | 966 EXPECT_FALSE(returned_to_child[0].lost); |
969 EXPECT_FALSE(returned_to_child[1].lost); | 967 EXPECT_FALSE(returned_to_child[1].lost); |
970 EXPECT_FALSE(returned_to_child[2].lost); | 968 EXPECT_FALSE(returned_to_child[2].lost); |
971 EXPECT_FALSE(returned_to_child[3].lost); | 969 EXPECT_FALSE(returned_to_child[3].lost); |
972 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 970 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
973 returned_to_child.clear(); | 971 returned_to_child.clear(); |
974 } | 972 } |
975 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id1)); | 973 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id1)); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 EXPECT_EQ(0u, returned_to_child[0].sync_point); | 1033 EXPECT_EQ(0u, returned_to_child[0].sync_point); |
1036 EXPECT_EQ(0u, returned_to_child[1].sync_point); | 1034 EXPECT_EQ(0u, returned_to_child[1].sync_point); |
1037 EXPECT_EQ(0u, returned_to_child[2].sync_point); | 1035 EXPECT_EQ(0u, returned_to_child[2].sync_point); |
1038 EXPECT_EQ(0u, returned_to_child[3].sync_point); | 1036 EXPECT_EQ(0u, returned_to_child[3].sync_point); |
1039 std::set<ResourceProvider::ResourceId> expected_ids; | 1037 std::set<ResourceProvider::ResourceId> expected_ids; |
1040 expected_ids.insert(id1); | 1038 expected_ids.insert(id1); |
1041 expected_ids.insert(id2); | 1039 expected_ids.insert(id2); |
1042 expected_ids.insert(id3); | 1040 expected_ids.insert(id3); |
1043 expected_ids.insert(id4); | 1041 expected_ids.insert(id4); |
1044 std::set<ResourceProvider::ResourceId> returned_ids; | 1042 std::set<ResourceProvider::ResourceId> returned_ids; |
1045 for(unsigned i = 0; i < 4; i++) | 1043 for (unsigned i = 0; i < 4; i++) |
1046 returned_ids.insert(returned_to_child[i].id); | 1044 returned_ids.insert(returned_to_child[i].id); |
1047 EXPECT_EQ(expected_ids, returned_ids); | 1045 EXPECT_EQ(expected_ids, returned_ids); |
1048 EXPECT_FALSE(returned_to_child[0].lost); | 1046 EXPECT_FALSE(returned_to_child[0].lost); |
1049 EXPECT_FALSE(returned_to_child[1].lost); | 1047 EXPECT_FALSE(returned_to_child[1].lost); |
1050 EXPECT_FALSE(returned_to_child[2].lost); | 1048 EXPECT_FALSE(returned_to_child[2].lost); |
1051 EXPECT_FALSE(returned_to_child[3].lost); | 1049 EXPECT_FALSE(returned_to_child[3].lost); |
1052 } | 1050 } |
1053 | 1051 |
1054 TEST_P(ResourceProviderTest, TransferSoftwareToNonUber) { | 1052 TEST_P(ResourceProviderTest, TransferSoftwareToNonUber) { |
1055 // TODO(jbauman): Remove test when shared bitmap manager available | 1053 // TODO(jbauman): Remove test when shared bitmap manager available |
(...skipping 1781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2837 const uint32_t kBadBeef = 0xbadbeef; | 2835 const uint32_t kBadBeef = 0xbadbeef; |
2838 | 2836 |
2839 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( | 2837 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
2840 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1)); | 2838 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1)); |
2841 | 2839 |
2842 id = resource_provider->CreateResource( | 2840 id = resource_provider->CreateResource( |
2843 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 2841 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
2844 resource_provider->AcquirePixelRasterBuffer(id); | 2842 resource_provider->AcquirePixelRasterBuffer(id); |
2845 | 2843 |
2846 SkBitmap bitmap; | 2844 SkBitmap bitmap; |
2847 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height()); | 2845 bitmap.allocN32Pixels(size.width(), size.height()); |
2848 bitmap.allocPixels(); | |
2849 *(bitmap.getAddr32(0, 0)) = kBadBeef; | 2846 *(bitmap.getAddr32(0, 0)) = kBadBeef; |
2850 SkCanvas* canvas = resource_provider->MapPixelRasterBuffer(id); | 2847 SkCanvas* canvas = resource_provider->MapPixelRasterBuffer(id); |
2851 canvas->writePixels(bitmap, 0, 0); | 2848 canvas->writePixels(bitmap, 0, 0); |
2852 resource_provider->UnmapPixelRasterBuffer(id); | 2849 resource_provider->UnmapPixelRasterBuffer(id); |
2853 | 2850 |
2854 resource_provider->BeginSetPixels(id); | 2851 resource_provider->BeginSetPixels(id); |
2855 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id)); | 2852 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id)); |
2856 | 2853 |
2857 resource_provider->ReleasePixelRasterBuffer(id); | 2854 resource_provider->ReleasePixelRasterBuffer(id); |
2858 | 2855 |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3057 ResourceProvider::ResourceId id = 0; | 3054 ResourceProvider::ResourceId id = 0; |
3058 const uint32_t kBadBeef = 0xbadbeef; | 3055 const uint32_t kBadBeef = 0xbadbeef; |
3059 | 3056 |
3060 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( | 3057 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
3061 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1)); | 3058 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1)); |
3062 | 3059 |
3063 id = resource_provider->CreateResource( | 3060 id = resource_provider->CreateResource( |
3064 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 3061 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
3065 | 3062 |
3066 SkBitmap bitmap; | 3063 SkBitmap bitmap; |
3067 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height()); | 3064 bitmap.allocN32Pixels(size.width(), size.height()); |
3068 bitmap.allocPixels(); | |
3069 *(bitmap.getAddr32(0, 0)) = kBadBeef; | 3065 *(bitmap.getAddr32(0, 0)) = kBadBeef; |
3070 SkCanvas* canvas = resource_provider->MapImageRasterBuffer(id); | 3066 SkCanvas* canvas = resource_provider->MapImageRasterBuffer(id); |
3071 ASSERT_TRUE(!!canvas); | 3067 ASSERT_TRUE(!!canvas); |
3072 canvas->writePixels(bitmap, 0, 0); | 3068 canvas->writePixels(bitmap, 0, 0); |
3073 resource_provider->UnmapImageRasterBuffer(id); | 3069 resource_provider->UnmapImageRasterBuffer(id); |
3074 | 3070 |
3075 { | 3071 { |
3076 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); | 3072 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); |
3077 const SkBitmap* sk_bitmap = lock.sk_bitmap(); | 3073 const SkBitmap* sk_bitmap = lock.sk_bitmap(); |
3078 EXPECT_EQ(sk_bitmap->width(), size.width()); | 3074 EXPECT_EQ(sk_bitmap->width(), size.width()); |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3264 resource_provider->AllocateForTesting(id); | 3260 resource_provider->AllocateForTesting(id); |
3265 Mock::VerifyAndClearExpectations(context); | 3261 Mock::VerifyAndClearExpectations(context); |
3266 | 3262 |
3267 DCHECK_EQ(10u, context->PeekTextureId()); | 3263 DCHECK_EQ(10u, context->PeekTextureId()); |
3268 resource_provider->DeleteResource(id); | 3264 resource_provider->DeleteResource(id); |
3269 } | 3265 } |
3270 } | 3266 } |
3271 | 3267 |
3272 } // namespace | 3268 } // namespace |
3273 } // namespace cc | 3269 } // namespace cc |
OLD | NEW |