Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Side by Side Diff: cc/resources/resource_provider_unittest.cc

Issue 454843002: cc: Do bitmap conversion for RasterBuffer in the worker thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code refactoring. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 936 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 RasterBuffer* raster_buffer = 955 RasterBuffer* raster_buffer =
956 child_resource_provider_->AcquireImageRasterBuffer(id3); 956 child_resource_provider_->AcquireImageRasterBuffer(id3);
957 SkCanvas* canvas = raster_buffer->AcquireSkCanvas(); 957 skia::RefPtr<SkCanvas> canvas = raster_buffer->AcquireSkCanvas();
958 canvas->writePixels(info, data3, info.minRowBytes(), 0, 0); 958 canvas->writePixels(info, data3, info.minRowBytes(), 0, 0);
959 raster_buffer->ReleaseSkCanvas(); 959 raster_buffer->ReleaseSkCanvas(canvas.get());
960 canvas.clear();
960 child_resource_provider_->ReleaseImageRasterBuffer(id3); 961 child_resource_provider_->ReleaseImageRasterBuffer(id3);
961 962
962 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); 963 scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
963 shared_memory->CreateAndMapAnonymous(1); 964 shared_memory->CreateAndMapAnonymous(1);
964 base::SharedMemory* shared_memory_ptr = shared_memory.get(); 965 base::SharedMemory* shared_memory_ptr = shared_memory.get();
965 ResourceProvider::ResourceId id4 = 966 ResourceProvider::ResourceId id4 =
966 child_resource_provider_->CreateResourceFromTextureMailbox( 967 child_resource_provider_->CreateResourceFromTextureMailbox(
967 TextureMailbox(shared_memory_ptr, gfx::Size(1, 1)), 968 TextureMailbox(shared_memory_ptr, gfx::Size(1, 1)),
968 SingleReleaseCallback::Create(base::Bind( 969 SingleReleaseCallback::Create(base::Bind(
969 &SharedMemoryReleaseCallback, base::Passed(&shared_memory)))); 970 &SharedMemoryReleaseCallback, base::Passed(&shared_memory))));
(...skipping 1963 matching lines...) Expand 10 before | Expand all | Expand 10 after
2933 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 2934 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create(
2934 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); 2935 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false));
2935 2936
2936 EXPECT_CALL(*context, NextTextureId()).WillRepeatedly(Return(texture_id)); 2937 EXPECT_CALL(*context, NextTextureId()).WillRepeatedly(Return(texture_id));
2937 2938
2938 id = resource_provider->CreateResource( 2939 id = resource_provider->CreateResource(
2939 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); 2940 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
2940 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, 2941 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
2941 GL_INNOCENT_CONTEXT_RESET_ARB); 2942 GL_INNOCENT_CONTEXT_RESET_ARB);
2942 2943
2943 resource_provider->AcquirePixelRasterBuffer(id); 2944 RasterBuffer* raster_buffer = resource_provider->AcquirePixelRasterBuffer(id);
2944 RasterBuffer* raster_buffer = resource_provider->MapPixelRasterBuffer(id); 2945 skia::RefPtr<SkCanvas> canvas = raster_buffer->AcquireSkCanvas();
2945 SkCanvas* canvas = raster_buffer->AcquireSkCanvas(); 2946 EXPECT_TRUE(canvas.get() == NULL);
2946 EXPECT_TRUE(canvas == NULL); 2947 raster_buffer->ReleaseSkCanvas(canvas.get());
2947 raster_buffer->ReleaseSkCanvas(); 2948 canvas.clear();
2948 resource_provider->UnmapPixelRasterBuffer(id);
2949 resource_provider->ReleasePixelRasterBuffer(id); 2949 resource_provider->ReleasePixelRasterBuffer(id);
2950 Mock::VerifyAndClearExpectations(context); 2950 Mock::VerifyAndClearExpectations(context);
2951 } 2951 }
2952 2952
2953 TEST_P(ResourceProviderTest, Image_GLTexture) { 2953 TEST_P(ResourceProviderTest, Image_GLTexture) {
2954 // Only for GL textures. 2954 // Only for GL textures.
2955 if (GetParam() != ResourceProvider::GLTexture) 2955 if (GetParam() != ResourceProvider::GLTexture)
2956 return; 2956 return;
2957 scoped_ptr<AllocationTrackingContext3D> context_owned( 2957 scoped_ptr<AllocationTrackingContext3D> context_owned(
2958 new StrictMock<AllocationTrackingContext3D>); 2958 new StrictMock<AllocationTrackingContext3D>);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
3068 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( 3068 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create(
3069 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); 3069 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false));
3070 3070
3071 id = resource_provider->CreateResource( 3071 id = resource_provider->CreateResource(
3072 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); 3072 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
3073 3073
3074 SkBitmap bitmap; 3074 SkBitmap bitmap;
3075 bitmap.allocN32Pixels(size.width(), size.height()); 3075 bitmap.allocN32Pixels(size.width(), size.height());
3076 *(bitmap.getAddr32(0, 0)) = kBadBeef; 3076 *(bitmap.getAddr32(0, 0)) = kBadBeef;
3077 RasterBuffer* raster_buffer = resource_provider->AcquireImageRasterBuffer(id); 3077 RasterBuffer* raster_buffer = resource_provider->AcquireImageRasterBuffer(id);
3078 SkCanvas* canvas = raster_buffer->AcquireSkCanvas(); 3078 skia::RefPtr<SkCanvas> canvas = raster_buffer->AcquireSkCanvas();
3079 ASSERT_TRUE(!!canvas); 3079 ASSERT_TRUE(!!canvas);
3080 canvas->writePixels(bitmap, 0, 0); 3080 canvas->writePixels(bitmap, 0, 0);
3081 raster_buffer->ReleaseSkCanvas(); 3081 raster_buffer->ReleaseSkCanvas(canvas.get());
3082 canvas.clear();
3082 resource_provider->ReleaseImageRasterBuffer(id); 3083 resource_provider->ReleaseImageRasterBuffer(id);
3083 3084
3084 { 3085 {
3085 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); 3086 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id);
3086 const SkBitmap* sk_bitmap = lock.sk_bitmap(); 3087 const SkBitmap* sk_bitmap = lock.sk_bitmap();
3087 EXPECT_EQ(sk_bitmap->width(), size.width()); 3088 EXPECT_EQ(sk_bitmap->width(), size.width());
3088 EXPECT_EQ(sk_bitmap->height(), size.height()); 3089 EXPECT_EQ(sk_bitmap->height(), size.height());
3089 EXPECT_EQ(*sk_bitmap->getAddr32(0, 0), kBadBeef); 3090 EXPECT_EQ(*sk_bitmap->getAddr32(0, 0), kBadBeef);
3090 } 3091 }
3091 3092
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
3197 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false)); 3198 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1, false));
3198 3199
3199 source_id = resource_provider->CreateResource( 3200 source_id = resource_provider->CreateResource(
3200 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); 3201 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
3201 3202
3202 SkBitmap bitmap; 3203 SkBitmap bitmap;
3203 bitmap.allocN32Pixels(size.width(), size.height()); 3204 bitmap.allocN32Pixels(size.width(), size.height());
3204 *(bitmap.getAddr32(0, 0)) = kBadBeef; 3205 *(bitmap.getAddr32(0, 0)) = kBadBeef;
3205 RasterBuffer* raster_buffer = 3206 RasterBuffer* raster_buffer =
3206 resource_provider->AcquireImageRasterBuffer(source_id); 3207 resource_provider->AcquireImageRasterBuffer(source_id);
3207 SkCanvas* canvas = raster_buffer->AcquireSkCanvas(); 3208 skia::RefPtr<SkCanvas> canvas = raster_buffer->AcquireSkCanvas();
3208 ASSERT_TRUE(!!canvas); 3209 ASSERT_TRUE(!!canvas);
3209 canvas->writePixels(bitmap, 0, 0); 3210 canvas->writePixels(bitmap, 0, 0);
3210 raster_buffer->ReleaseSkCanvas(); 3211 raster_buffer->ReleaseSkCanvas(canvas.get());
3212 canvas.clear();
3211 resource_provider->ReleaseImageRasterBuffer(source_id); 3213 resource_provider->ReleaseImageRasterBuffer(source_id);
3212 3214
3213 dest_id = resource_provider->CreateResource( 3215 dest_id = resource_provider->CreateResource(
3214 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format); 3216 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
3215 3217
3216 resource_provider->CopyResource(source_id, dest_id); 3218 resource_provider->CopyResource(source_id, dest_id);
3217 3219
3218 { 3220 {
3219 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), 3221 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(),
3220 dest_id); 3222 dest_id);
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
3415 resource_provider->AllocateForTesting(id); 3417 resource_provider->AllocateForTesting(id);
3416 Mock::VerifyAndClearExpectations(context); 3418 Mock::VerifyAndClearExpectations(context);
3417 3419
3418 DCHECK_EQ(10u, context->PeekTextureId()); 3420 DCHECK_EQ(10u, context->PeekTextureId());
3419 resource_provider->DeleteResource(id); 3421 resource_provider->DeleteResource(id);
3420 } 3422 }
3421 } 3423 }
3422 3424
3423 } // namespace 3425 } // namespace
3424 } // namespace cc 3426 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698