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 934 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
945 | 945 |
946 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 946 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
947 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 947 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
948 uint8_t data2[4] = { 5, 5, 5, 5 }; | 948 uint8_t data2[4] = { 5, 5, 5, 5 }; |
949 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); | 949 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); |
950 | 950 |
951 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( | 951 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( |
952 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 952 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
953 uint8_t data3[4] = { 6, 7, 8, 9 }; | 953 uint8_t data3[4] = { 6, 7, 8, 9 }; |
954 SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height()); | 954 SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height()); |
955 SkCanvas* raster_canvas = child_resource_provider_->MapImageRasterBuffer(id3); | 955 RasterBuffer* raster_buffer = |
956 raster_canvas->writePixels(info, data3, info.minRowBytes(), 0, 0); | 956 child_resource_provider_->MapImageRasterBuffer(id3); |
| 957 raster_buffer->GetSkCanvas()->writePixels( |
| 958 info, data3, info.minRowBytes(), 0, 0); |
| 959 raster_buffer->Flush(); |
957 child_resource_provider_->UnmapImageRasterBuffer(id3); | 960 child_resource_provider_->UnmapImageRasterBuffer(id3); |
958 | 961 |
959 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); | 962 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); |
960 shared_memory->CreateAndMapAnonymous(1); | 963 shared_memory->CreateAndMapAnonymous(1); |
961 base::SharedMemory* shared_memory_ptr = shared_memory.get(); | 964 base::SharedMemory* shared_memory_ptr = shared_memory.get(); |
962 ResourceProvider::ResourceId id4 = | 965 ResourceProvider::ResourceId id4 = |
963 child_resource_provider_->CreateResourceFromTextureMailbox( | 966 child_resource_provider_->CreateResourceFromTextureMailbox( |
964 TextureMailbox(shared_memory_ptr, gfx::Size(1, 1)), | 967 TextureMailbox(shared_memory_ptr, gfx::Size(1, 1)), |
965 SingleReleaseCallback::Create(base::Bind( | 968 SingleReleaseCallback::Create(base::Bind( |
966 &SharedMemoryReleaseCallback, base::Passed(&shared_memory)))); | 969 &SharedMemoryReleaseCallback, base::Passed(&shared_memory)))); |
(...skipping 1964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2931 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); | 2934 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); |
2932 | 2935 |
2933 EXPECT_CALL(*context, NextTextureId()).WillRepeatedly(Return(texture_id)); | 2936 EXPECT_CALL(*context, NextTextureId()).WillRepeatedly(Return(texture_id)); |
2934 | 2937 |
2935 id = resource_provider->CreateResource( | 2938 id = resource_provider->CreateResource( |
2936 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 2939 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
2937 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, | 2940 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, |
2938 GL_INNOCENT_CONTEXT_RESET_ARB); | 2941 GL_INNOCENT_CONTEXT_RESET_ARB); |
2939 | 2942 |
2940 resource_provider->AcquirePixelRasterBuffer(id); | 2943 resource_provider->AcquirePixelRasterBuffer(id); |
2941 SkCanvas* raster_canvas = resource_provider->MapPixelRasterBuffer(id); | 2944 RasterBuffer* raster_buffer = resource_provider->MapPixelRasterBuffer(id); |
2942 EXPECT_TRUE(raster_canvas == NULL); | 2945 EXPECT_TRUE(raster_buffer->GetSkCanvas() == NULL); |
2943 resource_provider->UnmapPixelRasterBuffer(id); | 2946 resource_provider->UnmapPixelRasterBuffer(id); |
2944 resource_provider->ReleasePixelRasterBuffer(id); | 2947 resource_provider->ReleasePixelRasterBuffer(id); |
2945 Mock::VerifyAndClearExpectations(context); | 2948 Mock::VerifyAndClearExpectations(context); |
2946 } | 2949 } |
2947 | 2950 |
2948 TEST_P(ResourceProviderTest, Image_GLTexture) { | 2951 TEST_P(ResourceProviderTest, Image_GLTexture) { |
2949 // Only for GL textures. | 2952 // Only for GL textures. |
2950 if (GetParam() != ResourceProvider::GLTexture) | 2953 if (GetParam() != ResourceProvider::GLTexture) |
2951 return; | 2954 return; |
2952 scoped_ptr<AllocationTrackingContext3D> context_owned( | 2955 scoped_ptr<AllocationTrackingContext3D> context_owned( |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3062 | 3065 |
3063 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( | 3066 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
3064 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); | 3067 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); |
3065 | 3068 |
3066 id = resource_provider->CreateResource( | 3069 id = resource_provider->CreateResource( |
3067 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 3070 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
3068 | 3071 |
3069 SkBitmap bitmap; | 3072 SkBitmap bitmap; |
3070 bitmap.allocN32Pixels(size.width(), size.height()); | 3073 bitmap.allocN32Pixels(size.width(), size.height()); |
3071 *(bitmap.getAddr32(0, 0)) = kBadBeef; | 3074 *(bitmap.getAddr32(0, 0)) = kBadBeef; |
3072 SkCanvas* canvas = resource_provider->MapImageRasterBuffer(id); | 3075 RasterBuffer* raster_buffer = resource_provider->MapImageRasterBuffer(id); |
3073 ASSERT_TRUE(!!canvas); | 3076 ASSERT_TRUE(!!raster_buffer->GetSkCanvas()); |
3074 canvas->writePixels(bitmap, 0, 0); | 3077 raster_buffer->GetSkCanvas()->writePixels(bitmap, 0, 0); |
| 3078 raster_buffer->Flush(); |
3075 resource_provider->UnmapImageRasterBuffer(id); | 3079 resource_provider->UnmapImageRasterBuffer(id); |
3076 | 3080 |
3077 { | 3081 { |
3078 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); | 3082 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); |
3079 const SkBitmap* sk_bitmap = lock.sk_bitmap(); | 3083 const SkBitmap* sk_bitmap = lock.sk_bitmap(); |
3080 EXPECT_EQ(sk_bitmap->width(), size.width()); | 3084 EXPECT_EQ(sk_bitmap->width(), size.width()); |
3081 EXPECT_EQ(sk_bitmap->height(), size.height()); | 3085 EXPECT_EQ(sk_bitmap->height(), size.height()); |
3082 EXPECT_EQ(*sk_bitmap->getAddr32(0, 0), kBadBeef); | 3086 EXPECT_EQ(*sk_bitmap->getAddr32(0, 0), kBadBeef); |
3083 } | 3087 } |
3084 | 3088 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3188 | 3192 |
3189 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( | 3193 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
3190 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); | 3194 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); |
3191 | 3195 |
3192 source_id = resource_provider->CreateResource( | 3196 source_id = resource_provider->CreateResource( |
3193 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 3197 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
3194 | 3198 |
3195 SkBitmap bitmap; | 3199 SkBitmap bitmap; |
3196 bitmap.allocN32Pixels(size.width(), size.height()); | 3200 bitmap.allocN32Pixels(size.width(), size.height()); |
3197 *(bitmap.getAddr32(0, 0)) = kBadBeef; | 3201 *(bitmap.getAddr32(0, 0)) = kBadBeef; |
3198 SkCanvas* canvas = resource_provider->MapImageRasterBuffer(source_id); | 3202 RasterBuffer* raster_buffer = |
3199 ASSERT_TRUE(!!canvas); | 3203 resource_provider->MapImageRasterBuffer(source_id); |
3200 canvas->writePixels(bitmap, 0, 0); | 3204 ASSERT_TRUE(!!raster_buffer->GetSkCanvas()); |
| 3205 raster_buffer->GetSkCanvas()->writePixels(bitmap, 0, 0); |
| 3206 raster_buffer->Flush(); |
3201 resource_provider->UnmapImageRasterBuffer(source_id); | 3207 resource_provider->UnmapImageRasterBuffer(source_id); |
3202 | 3208 |
3203 dest_id = resource_provider->CreateResource( | 3209 dest_id = resource_provider->CreateResource( |
3204 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 3210 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
3205 | 3211 |
3206 resource_provider->CopyResource(source_id, dest_id); | 3212 resource_provider->CopyResource(source_id, dest_id); |
3207 | 3213 |
3208 { | 3214 { |
3209 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), | 3215 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), |
3210 dest_id); | 3216 dest_id); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3405 resource_provider->AllocateForTesting(id); | 3411 resource_provider->AllocateForTesting(id); |
3406 Mock::VerifyAndClearExpectations(context); | 3412 Mock::VerifyAndClearExpectations(context); |
3407 | 3413 |
3408 DCHECK_EQ(10u, context->PeekTextureId()); | 3414 DCHECK_EQ(10u, context->PeekTextureId()); |
3409 resource_provider->DeleteResource(id); | 3415 resource_provider->DeleteResource(id); |
3410 } | 3416 } |
3411 } | 3417 } |
3412 | 3418 |
3413 } // namespace | 3419 } // namespace |
3414 } // namespace cc | 3420 } // namespace cc |
OLD | NEW |