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

Side by Side Diff: cc/resource_provider_unittest.cc

Issue 11189043: cc: Rename cc classes and members to match filenames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 "config.h" 5 #include "config.h"
6 6
7 #include "CCResourceProvider.h" 7 #include "CCResourceProvider.h"
8 8
9 #include "CCGraphicsContext.h" 9 #include "CCGraphicsContext.h"
10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread 10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 scoped_ptr<Texture> texture; 258 scoped_ptr<Texture> texture;
259 }; 259 };
260 typedef ScopedPtrDeque<PendingProduceTexture> PendingProduceTextureList; 260 typedef ScopedPtrDeque<PendingProduceTexture> PendingProduceTextureList;
261 ContextSharedData* m_sharedData; 261 ContextSharedData* m_sharedData;
262 WebGLId m_currentTexture; 262 WebGLId m_currentTexture;
263 TextureMap m_textures; 263 TextureMap m_textures;
264 unsigned m_lastWaitedSyncPoint; 264 unsigned m_lastWaitedSyncPoint;
265 PendingProduceTextureList m_pendingProduceTextures; 265 PendingProduceTextureList m_pendingProduceTextures;
266 }; 266 };
267 267
268 class CCResourceProviderTest : public testing::TestWithParam<CCResourceProvider: :ResourceType> { 268 class ResourceProviderTest : public testing::TestWithParam<ResourceProvider::Res ourceType> {
269 public: 269 public:
270 CCResourceProviderTest() 270 ResourceProviderTest()
271 : m_sharedData(ContextSharedData::create()) 271 : m_sharedData(ContextSharedData::create())
272 , m_context(FakeWebCompositorOutputSurface::create(ResourceProviderConte xt::create(m_sharedData.get()).PassAs<WebKit::WebGraphicsContext3D>().PassAs<Web Kit::WebGraphicsContext3D>())) 272 , m_context(FakeWebCompositorOutputSurface::create(ResourceProviderConte xt::create(m_sharedData.get()).PassAs<WebKit::WebGraphicsContext3D>().PassAs<Web Kit::WebGraphicsContext3D>()))
273 , m_resourceProvider(CCResourceProvider::create(m_context.get())) 273 , m_resourceProvider(ResourceProvider::create(m_context.get()))
274 { 274 {
275 m_resourceProvider->setDefaultResourceType(GetParam()); 275 m_resourceProvider->setDefaultResourceType(GetParam());
276 } 276 }
277 277
278 ResourceProviderContext* context() { return static_cast<ResourceProviderCont ext*>(m_context->context3D()); } 278 ResourceProviderContext* context() { return static_cast<ResourceProviderCont ext*>(m_context->context3D()); }
279 279
280 void getResourcePixels(CCResourceProvider::ResourceId id, const IntSize& siz e, WGC3Denum format, uint8_t* pixels) 280 void getResourcePixels(ResourceProvider::ResourceId id, const IntSize& size, WGC3Denum format, uint8_t* pixels)
281 { 281 {
282 if (GetParam() == CCResourceProvider::GLTexture) { 282 if (GetParam() == ResourceProvider::GLTexture) {
283 CCResourceProvider::ScopedReadLockGL lockGL(m_resourceProvider.get() , id); 283 ResourceProvider::ScopedReadLockGL lockGL(m_resourceProvider.get(), id);
284 ASSERT_NE(0U, lockGL.textureId()); 284 ASSERT_NE(0U, lockGL.textureId());
285 context()->bindTexture(GraphicsContext3D::TEXTURE_2D, lockGL.texture Id()); 285 context()->bindTexture(GraphicsContext3D::TEXTURE_2D, lockGL.texture Id());
286 context()->getPixels(size, format, pixels); 286 context()->getPixels(size, format, pixels);
287 } else if (GetParam() == CCResourceProvider::Bitmap) { 287 } else if (GetParam() == ResourceProvider::Bitmap) {
288 CCResourceProvider::ScopedReadLockSoftware lockSoftware(m_resourcePr ovider.get(), id); 288 ResourceProvider::ScopedReadLockSoftware lockSoftware(m_resourceProv ider.get(), id);
289 memcpy(pixels, lockSoftware.skBitmap()->getPixels(), lockSoftware.sk Bitmap()->getSize()); 289 memcpy(pixels, lockSoftware.skBitmap()->getPixels(), lockSoftware.sk Bitmap()->getSize());
290 } 290 }
291 } 291 }
292 292
293 void expectNumResources(int count) 293 void expectNumResources(int count)
294 { 294 {
295 EXPECT_EQ(count, static_cast<int>(m_resourceProvider->numResources())); 295 EXPECT_EQ(count, static_cast<int>(m_resourceProvider->numResources()));
296 if (GetParam() == CCResourceProvider::GLTexture) 296 if (GetParam() == ResourceProvider::GLTexture)
297 EXPECT_EQ(count, context()->textureCount()); 297 EXPECT_EQ(count, context()->textureCount());
298 } 298 }
299 299
300 protected: 300 protected:
301 DebugScopedSetImplThread implThread; 301 DebugScopedSetImplThread implThread;
302 scoped_ptr<ContextSharedData> m_sharedData; 302 scoped_ptr<ContextSharedData> m_sharedData;
303 scoped_ptr<CCGraphicsContext> m_context; 303 scoped_ptr<GraphicsContext> m_context;
304 scoped_ptr<CCResourceProvider> m_resourceProvider; 304 scoped_ptr<ResourceProvider> m_resourceProvider;
305 }; 305 };
306 306
307 TEST_P(CCResourceProviderTest, Basic) 307 TEST_P(ResourceProviderTest, Basic)
308 { 308 {
309 IntSize size(1, 1); 309 IntSize size(1, 1);
310 WGC3Denum format = GraphicsContext3D::RGBA; 310 WGC3Denum format = GraphicsContext3D::RGBA;
311 int pool = 1; 311 int pool = 1;
312 size_t pixelSize = textureSize(size, format); 312 size_t pixelSize = textureSize(size, format);
313 ASSERT_EQ(4U, pixelSize); 313 ASSERT_EQ(4U, pixelSize);
314 314
315 CCResourceProvider::ResourceId id = m_resourceProvider->createResource(pool, size, format, CCResourceProvider::TextureUsageAny); 315 ResourceProvider::ResourceId id = m_resourceProvider->createResource(pool, s ize, format, ResourceProvider::TextureUsageAny);
316 expectNumResources(1); 316 expectNumResources(1);
317 317
318 uint8_t data[4] = {1, 2, 3, 4}; 318 uint8_t data[4] = {1, 2, 3, 4};
319 IntRect rect(IntPoint(), size); 319 IntRect rect(IntPoint(), size);
320 m_resourceProvider->upload(id, data, rect, rect, IntSize()); 320 m_resourceProvider->upload(id, data, rect, rect, IntSize());
321 321
322 uint8_t result[4] = {0}; 322 uint8_t result[4] = {0};
323 getResourcePixels(id, size, format, result); 323 getResourcePixels(id, size, format, result);
324 EXPECT_EQ(0, memcmp(data, result, pixelSize)); 324 EXPECT_EQ(0, memcmp(data, result, pixelSize));
325 325
326 m_resourceProvider->deleteResource(id); 326 m_resourceProvider->deleteResource(id);
327 expectNumResources(0); 327 expectNumResources(0);
328 } 328 }
329 329
330 TEST_P(CCResourceProviderTest, DeleteOwnedResources) 330 TEST_P(ResourceProviderTest, DeleteOwnedResources)
331 { 331 {
332 IntSize size(1, 1); 332 IntSize size(1, 1);
333 WGC3Denum format = GraphicsContext3D::RGBA; 333 WGC3Denum format = GraphicsContext3D::RGBA;
334 int pool = 1; 334 int pool = 1;
335 335
336 const int count = 3; 336 const int count = 3;
337 for (int i = 0; i < count; ++i) 337 for (int i = 0; i < count; ++i)
338 m_resourceProvider->createResource(pool, size, format, CCResourceProvide r::TextureUsageAny); 338 m_resourceProvider->createResource(pool, size, format, ResourceProvider: :TextureUsageAny);
339 expectNumResources(3); 339 expectNumResources(3);
340 340
341 m_resourceProvider->deleteOwnedResources(pool+1); 341 m_resourceProvider->deleteOwnedResources(pool+1);
342 expectNumResources(3); 342 expectNumResources(3);
343 343
344 m_resourceProvider->deleteOwnedResources(pool); 344 m_resourceProvider->deleteOwnedResources(pool);
345 expectNumResources(0); 345 expectNumResources(0);
346 } 346 }
347 347
348 TEST_P(CCResourceProviderTest, Upload) 348 TEST_P(ResourceProviderTest, Upload)
349 { 349 {
350 IntSize size(2, 2); 350 IntSize size(2, 2);
351 WGC3Denum format = GraphicsContext3D::RGBA; 351 WGC3Denum format = GraphicsContext3D::RGBA;
352 int pool = 1; 352 int pool = 1;
353 size_t pixelSize = textureSize(size, format); 353 size_t pixelSize = textureSize(size, format);
354 ASSERT_EQ(16U, pixelSize); 354 ASSERT_EQ(16U, pixelSize);
355 355
356 CCResourceProvider::ResourceId id = m_resourceProvider->createResource(pool, size, format, CCResourceProvider::TextureUsageAny); 356 ResourceProvider::ResourceId id = m_resourceProvider->createResource(pool, s ize, format, ResourceProvider::TextureUsageAny);
357 357
358 uint8_t image[16] = {0}; 358 uint8_t image[16] = {0};
359 IntRect imageRect(IntPoint(), size); 359 IntRect imageRect(IntPoint(), size);
360 m_resourceProvider->upload(id, image, imageRect, imageRect, IntSize()); 360 m_resourceProvider->upload(id, image, imageRect, imageRect, IntSize());
361 361
362 for (uint8_t i = 0 ; i < pixelSize; ++i) 362 for (uint8_t i = 0 ; i < pixelSize; ++i)
363 image[i] = i; 363 image[i] = i;
364 364
365 uint8_t result[16] = {0}; 365 uint8_t result[16] = {0};
366 { 366 {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 uint8_t expected[16] = {0, 1, 2, 3, 0, 1, 2, 3, 402 uint8_t expected[16] = {0, 1, 2, 3, 0, 1, 2, 3,
403 4, 5, 6, 7, 0, 1, 2, 3}; 403 4, 5, 6, 7, 0, 1, 2, 3};
404 getResourcePixels(id, size, format, result); 404 getResourcePixels(id, size, format, result);
405 EXPECT_EQ(0, memcmp(expected, result, pixelSize)); 405 EXPECT_EQ(0, memcmp(expected, result, pixelSize));
406 } 406 }
407 407
408 408
409 m_resourceProvider->deleteResource(id); 409 m_resourceProvider->deleteResource(id);
410 } 410 }
411 411
412 TEST_P(CCResourceProviderTest, TransferResources) 412 TEST_P(ResourceProviderTest, TransferResources)
413 { 413 {
414 // Resource transfer is only supported with GL textures for now. 414 // Resource transfer is only supported with GL textures for now.
415 if (GetParam() != CCResourceProvider::GLTexture) 415 if (GetParam() != ResourceProvider::GLTexture)
416 return; 416 return;
417 417
418 scoped_ptr<CCGraphicsContext> childContext(FakeWebCompositorOutputSurface::c reate(ResourceProviderContext::create(m_sharedData.get()).PassAs<WebKit::WebGrap hicsContext3D>())); 418 scoped_ptr<GraphicsContext> childContext(FakeWebCompositorOutputSurface::cre ate(ResourceProviderContext::create(m_sharedData.get()).PassAs<WebKit::WebGraphi csContext3D>()));
419 scoped_ptr<CCResourceProvider> childResourceProvider(CCResourceProvider::cre ate(childContext.get())); 419 scoped_ptr<ResourceProvider> childResourceProvider(ResourceProvider::create( childContext.get()));
420 420
421 IntSize size(1, 1); 421 IntSize size(1, 1);
422 WGC3Denum format = GraphicsContext3D::RGBA; 422 WGC3Denum format = GraphicsContext3D::RGBA;
423 int pool = 1; 423 int pool = 1;
424 size_t pixelSize = textureSize(size, format); 424 size_t pixelSize = textureSize(size, format);
425 ASSERT_EQ(4U, pixelSize); 425 ASSERT_EQ(4U, pixelSize);
426 426
427 CCResourceProvider::ResourceId id1 = childResourceProvider->createResource(p ool, size, format, CCResourceProvider::TextureUsageAny); 427 ResourceProvider::ResourceId id1 = childResourceProvider->createResource(poo l, size, format, ResourceProvider::TextureUsageAny);
428 uint8_t data1[4] = {1, 2, 3, 4}; 428 uint8_t data1[4] = {1, 2, 3, 4};
429 IntRect rect(IntPoint(), size); 429 IntRect rect(IntPoint(), size);
430 childResourceProvider->upload(id1, data1, rect, rect, IntSize()); 430 childResourceProvider->upload(id1, data1, rect, rect, IntSize());
431 431
432 CCResourceProvider::ResourceId id2 = childResourceProvider->createResource(p ool, size, format, CCResourceProvider::TextureUsageAny); 432 ResourceProvider::ResourceId id2 = childResourceProvider->createResource(poo l, size, format, ResourceProvider::TextureUsageAny);
433 uint8_t data2[4] = {5, 5, 5, 5}; 433 uint8_t data2[4] = {5, 5, 5, 5};
434 childResourceProvider->upload(id2, data2, rect, rect, IntSize()); 434 childResourceProvider->upload(id2, data2, rect, rect, IntSize());
435 435
436 int childPool = 2; 436 int childPool = 2;
437 int childId = m_resourceProvider->createChild(childPool); 437 int childId = m_resourceProvider->createChild(childPool);
438 438
439 { 439 {
440 // Transfer some resources to the parent. 440 // Transfer some resources to the parent.
441 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; 441 ResourceProvider::ResourceIdArray resourceIdsToTransfer;
442 resourceIdsToTransfer.push_back(id1); 442 resourceIdsToTransfer.push_back(id1);
443 resourceIdsToTransfer.push_back(id2); 443 resourceIdsToTransfer.push_back(id2);
444 CCResourceProvider::TransferableResourceList list = childResourceProvide r->prepareSendToParent(resourceIdsToTransfer); 444 ResourceProvider::TransferableResourceList list = childResourceProvider- >prepareSendToParent(resourceIdsToTransfer);
445 EXPECT_NE(0u, list.syncPoint); 445 EXPECT_NE(0u, list.syncPoint);
446 EXPECT_EQ(2u, list.resources.size()); 446 EXPECT_EQ(2u, list.resources.size());
447 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); 447 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1));
448 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); 448 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2));
449 m_resourceProvider->receiveFromChild(childId, list); 449 m_resourceProvider->receiveFromChild(childId, list);
450 } 450 }
451 451
452 EXPECT_EQ(2u, m_resourceProvider->numResources()); 452 EXPECT_EQ(2u, m_resourceProvider->numResources());
453 EXPECT_EQ(2u, m_resourceProvider->mailboxCount()); 453 EXPECT_EQ(2u, m_resourceProvider->mailboxCount());
454 CCResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChild ToParentMap(childId); 454 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChildTo ParentMap(childId);
455 CCResourceProvider::ResourceId mappedId1 = resourceMap[id1]; 455 ResourceProvider::ResourceId mappedId1 = resourceMap[id1];
456 CCResourceProvider::ResourceId mappedId2 = resourceMap[id2]; 456 ResourceProvider::ResourceId mappedId2 = resourceMap[id2];
457 EXPECT_NE(0u, mappedId1); 457 EXPECT_NE(0u, mappedId1);
458 EXPECT_NE(0u, mappedId2); 458 EXPECT_NE(0u, mappedId2);
459 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1)); 459 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1));
460 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2)); 460 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2));
461 461
462 uint8_t result[4] = {0}; 462 uint8_t result[4] = {0};
463 getResourcePixels(mappedId1, size, format, result); 463 getResourcePixels(mappedId1, size, format, result);
464 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); 464 EXPECT_EQ(0, memcmp(data1, result, pixelSize));
465 465
466 getResourcePixels(mappedId2, size, format, result); 466 getResourcePixels(mappedId2, size, format, result);
467 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); 467 EXPECT_EQ(0, memcmp(data2, result, pixelSize));
468 468
469 { 469 {
470 // Check that transfering again the same resource from the child to the 470 // Check that transfering again the same resource from the child to the
471 // parent is a noop. 471 // parent is a noop.
472 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; 472 ResourceProvider::ResourceIdArray resourceIdsToTransfer;
473 resourceIdsToTransfer.push_back(id1); 473 resourceIdsToTransfer.push_back(id1);
474 CCResourceProvider::TransferableResourceList list = childResourceProvide r->prepareSendToParent(resourceIdsToTransfer); 474 ResourceProvider::TransferableResourceList list = childResourceProvider- >prepareSendToParent(resourceIdsToTransfer);
475 EXPECT_EQ(0u, list.syncPoint); 475 EXPECT_EQ(0u, list.syncPoint);
476 EXPECT_EQ(0u, list.resources.size()); 476 EXPECT_EQ(0u, list.resources.size());
477 } 477 }
478 478
479 { 479 {
480 // Transfer resources back from the parent to the child. 480 // Transfer resources back from the parent to the child.
481 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; 481 ResourceProvider::ResourceIdArray resourceIdsToTransfer;
482 resourceIdsToTransfer.push_back(mappedId1); 482 resourceIdsToTransfer.push_back(mappedId1);
483 resourceIdsToTransfer.push_back(mappedId2); 483 resourceIdsToTransfer.push_back(mappedId2);
484 CCResourceProvider::TransferableResourceList list = m_resourceProvider-> prepareSendToChild(childId, resourceIdsToTransfer); 484 ResourceProvider::TransferableResourceList list = m_resourceProvider->pr epareSendToChild(childId, resourceIdsToTransfer);
485 EXPECT_NE(0u, list.syncPoint); 485 EXPECT_NE(0u, list.syncPoint);
486 EXPECT_EQ(2u, list.resources.size()); 486 EXPECT_EQ(2u, list.resources.size());
487 childResourceProvider->receiveFromParent(list); 487 childResourceProvider->receiveFromParent(list);
488 } 488 }
489 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); 489 EXPECT_EQ(0u, m_resourceProvider->mailboxCount());
490 EXPECT_EQ(2u, childResourceProvider->mailboxCount()); 490 EXPECT_EQ(2u, childResourceProvider->mailboxCount());
491 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1)); 491 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1));
492 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2)); 492 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2));
493 493
494 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex t*>(childContext->context3D()); 494 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex t*>(childContext->context3D());
495 { 495 {
496 CCResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), i d1); 496 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id1 );
497 ASSERT_NE(0U, lock.textureId()); 497 ASSERT_NE(0U, lock.textureId());
498 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI d()); 498 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI d());
499 childContext3D->getPixels(size, format, result); 499 childContext3D->getPixels(size, format, result);
500 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); 500 EXPECT_EQ(0, memcmp(data1, result, pixelSize));
501 } 501 }
502 { 502 {
503 CCResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), i d2); 503 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id2 );
504 ASSERT_NE(0U, lock.textureId()); 504 ASSERT_NE(0U, lock.textureId());
505 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI d()); 505 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI d());
506 childContext3D->getPixels(size, format, result); 506 childContext3D->getPixels(size, format, result);
507 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); 507 EXPECT_EQ(0, memcmp(data2, result, pixelSize));
508 } 508 }
509 509
510 { 510 {
511 // Transfer resources to the parent again. 511 // Transfer resources to the parent again.
512 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; 512 ResourceProvider::ResourceIdArray resourceIdsToTransfer;
513 resourceIdsToTransfer.push_back(id1); 513 resourceIdsToTransfer.push_back(id1);
514 resourceIdsToTransfer.push_back(id2); 514 resourceIdsToTransfer.push_back(id2);
515 CCResourceProvider::TransferableResourceList list = childResourceProvide r->prepareSendToParent(resourceIdsToTransfer); 515 ResourceProvider::TransferableResourceList list = childResourceProvider- >prepareSendToParent(resourceIdsToTransfer);
516 EXPECT_NE(0u, list.syncPoint); 516 EXPECT_NE(0u, list.syncPoint);
517 EXPECT_EQ(2u, list.resources.size()); 517 EXPECT_EQ(2u, list.resources.size());
518 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); 518 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1));
519 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); 519 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2));
520 m_resourceProvider->receiveFromChild(childId, list); 520 m_resourceProvider->receiveFromChild(childId, list);
521 } 521 }
522 522
523 EXPECT_EQ(2u, m_resourceProvider->numResources()); 523 EXPECT_EQ(2u, m_resourceProvider->numResources());
524 m_resourceProvider->destroyChild(childId); 524 m_resourceProvider->destroyChild(childId);
525 EXPECT_EQ(0u, m_resourceProvider->numResources()); 525 EXPECT_EQ(0u, m_resourceProvider->numResources());
526 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); 526 EXPECT_EQ(0u, m_resourceProvider->mailboxCount());
527 } 527 }
528 528
529 TEST_P(CCResourceProviderTest, DeleteTransferredResources) 529 TEST_P(ResourceProviderTest, DeleteTransferredResources)
530 { 530 {
531 // Resource transfer is only supported with GL textures for now. 531 // Resource transfer is only supported with GL textures for now.
532 if (GetParam() != CCResourceProvider::GLTexture) 532 if (GetParam() != ResourceProvider::GLTexture)
533 return; 533 return;
534 534
535 scoped_ptr<CCGraphicsContext> childContext(FakeWebCompositorOutputSurface::c reate(ResourceProviderContext::create(m_sharedData.get()).PassAs<WebKit::WebGrap hicsContext3D>())); 535 scoped_ptr<GraphicsContext> childContext(FakeWebCompositorOutputSurface::cre ate(ResourceProviderContext::create(m_sharedData.get()).PassAs<WebKit::WebGraphi csContext3D>()));
536 scoped_ptr<CCResourceProvider> childResourceProvider(CCResourceProvider::cre ate(childContext.get())); 536 scoped_ptr<ResourceProvider> childResourceProvider(ResourceProvider::create( childContext.get()));
537 537
538 IntSize size(1, 1); 538 IntSize size(1, 1);
539 WGC3Denum format = GraphicsContext3D::RGBA; 539 WGC3Denum format = GraphicsContext3D::RGBA;
540 int pool = 1; 540 int pool = 1;
541 size_t pixelSize = textureSize(size, format); 541 size_t pixelSize = textureSize(size, format);
542 ASSERT_EQ(4U, pixelSize); 542 ASSERT_EQ(4U, pixelSize);
543 543
544 CCResourceProvider::ResourceId id = childResourceProvider->createResource(po ol, size, format, CCResourceProvider::TextureUsageAny); 544 ResourceProvider::ResourceId id = childResourceProvider->createResource(pool , size, format, ResourceProvider::TextureUsageAny);
545 uint8_t data[4] = {1, 2, 3, 4}; 545 uint8_t data[4] = {1, 2, 3, 4};
546 IntRect rect(IntPoint(), size); 546 IntRect rect(IntPoint(), size);
547 childResourceProvider->upload(id, data, rect, rect, IntSize()); 547 childResourceProvider->upload(id, data, rect, rect, IntSize());
548 548
549 int childPool = 2; 549 int childPool = 2;
550 int childId = m_resourceProvider->createChild(childPool); 550 int childId = m_resourceProvider->createChild(childPool);
551 551
552 { 552 {
553 // Transfer some resource to the parent. 553 // Transfer some resource to the parent.
554 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; 554 ResourceProvider::ResourceIdArray resourceIdsToTransfer;
555 resourceIdsToTransfer.push_back(id); 555 resourceIdsToTransfer.push_back(id);
556 CCResourceProvider::TransferableResourceList list = childResourceProvide r->prepareSendToParent(resourceIdsToTransfer); 556 ResourceProvider::TransferableResourceList list = childResourceProvider- >prepareSendToParent(resourceIdsToTransfer);
557 EXPECT_NE(0u, list.syncPoint); 557 EXPECT_NE(0u, list.syncPoint);
558 EXPECT_EQ(1u, list.resources.size()); 558 EXPECT_EQ(1u, list.resources.size());
559 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id)); 559 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id));
560 m_resourceProvider->receiveFromChild(childId, list); 560 m_resourceProvider->receiveFromChild(childId, list);
561 } 561 }
562 562
563 // Delete textures in the child, while they are transfered. 563 // Delete textures in the child, while they are transfered.
564 childResourceProvider->deleteResource(id); 564 childResourceProvider->deleteResource(id);
565 EXPECT_EQ(1u, childResourceProvider->numResources()); 565 EXPECT_EQ(1u, childResourceProvider->numResources());
566 566
567 { 567 {
568 // Transfer resources back from the parent to the child. 568 // Transfer resources back from the parent to the child.
569 CCResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getC hildToParentMap(childId); 569 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChi ldToParentMap(childId);
570 CCResourceProvider::ResourceId mappedId = resourceMap[id]; 570 ResourceProvider::ResourceId mappedId = resourceMap[id];
571 EXPECT_NE(0u, mappedId); 571 EXPECT_NE(0u, mappedId);
572 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; 572 ResourceProvider::ResourceIdArray resourceIdsToTransfer;
573 resourceIdsToTransfer.push_back(mappedId); 573 resourceIdsToTransfer.push_back(mappedId);
574 CCResourceProvider::TransferableResourceList list = m_resourceProvider-> prepareSendToChild(childId, resourceIdsToTransfer); 574 ResourceProvider::TransferableResourceList list = m_resourceProvider->pr epareSendToChild(childId, resourceIdsToTransfer);
575 EXPECT_NE(0u, list.syncPoint); 575 EXPECT_NE(0u, list.syncPoint);
576 EXPECT_EQ(1u, list.resources.size()); 576 EXPECT_EQ(1u, list.resources.size());
577 childResourceProvider->receiveFromParent(list); 577 childResourceProvider->receiveFromParent(list);
578 } 578 }
579 EXPECT_EQ(0u, childResourceProvider->numResources()); 579 EXPECT_EQ(0u, childResourceProvider->numResources());
580 } 580 }
581 581
582 INSTANTIATE_TEST_CASE_P(CCResourceProviderTests, 582 INSTANTIATE_TEST_CASE_P(ResourceProviderTests,
583 CCResourceProviderTest, 583 ResourceProviderTest,
584 ::testing::Values(CCResourceProvider::GLTexture, 584 ::testing::Values(ResourceProvider::GLTexture,
585 CCResourceProvider::Bitmap)); 585 ResourceProvider::Bitmap));
586 586
587 } // namespace 587 } // namespace
OLDNEW
« cc/active_animation.h ('K') | « cc/resource_provider.cc ('k') | cc/scheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698