| 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 RasterCanvas* raster_canvas = |
| 956 raster_canvas->writePixels(info, data3, info.minRowBytes(), 0, 0); | 956 child_resource_provider_->MapImageRasterBuffer(id3); |
| 957 raster_canvas->GetSkCanvas()->writePixels( |
| 958 info, data3, info.minRowBytes(), 0, 0); |
| 959 raster_canvas->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 RasterCanvas* raster_canvas = resource_provider->MapPixelRasterBuffer(id); |
| 2942 EXPECT_TRUE(raster_canvas == NULL); | 2945 EXPECT_TRUE(raster_canvas->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 RasterCanvas* canvas = resource_provider->MapImageRasterBuffer(id); |
| 3073 ASSERT_TRUE(!!canvas); | 3076 ASSERT_TRUE(!!canvas->GetSkCanvas()); |
| 3074 canvas->writePixels(bitmap, 0, 0); | 3077 canvas->GetSkCanvas()->writePixels(bitmap, 0, 0); |
| 3078 canvas->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 RasterCanvas* canvas = resource_provider->MapImageRasterBuffer(source_id); |
| 3199 ASSERT_TRUE(!!canvas); | 3203 ASSERT_TRUE(!!canvas->GetSkCanvas()); |
| 3200 canvas->writePixels(bitmap, 0, 0); | 3204 canvas->GetSkCanvas()->writePixels(bitmap, 0, 0); |
| 3205 canvas->Flush(); |
| 3201 resource_provider->UnmapImageRasterBuffer(source_id); | 3206 resource_provider->UnmapImageRasterBuffer(source_id); |
| 3202 | 3207 |
| 3203 dest_id = resource_provider->CreateResource( | 3208 dest_id = resource_provider->CreateResource( |
| 3204 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); | 3209 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); |
| 3205 | 3210 |
| 3206 resource_provider->CopyResource(source_id, dest_id); | 3211 resource_provider->CopyResource(source_id, dest_id); |
| 3207 | 3212 |
| 3208 { | 3213 { |
| 3209 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), | 3214 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), |
| 3210 dest_id); | 3215 dest_id); |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3405 resource_provider->AllocateForTesting(id); | 3410 resource_provider->AllocateForTesting(id); |
| 3406 Mock::VerifyAndClearExpectations(context); | 3411 Mock::VerifyAndClearExpectations(context); |
| 3407 | 3412 |
| 3408 DCHECK_EQ(10u, context->PeekTextureId()); | 3413 DCHECK_EQ(10u, context->PeekTextureId()); |
| 3409 resource_provider->DeleteResource(id); | 3414 resource_provider->DeleteResource(id); |
| 3410 } | 3415 } |
| 3411 } | 3416 } |
| 3412 | 3417 |
| 3413 } // namespace | 3418 } // namespace |
| 3414 } // namespace cc | 3419 } // namespace cc |
| OLD | NEW |