OLD | NEW |
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 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 childResourceProvider->upload(id2, data2, rect, rect, IntSize()); | 435 childResourceProvider->upload(id2, data2, rect, rect, IntSize()); |
436 | 436 |
437 int childPool = 2; | 437 int childPool = 2; |
438 int childId = m_resourceProvider->createChild(childPool); | 438 int childId = m_resourceProvider->createChild(childPool); |
439 | 439 |
440 { | 440 { |
441 // Transfer some resources to the parent. | 441 // Transfer some resources to the parent. |
442 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; | 442 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; |
443 resourceIdsToTransfer.append(id1); | 443 resourceIdsToTransfer.append(id1); |
444 resourceIdsToTransfer.append(id2); | 444 resourceIdsToTransfer.append(id2); |
445 CCResourceProvider::TransferableResourceList list = childResourceProvide
r->prepareSendToParent(resourceIdsToTransfer); | 445 CCResourceProvider::TransferableResourceList list; |
446 EXPECT_NE(0u, list.syncPoint); | 446 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 447 EXPECT_NE(0u, list.sync_point); |
447 EXPECT_EQ(2u, list.resources.size()); | 448 EXPECT_EQ(2u, list.resources.size()); |
448 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); | 449 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); |
449 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); | 450 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); |
450 m_resourceProvider->receiveFromChild(childId, list); | 451 m_resourceProvider->receiveFromChild(childId, list); |
451 } | 452 } |
452 | 453 |
453 EXPECT_EQ(2u, m_resourceProvider->numResources()); | 454 EXPECT_EQ(2u, m_resourceProvider->numResources()); |
454 EXPECT_EQ(2u, m_resourceProvider->mailboxCount()); | 455 EXPECT_EQ(2u, m_resourceProvider->mailboxCount()); |
455 CCResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChild
ToParentMap(childId); | 456 CCResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChild
ToParentMap(childId); |
456 CCResourceProvider::ResourceId mappedId1 = resourceMap.get(id1); | 457 CCResourceProvider::ResourceId mappedId1 = resourceMap.get(id1); |
457 CCResourceProvider::ResourceId mappedId2 = resourceMap.get(id2); | 458 CCResourceProvider::ResourceId mappedId2 = resourceMap.get(id2); |
458 EXPECT_NE(0u, mappedId1); | 459 EXPECT_NE(0u, mappedId1); |
459 EXPECT_NE(0u, mappedId2); | 460 EXPECT_NE(0u, mappedId2); |
460 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1)); | 461 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1)); |
461 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2)); | 462 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2)); |
462 | 463 |
463 uint8_t result[4] = {0}; | 464 uint8_t result[4] = {0}; |
464 getResourcePixels(mappedId1, size, format, result); | 465 getResourcePixels(mappedId1, size, format, result); |
465 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); | 466 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); |
466 | 467 |
467 getResourcePixels(mappedId2, size, format, result); | 468 getResourcePixels(mappedId2, size, format, result); |
468 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); | 469 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); |
469 | 470 |
470 { | 471 { |
471 // Check that transfering again the same resource from the child to the | 472 // Check that transfering again the same resource from the child to the |
472 // parent is a noop. | 473 // parent is a noop. |
473 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; | 474 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; |
474 resourceIdsToTransfer.append(id1); | 475 resourceIdsToTransfer.append(id1); |
475 CCResourceProvider::TransferableResourceList list = childResourceProvide
r->prepareSendToParent(resourceIdsToTransfer); | 476 CCResourceProvider::TransferableResourceList list; |
476 EXPECT_EQ(0u, list.syncPoint); | 477 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 478 EXPECT_EQ(0u, list.sync_point); |
477 EXPECT_EQ(0u, list.resources.size()); | 479 EXPECT_EQ(0u, list.resources.size()); |
478 } | 480 } |
479 | 481 |
480 { | 482 { |
481 // Transfer resources back from the parent to the child. | 483 // Transfer resources back from the parent to the child. |
482 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; | 484 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; |
483 resourceIdsToTransfer.append(mappedId1); | 485 resourceIdsToTransfer.append(mappedId1); |
484 resourceIdsToTransfer.append(mappedId2); | 486 resourceIdsToTransfer.append(mappedId2); |
485 CCResourceProvider::TransferableResourceList list = m_resourceProvider->
prepareSendToChild(childId, resourceIdsToTransfer); | 487 CCResourceProvider::TransferableResourceList list; |
486 EXPECT_NE(0u, list.syncPoint); | 488 m_resourceProvider->prepareSendToChild(childId, resourceIdsToTransfer, &
list); |
| 489 EXPECT_NE(0u, list.sync_point); |
487 EXPECT_EQ(2u, list.resources.size()); | 490 EXPECT_EQ(2u, list.resources.size()); |
488 childResourceProvider->receiveFromParent(list); | 491 childResourceProvider->receiveFromParent(list); |
489 } | 492 } |
490 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); | 493 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); |
491 EXPECT_EQ(2u, childResourceProvider->mailboxCount()); | 494 EXPECT_EQ(2u, childResourceProvider->mailboxCount()); |
492 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1)); | 495 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1)); |
493 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2)); | 496 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2)); |
494 | 497 |
495 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex
t*>(childContext->context3D()); | 498 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex
t*>(childContext->context3D()); |
496 { | 499 { |
497 CCResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), i
d1); | 500 CCResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), i
d1); |
498 ASSERT_NE(0U, lock.textureId()); | 501 ASSERT_NE(0U, lock.textureId()); |
499 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI
d()); | 502 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI
d()); |
500 childContext3D->getPixels(size, format, result); | 503 childContext3D->getPixels(size, format, result); |
501 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); | 504 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); |
502 } | 505 } |
503 { | 506 { |
504 CCResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), i
d2); | 507 CCResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), i
d2); |
505 ASSERT_NE(0U, lock.textureId()); | 508 ASSERT_NE(0U, lock.textureId()); |
506 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI
d()); | 509 childContext3D->bindTexture(GraphicsContext3D::TEXTURE_2D, lock.textureI
d()); |
507 childContext3D->getPixels(size, format, result); | 510 childContext3D->getPixels(size, format, result); |
508 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); | 511 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); |
509 } | 512 } |
510 | 513 |
511 { | 514 { |
512 // Transfer resources to the parent again. | 515 // Transfer resources to the parent again. |
513 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; | 516 CCResourceProvider::ResourceIdArray resourceIdsToTransfer; |
514 resourceIdsToTransfer.append(id1); | 517 resourceIdsToTransfer.append(id1); |
515 resourceIdsToTransfer.append(id2); | 518 resourceIdsToTransfer.append(id2); |
516 CCResourceProvider::TransferableResourceList list = childResourceProvide
r->prepareSendToParent(resourceIdsToTransfer); | 519 CCResourceProvider::TransferableResourceList list; |
517 EXPECT_NE(0u, list.syncPoint); | 520 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 521 EXPECT_NE(0u, list.sync_point); |
518 EXPECT_EQ(2u, list.resources.size()); | 522 EXPECT_EQ(2u, list.resources.size()); |
519 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); | 523 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); |
520 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); | 524 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); |
521 m_resourceProvider->receiveFromChild(childId, list); | 525 m_resourceProvider->receiveFromChild(childId, list); |
522 } | 526 } |
523 | 527 |
524 EXPECT_EQ(2u, m_resourceProvider->numResources()); | 528 EXPECT_EQ(2u, m_resourceProvider->numResources()); |
525 m_resourceProvider->destroyChild(childId); | 529 m_resourceProvider->destroyChild(childId); |
526 EXPECT_EQ(0u, m_resourceProvider->numResources()); | 530 EXPECT_EQ(0u, m_resourceProvider->numResources()); |
527 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); | 531 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); |
528 } | 532 } |
529 | 533 |
530 TEST_P(CCResourceProviderTest, DeleteTransferredResources) | 534 TEST_P(CCResourceProviderTest, DeleteTransferedResources) |
531 { | 535 { |
532 // Resource transfer is only supported with GL textures for now. | 536 // Resource transfer is only supported with GL textures for now. |
533 if (GetParam() != CCResourceProvider::GLTexture) | 537 if (GetParam() != CCResourceProvider::GLTexture) |
534 return; | 538 return; |
535 | 539 |
536 scoped_ptr<CCGraphicsContext> childContext(FakeWebCompositorOutputSurface::c
reate(ResourceProviderContext::create(m_sharedData.get()))); | 540 scoped_ptr<CCGraphicsContext> childContext(FakeWebCompositorOutputSurface::c
reate(ResourceProviderContext::create(m_sharedData.get()))); |
537 OwnPtr<CCResourceProvider> childResourceProvider(CCResourceProvider::create(
childContext.get())); | 541 OwnPtr<CCResourceProvider> childResourceProvider(CCResourceProvider::create(
childContext.get())); |
538 | 542 |
539 IntSize size(1, 1); | 543 IntSize size(1, 1); |
540 WGC3Denum format = GraphicsContext3D::RGBA; | 544 WGC3Denum format = GraphicsContext3D::RGBA; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 } | 583 } |
580 EXPECT_EQ(0u, childResourceProvider->numResources()); | 584 EXPECT_EQ(0u, childResourceProvider->numResources()); |
581 } | 585 } |
582 | 586 |
583 INSTANTIATE_TEST_CASE_P(CCResourceProviderTests, | 587 INSTANTIATE_TEST_CASE_P(CCResourceProviderTests, |
584 CCResourceProviderTest, | 588 CCResourceProviderTest, |
585 ::testing::Values(CCResourceProvider::GLTexture, | 589 ::testing::Values(CCResourceProvider::GLTexture, |
586 CCResourceProvider::Bitmap)); | 590 CCResourceProvider::Bitmap)); |
587 | 591 |
588 } // namespace | 592 } // namespace |
OLD | NEW |