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

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: Make RasterBuffer the public interface used by raster tasks. 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 934 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698