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