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

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

Issue 12642010: Implement on demand quad rasterization for PicturePiles. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit fixes & adding ResizeResource unit test. Created 7 years, 9 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "cc/base/scoped_ptr_deque.h" 9 #include "cc/base/scoped_ptr_deque.h"
10 #include "cc/base/scoped_ptr_hash_map.h" 10 #include "cc/base/scoped_ptr_hash_map.h"
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 memcpy(pixels, texture->data.get(), TextureSize(size, format)); 260 memcpy(pixels, texture->data.get(), TextureSize(size, format));
261 } 261 }
262 262
263 WGC3Denum GetTextureFilter() { 263 WGC3Denum GetTextureFilter() {
264 DCHECK(current_texture_); 264 DCHECK(current_texture_);
265 Texture* texture = textures_.get(current_texture_); 265 Texture* texture = textures_.get(current_texture_);
266 DCHECK(texture); 266 DCHECK(texture);
267 return texture->filter; 267 return texture->filter;
268 } 268 }
269 269
270 gfx::Size GetCurrentTextureSize() {
271 DCHECK(current_texture_);
272 Texture* texture = textures_.get(current_texture_);
273 DCHECK(texture);
274 return texture->size;
275 }
276
270 int texture_count() { return textures_.size(); } 277 int texture_count() { return textures_.size(); }
271 278
272 protected: 279 protected:
273 ResourceProviderContext(const Attributes& attrs, 280 ResourceProviderContext(const Attributes& attrs,
274 ContextSharedData* shared_data) 281 ContextSharedData* shared_data)
275 : TestWebGraphicsContext3D(attrs), 282 : TestWebGraphicsContext3D(attrs),
276 shared_data_(shared_data), 283 shared_data_(shared_data),
277 current_texture_(0), 284 current_texture_(0),
278 last_waited_sync_point_(0) {} 285 last_waited_sync_point_(0) {}
279 286
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 id = resource_provider->CreateResource( 1143 id = resource_provider->CreateResource(
1137 size, format, ResourceProvider::TextureUsageAny); 1144 size, format, ResourceProvider::TextureUsageAny);
1138 resource_provider->AcquirePixelBuffer(id); 1145 resource_provider->AcquirePixelBuffer(id);
1139 resource_provider->BeginSetPixels(id); 1146 resource_provider->BeginSetPixels(id);
1140 resource_provider->ForceSetPixelsToComplete(id); 1147 resource_provider->ForceSetPixelsToComplete(id);
1141 resource_provider->AbortSetPixels(id); 1148 resource_provider->AbortSetPixels(id);
1142 resource_provider->ReleasePixelBuffer(id); 1149 resource_provider->ReleasePixelBuffer(id);
1143 Mock::VerifyAndClearExpectations(context); 1150 Mock::VerifyAndClearExpectations(context);
1144 } 1151 }
1145 1152
1153 void CheckResourceSize(
1154 ResourceProvider* resource_provider,
1155 ResourceProviderContext* context,
1156 ResourceProvider::ResourceId id,
1157 gfx::Size size) {
1158 switch (resource_provider->GetResourceType(id)) {
1159 case ResourceProvider::GLTexture: {
1160 // Enforce texture allocation.
1161 ResourceProvider::ScopedWriteLockGL lock(resource_provider, id);
1162 EXPECT_EQ(context->GetCurrentTextureSize(), size);
1163 break;
1164 }
1165 case ResourceProvider::Bitmap: {
1166 ResourceProvider::ScopedReadLockSoftware lock(resource_provider, id);
1167 EXPECT_EQ(lock.sk_bitmap()->width(), size.width());
1168 EXPECT_EQ(lock.sk_bitmap()->height(), size.height());
1169
1170 // Ensure bitmap pixels were allocated during resize.
1171 lock.sk_bitmap()->lockPixels();
1172 EXPECT_TRUE(lock.sk_bitmap()->getPixels());
1173 lock.sk_bitmap()->unlockPixels();
1174 break;
1175 }
1176 default:
piman 2013/03/22 20:52:34 nit: no need for default clause.
1177 NOTREACHED();
1178 break;
1179 }
1180 }
1181
1182 TEST_P(ResourceProviderTest, ResizeResource) {
1183 gfx::Size size(1, 2);
1184 ResourceProvider::ResourceId id = resource_provider_->CreateResource(
1185 size,
1186 GL_RGBA,
1187 ResourceProvider::TextureUsageAny);
1188 ExpectNumResources(1);
1189
1190 CheckResourceSize(resource_provider_.get(), context(), id, size);
1191
1192 gfx::Size new_size(3, 4);
1193 resource_provider_->ResizeResource(id, new_size);
1194 ExpectNumResources(1);
1195
1196 CheckResourceSize(resource_provider_.get(), context(), id, new_size);
1197
1198 resource_provider_->DeleteResource(id);
1199 ExpectNumResources(0);
1200 }
1201
1146 INSTANTIATE_TEST_CASE_P( 1202 INSTANTIATE_TEST_CASE_P(
1147 ResourceProviderTests, 1203 ResourceProviderTests,
1148 ResourceProviderTest, 1204 ResourceProviderTest,
1149 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); 1205 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap));
1150 1206
1151 } // namespace 1207 } // namespace
1152 } // namespace cc 1208 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698