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

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

Issue 234403005: cc: Add CopyResource function to ResourceProvider API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
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 3009 matching lines...) Expand 10 before | Expand all | Expand 10 after
3020 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); 3020 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id);
3021 const SkBitmap* sk_bitmap = lock.sk_bitmap(); 3021 const SkBitmap* sk_bitmap = lock.sk_bitmap();
3022 EXPECT_EQ(sk_bitmap->width(), size.width()); 3022 EXPECT_EQ(sk_bitmap->width(), size.width());
3023 EXPECT_EQ(sk_bitmap->height(), size.height()); 3023 EXPECT_EQ(sk_bitmap->height(), size.height());
3024 EXPECT_EQ(*sk_bitmap->getAddr32(0, 0), kBadBeef); 3024 EXPECT_EQ(*sk_bitmap->getAddr32(0, 0), kBadBeef);
3025 } 3025 }
3026 3026
3027 resource_provider->DeleteResource(id); 3027 resource_provider->DeleteResource(id);
3028 } 3028 }
3029 3029
3030 TEST_P(ResourceProviderTest, CopyResource_GLTexture) {
3031 if (GetParam() != ResourceProvider::GLTexture)
3032 return;
3033 scoped_ptr<AllocationTrackingContext3D> context_owned(
3034 new StrictMock<AllocationTrackingContext3D>);
3035 AllocationTrackingContext3D* context = context_owned.get();
3036
3037 FakeOutputSurfaceClient output_surface_client;
3038 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d(
3039 context_owned.PassAs<TestWebGraphicsContext3D>()));
3040 CHECK(output_surface->BindToClient(&output_surface_client));
piman 2014/04/14 18:39:34 nit: ASSERT_TRUE
reveman 2014/04/14 19:24:09 Done.
3041
3042 const int kWidth = 2;
3043 const int kHeight = 2;
3044 gfx::Size size(kWidth, kHeight);
3045 ResourceFormat format = RGBA_8888;
3046 ResourceProvider::ResourceId source_id = 0;
3047 ResourceProvider::ResourceId dest_id = 0;
3048 const unsigned kSourceTextureId = 123u;
3049 const unsigned kDestTextureId = 321u;
3050 const unsigned kImageId = 234u;
3051
3052 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create(
3053 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1));
3054
3055 source_id = resource_provider->CreateResource(
3056 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
3057
3058 const int kStride = 4;
3059 void* dummy_mapped_buffer_address = NULL;
3060 EXPECT_CALL(*context, createImageCHROMIUM(kWidth, kHeight, GL_RGBA8_OES))
3061 .WillOnce(Return(kImageId))
3062 .RetiresOnSaturation();
3063 EXPECT_CALL(
3064 *context,
3065 getImageParameterivCHROMIUM(kImageId, GL_IMAGE_ROWBYTES_CHROMIUM, _))
3066 .WillOnce(SetArgPointee<2>(kStride))
3067 .RetiresOnSaturation();
3068 EXPECT_CALL(*context, mapImageCHROMIUM(kImageId, GL_READ_WRITE))
3069 .WillOnce(Return(dummy_mapped_buffer_address))
3070 .RetiresOnSaturation();
3071 resource_provider->MapImageRasterBuffer(source_id);
piman 2014/04/14 18:39:34 nit: it could be useful to add a Mock::VerifyAndCl
reveman 2014/04/14 19:24:09 Done.
3072
3073 EXPECT_CALL(*context, unmapImageCHROMIUM(kImageId))
3074 .Times(1)
3075 .RetiresOnSaturation();
3076 resource_provider->UnmapImageRasterBuffer(source_id);
piman 2014/04/14 18:39:34 and here
reveman 2014/04/14 19:24:09 Done.
3077
3078 dest_id = resource_provider->CreateResource(
3079 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
3080
3081 EXPECT_CALL(*context, NextTextureId())
3082 .WillOnce(Return(kDestTextureId))
3083 .RetiresOnSaturation();
3084 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, kDestTextureId))
3085 .Times(1)
3086 .RetiresOnSaturation();
3087 EXPECT_CALL(*context, NextTextureId())
3088 .WillOnce(Return(kSourceTextureId))
3089 .RetiresOnSaturation();
3090 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, kSourceTextureId))
3091 .Times(2)
3092 .RetiresOnSaturation();
3093 EXPECT_CALL(*context, bindTexImage2DCHROMIUM(GL_TEXTURE_2D, kImageId))
3094 .Times(1)
3095 .RetiresOnSaturation();
3096 resource_provider->CopyResource(source_id, dest_id);
piman 2014/04/14 18:39:34 and here
reveman 2014/04/14 19:24:09 Done.
3097
3098 EXPECT_CALL(*context, destroyImageCHROMIUM(kImageId))
3099 .Times(1)
3100 .RetiresOnSaturation();
3101 EXPECT_CALL(*context, RetireTextureId(kSourceTextureId))
3102 .Times(1)
3103 .RetiresOnSaturation();
3104 EXPECT_CALL(*context, RetireTextureId(kDestTextureId))
3105 .Times(1)
3106 .RetiresOnSaturation();
3107 resource_provider->DeleteResource(source_id);
3108 resource_provider->DeleteResource(dest_id);
3109 }
3110
3111 TEST_P(ResourceProviderTest, CopyResource_Bitmap) {
3112 if (GetParam() != ResourceProvider::Bitmap)
3113 return;
3114 FakeOutputSurfaceClient output_surface_client;
3115 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::CreateSoftware(
3116 make_scoped_ptr(new SoftwareOutputDevice)));
3117 CHECK(output_surface->BindToClient(&output_surface_client));
3118
3119 gfx::Size size(1, 1);
3120 ResourceFormat format = RGBA_8888;
3121 ResourceProvider::ResourceId source_id = 0;
3122 ResourceProvider::ResourceId dest_id = 0;
3123 const uint32_t kBadBeef = 0xbadbeef;
3124
3125 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create(
3126 output_surface.get(), shared_bitmap_manager_.get(), 0, false, 1));
3127
3128 source_id = resource_provider->CreateResource(
3129 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
3130
3131 SkBitmap bitmap;
3132 bitmap.allocN32Pixels(size.width(), size.height());
3133 *(bitmap.getAddr32(0, 0)) = kBadBeef;
3134 SkCanvas* canvas = resource_provider->MapImageRasterBuffer(source_id);
3135 ASSERT_TRUE(!!canvas);
3136 canvas->writePixels(bitmap, 0, 0);
3137 resource_provider->UnmapImageRasterBuffer(source_id);
3138
3139 dest_id = resource_provider->CreateResource(
3140 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureUsageAny, format);
3141
3142 resource_provider->CopyResource(source_id, dest_id);
3143
3144 {
3145 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(),
3146 dest_id);
3147 const SkBitmap* sk_bitmap = lock.sk_bitmap();
3148 EXPECT_EQ(sk_bitmap->width(), size.width());
3149 EXPECT_EQ(sk_bitmap->height(), size.height());
3150 EXPECT_EQ(*sk_bitmap->getAddr32(0, 0), kBadBeef);
3151 }
3152
3153 resource_provider->DeleteResource(source_id);
3154 resource_provider->DeleteResource(dest_id);
3155 }
3156
3030 void InitializeGLAndCheck(ContextSharedData* shared_data, 3157 void InitializeGLAndCheck(ContextSharedData* shared_data,
3031 ResourceProvider* resource_provider, 3158 ResourceProvider* resource_provider,
3032 FakeOutputSurface* output_surface) { 3159 FakeOutputSurface* output_surface) {
3033 scoped_ptr<ResourceProviderContext> context_owned = 3160 scoped_ptr<ResourceProviderContext> context_owned =
3034 ResourceProviderContext::Create(shared_data); 3161 ResourceProviderContext::Create(shared_data);
3035 ResourceProviderContext* context = context_owned.get(); 3162 ResourceProviderContext* context = context_owned.get();
3036 3163
3037 scoped_refptr<TestContextProvider> context_provider = 3164 scoped_refptr<TestContextProvider> context_provider =
3038 TestContextProvider::Create( 3165 TestContextProvider::Create(
3039 context_owned.PassAs<TestWebGraphicsContext3D>()); 3166 context_owned.PassAs<TestWebGraphicsContext3D>());
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
3208 resource_provider->AllocateForTesting(id); 3335 resource_provider->AllocateForTesting(id);
3209 Mock::VerifyAndClearExpectations(context); 3336 Mock::VerifyAndClearExpectations(context);
3210 3337
3211 DCHECK_EQ(10u, context->PeekTextureId()); 3338 DCHECK_EQ(10u, context->PeekTextureId());
3212 resource_provider->DeleteResource(id); 3339 resource_provider->DeleteResource(id);
3213 } 3340 }
3214 } 3341 }
3215 3342
3216 } // namespace 3343 } // namespace
3217 } // namespace cc 3344 } // namespace cc
OLDNEW
« cc/resources/resource_provider.cc ('K') | « cc/resources/resource_provider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698