| 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 "cc/resource_provider.h" | 5 #include "cc/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/output_surface.h" | 9 #include "cc/output_surface.h" |
| 10 #include "cc/scoped_ptr_deque.h" | 10 #include "cc/scoped_ptr_deque.h" |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 uint8_t data2[4] = {5, 5, 5, 5}; | 422 uint8_t data2[4] = {5, 5, 5, 5}; |
| 423 childResourceProvider->setPixels(id2, data2, rect, rect, gfx::Vector2d()); | 423 childResourceProvider->setPixels(id2, data2, rect, rect, gfx::Vector2d()); |
| 424 | 424 |
| 425 int childId = m_resourceProvider->createChild(); | 425 int childId = m_resourceProvider->createChild(); |
| 426 | 426 |
| 427 { | 427 { |
| 428 // Transfer some resources to the parent. | 428 // Transfer some resources to the parent. |
| 429 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 429 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 430 resourceIdsToTransfer.push_back(id1); | 430 resourceIdsToTransfer.push_back(id1); |
| 431 resourceIdsToTransfer.push_back(id2); | 431 resourceIdsToTransfer.push_back(id2); |
| 432 TransferableResourceList list; | 432 TransferableResourceArray list; |
| 433 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; | 433 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 434 EXPECT_NE(0u, list.sync_point); | 434 ASSERT_EQ(2u, list.size()); |
| 435 EXPECT_EQ(2u, list.resources.size()); | 435 EXPECT_NE(0u, list[0].sync_point); |
| 436 EXPECT_NE(0u, list[1].sync_point); |
| 436 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); | 437 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); |
| 437 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); | 438 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); |
| 438 m_resourceProvider->receiveFromChild(childId, list); | 439 m_resourceProvider->receiveFromChild(childId, list); |
| 439 } | 440 } |
| 440 | 441 |
| 441 EXPECT_EQ(2u, m_resourceProvider->numResources()); | 442 EXPECT_EQ(2u, m_resourceProvider->numResources()); |
| 442 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChildTo
ParentMap(childId); | 443 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChildTo
ParentMap(childId); |
| 443 ResourceProvider::ResourceId mappedId1 = resourceMap[id1]; | 444 ResourceProvider::ResourceId mappedId1 = resourceMap[id1]; |
| 444 ResourceProvider::ResourceId mappedId2 = resourceMap[id2]; | 445 ResourceProvider::ResourceId mappedId2 = resourceMap[id2]; |
| 445 EXPECT_NE(0u, mappedId1); | 446 EXPECT_NE(0u, mappedId1); |
| 446 EXPECT_NE(0u, mappedId2); | 447 EXPECT_NE(0u, mappedId2); |
| 447 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1)); | 448 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1)); |
| 448 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2)); | 449 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2)); |
| 449 | 450 |
| 450 uint8_t result[4] = {0}; | 451 uint8_t result[4] = {0}; |
| 451 getResourcePixels(mappedId1, size, format, result); | 452 getResourcePixels(mappedId1, size, format, result); |
| 452 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); | 453 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); |
| 453 | 454 |
| 454 getResourcePixels(mappedId2, size, format, result); | 455 getResourcePixels(mappedId2, size, format, result); |
| 455 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); | 456 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); |
| 456 | 457 |
| 457 { | 458 { |
| 458 // Check that transfering again the same resource from the child to the | 459 // Check that transfering again the same resource from the child to the |
| 459 // parent is a noop. | 460 // parent is a noop. |
| 460 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 461 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 461 resourceIdsToTransfer.push_back(id1); | 462 resourceIdsToTransfer.push_back(id1); |
| 462 TransferableResourceList list; | 463 TransferableResourceArray list; |
| 463 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; | 464 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 464 EXPECT_EQ(0u, list.sync_point); | 465 EXPECT_EQ(0u, list.size()); |
| 465 EXPECT_EQ(0u, list.resources.size()); | |
| 466 } | 466 } |
| 467 | 467 |
| 468 { | 468 { |
| 469 // Transfer resources back from the parent to the child. | 469 // Transfer resources back from the parent to the child. |
| 470 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 470 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 471 resourceIdsToTransfer.push_back(mappedId1); | 471 resourceIdsToTransfer.push_back(mappedId1); |
| 472 resourceIdsToTransfer.push_back(mappedId2); | 472 resourceIdsToTransfer.push_back(mappedId2); |
| 473 TransferableResourceList list; | 473 TransferableResourceArray list; |
| 474 m_resourceProvider->prepareSendToChild(childId, resourceIdsToTransfer, &
list); | 474 m_resourceProvider->prepareSendToChild(childId, resourceIdsToTransfer, &
list); |
| 475 EXPECT_NE(0u, list.sync_point); | 475 ASSERT_EQ(2u, list.size()); |
| 476 EXPECT_EQ(2u, list.resources.size()); | 476 EXPECT_NE(0u, list[0].sync_point); |
| 477 EXPECT_NE(0u, list[1].sync_point); |
| 477 childResourceProvider->receiveFromParent(list); | 478 childResourceProvider->receiveFromParent(list); |
| 478 } | 479 } |
| 479 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1)); | 480 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1)); |
| 480 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2)); | 481 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2)); |
| 481 | 482 |
| 482 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex
t*>(childOutputSurface->context3d()); | 483 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex
t*>(childOutputSurface->context3d()); |
| 483 { | 484 { |
| 484 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id1
); | 485 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id1
); |
| 485 ASSERT_NE(0U, lock.textureId()); | 486 ASSERT_NE(0U, lock.textureId()); |
| 486 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); | 487 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); |
| 487 childContext3D->getPixels(size, format, result); | 488 childContext3D->getPixels(size, format, result); |
| 488 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); | 489 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); |
| 489 } | 490 } |
| 490 { | 491 { |
| 491 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id2
); | 492 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id2
); |
| 492 ASSERT_NE(0U, lock.textureId()); | 493 ASSERT_NE(0U, lock.textureId()); |
| 493 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); | 494 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); |
| 494 childContext3D->getPixels(size, format, result); | 495 childContext3D->getPixels(size, format, result); |
| 495 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); | 496 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); |
| 496 } | 497 } |
| 497 | 498 |
| 498 { | 499 { |
| 499 // Transfer resources to the parent again. | 500 // Transfer resources to the parent again. |
| 500 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 501 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 501 resourceIdsToTransfer.push_back(id1); | 502 resourceIdsToTransfer.push_back(id1); |
| 502 resourceIdsToTransfer.push_back(id2); | 503 resourceIdsToTransfer.push_back(id2); |
| 503 TransferableResourceList list; | 504 TransferableResourceArray list; |
| 504 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; | 505 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 505 EXPECT_NE(0u, list.sync_point); | 506 ASSERT_EQ(2u, list.size()); |
| 506 EXPECT_EQ(2u, list.resources.size()); | 507 EXPECT_NE(0u, list[0].sync_point); |
| 508 EXPECT_NE(0u, list[1].sync_point); |
| 507 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); | 509 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); |
| 508 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); | 510 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); |
| 509 m_resourceProvider->receiveFromChild(childId, list); | 511 m_resourceProvider->receiveFromChild(childId, list); |
| 510 } | 512 } |
| 511 | 513 |
| 512 EXPECT_EQ(2u, m_resourceProvider->numResources()); | 514 EXPECT_EQ(2u, m_resourceProvider->numResources()); |
| 513 m_resourceProvider->destroyChild(childId); | 515 m_resourceProvider->destroyChild(childId); |
| 514 EXPECT_EQ(0u, m_resourceProvider->numResources()); | 516 EXPECT_EQ(0u, m_resourceProvider->numResources()); |
| 515 } | 517 } |
| 516 | 518 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 532 uint8_t data[4] = {1, 2, 3, 4}; | 534 uint8_t data[4] = {1, 2, 3, 4}; |
| 533 gfx::Rect rect(gfx::Point(), size); | 535 gfx::Rect rect(gfx::Point(), size); |
| 534 childResourceProvider->setPixels(id, data, rect, rect, gfx::Vector2d()); | 536 childResourceProvider->setPixels(id, data, rect, rect, gfx::Vector2d()); |
| 535 | 537 |
| 536 int childId = m_resourceProvider->createChild(); | 538 int childId = m_resourceProvider->createChild(); |
| 537 | 539 |
| 538 { | 540 { |
| 539 // Transfer some resource to the parent. | 541 // Transfer some resource to the parent. |
| 540 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 542 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 541 resourceIdsToTransfer.push_back(id); | 543 resourceIdsToTransfer.push_back(id); |
| 542 TransferableResourceList list; | 544 TransferableResourceArray list; |
| 543 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; | 545 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 544 EXPECT_NE(0u, list.sync_point); | 546 ASSERT_EQ(1u, list.size()); |
| 545 EXPECT_EQ(1u, list.resources.size()); | 547 EXPECT_NE(0u, list[0].sync_point); |
| 546 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id)); | 548 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id)); |
| 547 m_resourceProvider->receiveFromChild(childId, list); | 549 m_resourceProvider->receiveFromChild(childId, list); |
| 548 } | 550 } |
| 549 | 551 |
| 550 // Delete textures in the child, while they are transfered. | 552 // Delete textures in the child, while they are transfered. |
| 551 childResourceProvider->deleteResource(id); | 553 childResourceProvider->deleteResource(id); |
| 552 EXPECT_EQ(1u, childResourceProvider->numResources()); | 554 EXPECT_EQ(1u, childResourceProvider->numResources()); |
| 553 | 555 |
| 554 { | 556 { |
| 555 // Transfer resources back from the parent to the child. | 557 // Transfer resources back from the parent to the child. |
| 556 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChi
ldToParentMap(childId); | 558 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChi
ldToParentMap(childId); |
| 557 ResourceProvider::ResourceId mappedId = resourceMap[id]; | 559 ResourceProvider::ResourceId mappedId = resourceMap[id]; |
| 558 EXPECT_NE(0u, mappedId); | 560 EXPECT_NE(0u, mappedId); |
| 559 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 561 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 560 resourceIdsToTransfer.push_back(mappedId); | 562 resourceIdsToTransfer.push_back(mappedId); |
| 561 TransferableResourceList list; | 563 TransferableResourceArray list; |
| 562 m_resourceProvider->prepareSendToChild(childId, resourceIdsToTransfer, &
list); | 564 m_resourceProvider->prepareSendToChild(childId, resourceIdsToTransfer, &
list); |
| 563 EXPECT_NE(0u, list.sync_point); | 565 ASSERT_EQ(1u, list.size()); |
| 564 EXPECT_EQ(1u, list.resources.size()); | 566 EXPECT_NE(0u, list[0].sync_point); |
| 565 childResourceProvider->receiveFromParent(list); | 567 childResourceProvider->receiveFromParent(list); |
| 566 } | 568 } |
| 567 EXPECT_EQ(0u, childResourceProvider->numResources()); | 569 EXPECT_EQ(0u, childResourceProvider->numResources()); |
| 568 } | 570 } |
| 569 | 571 |
| 570 void ReleaseTextureMailbox(unsigned* releaseSyncPoint, unsigned syncPoint) { | 572 void ReleaseTextureMailbox(unsigned* releaseSyncPoint, unsigned syncPoint) { |
| 571 *releaseSyncPoint = syncPoint; | 573 *releaseSyncPoint = syncPoint; |
| 572 } | 574 } |
| 573 | 575 |
| 574 TEST_P(ResourceProviderTest, TransferMailboxResources) | 576 TEST_P(ResourceProviderTest, TransferMailboxResources) |
| (...skipping 16 matching lines...) Expand all Loading... |
| 591 unsigned releaseSyncPoint = 0; | 593 unsigned releaseSyncPoint = 0; |
| 592 TextureMailbox::ReleaseCallback callback = base::Bind(ReleaseTextureMailbox,
&releaseSyncPoint); | 594 TextureMailbox::ReleaseCallback callback = base::Bind(ReleaseTextureMailbox,
&releaseSyncPoint); |
| 593 ResourceProvider::ResourceId resource = m_resourceProvider->createResourceFr
omTextureMailbox(TextureMailbox(mailbox, callback, syncPoint)); | 595 ResourceProvider::ResourceId resource = m_resourceProvider->createResourceFr
omTextureMailbox(TextureMailbox(mailbox, callback, syncPoint)); |
| 594 EXPECT_EQ(1u, context()->textureCount()); | 596 EXPECT_EQ(1u, context()->textureCount()); |
| 595 EXPECT_EQ(0u, releaseSyncPoint); | 597 EXPECT_EQ(0u, releaseSyncPoint); |
| 596 | 598 |
| 597 { | 599 { |
| 598 // Transfer the resource, expect the sync points to be consistent. | 600 // Transfer the resource, expect the sync points to be consistent. |
| 599 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 601 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 600 resourceIdsToTransfer.push_back(resource); | 602 resourceIdsToTransfer.push_back(resource); |
| 601 TransferableResourceList list; | 603 TransferableResourceArray list; |
| 602 m_resourceProvider->prepareSendToParent(resourceIdsToTransfer, &list); | 604 m_resourceProvider->prepareSendToParent(resourceIdsToTransfer, &list); |
| 603 EXPECT_LE(syncPoint, list.sync_point); | 605 ASSERT_EQ(1u, list.size()); |
| 604 EXPECT_EQ(1u, list.resources.size()); | 606 EXPECT_LE(syncPoint, list[0].sync_point); |
| 605 EXPECT_EQ(0u, memcmp(mailbox.name, list.resources[0].mailbox.name, sizeo
f(mailbox.name))); | 607 EXPECT_EQ(0u, memcmp(mailbox.name, list[0].mailbox.name, sizeof(mailbox.
name))); |
| 606 EXPECT_EQ(0u, releaseSyncPoint); | 608 EXPECT_EQ(0u, releaseSyncPoint); |
| 607 | 609 |
| 608 context()->waitSyncPoint(list.sync_point); | 610 context()->waitSyncPoint(list[0].sync_point); |
| 609 unsigned otherTexture = context()->createTexture(); | 611 unsigned otherTexture = context()->createTexture(); |
| 610 context()->bindTexture(GL_TEXTURE_2D, otherTexture); | 612 context()->bindTexture(GL_TEXTURE_2D, otherTexture); |
| 611 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 613 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 612 uint8_t testData[4] = {0}; | 614 uint8_t testData[4] = {0}; |
| 613 context()->getPixels(gfx::Size(1, 1), GL_RGBA, testData); | 615 context()->getPixels(gfx::Size(1, 1), GL_RGBA, testData); |
| 614 EXPECT_EQ(0u, memcmp(data, testData, sizeof(data))); | 616 EXPECT_EQ(0u, memcmp(data, testData, sizeof(data))); |
| 615 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 617 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 616 context()->deleteTexture(otherTexture); | 618 context()->deleteTexture(otherTexture); |
| 617 list.sync_point = context()->insertSyncPoint(); | 619 list[0].sync_point = context()->insertSyncPoint(); |
| 618 EXPECT_LT(0u, list.sync_point); | 620 EXPECT_LT(0u, list[0].sync_point); |
| 619 | 621 |
| 620 // Receive the resource, then delete it, expect the sync points to be co
nsistent. | 622 // Receive the resource, then delete it, expect the sync points to be co
nsistent. |
| 621 m_resourceProvider->receiveFromParent(list); | 623 m_resourceProvider->receiveFromParent(list); |
| 622 EXPECT_EQ(1u, context()->textureCount()); | 624 EXPECT_EQ(1u, context()->textureCount()); |
| 623 EXPECT_EQ(0u, releaseSyncPoint); | 625 EXPECT_EQ(0u, releaseSyncPoint); |
| 624 | 626 |
| 625 m_resourceProvider->deleteResource(resource); | 627 m_resourceProvider->deleteResource(resource); |
| 626 EXPECT_LE(list.sync_point, releaseSyncPoint); | 628 EXPECT_LE(list[0].sync_point, releaseSyncPoint); |
| 627 } | 629 } |
| 628 | 630 |
| 629 | 631 |
| 630 // We're going to do the same thing as above, but testing the case where we | 632 // We're going to do the same thing as above, but testing the case where we |
| 631 // delete the resource before we receive it back. | 633 // delete the resource before we receive it back. |
| 632 syncPoint = releaseSyncPoint; | 634 syncPoint = releaseSyncPoint; |
| 633 EXPECT_LT(0u, syncPoint); | 635 EXPECT_LT(0u, syncPoint); |
| 634 releaseSyncPoint = 0; | 636 releaseSyncPoint = 0; |
| 635 resource = m_resourceProvider->createResourceFromTextureMailbox(TextureMailb
ox(mailbox, callback, syncPoint)); | 637 resource = m_resourceProvider->createResourceFromTextureMailbox(TextureMailb
ox(mailbox, callback, syncPoint)); |
| 636 EXPECT_EQ(1u, context()->textureCount()); | 638 EXPECT_EQ(1u, context()->textureCount()); |
| 637 EXPECT_EQ(0u, releaseSyncPoint); | 639 EXPECT_EQ(0u, releaseSyncPoint); |
| 638 | 640 |
| 639 { | 641 { |
| 640 // Transfer the resource, expect the sync points to be consistent. | 642 // Transfer the resource, expect the sync points to be consistent. |
| 641 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 643 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
| 642 resourceIdsToTransfer.push_back(resource); | 644 resourceIdsToTransfer.push_back(resource); |
| 643 TransferableResourceList list; | 645 TransferableResourceArray list; |
| 644 m_resourceProvider->prepareSendToParent(resourceIdsToTransfer, &list); | 646 m_resourceProvider->prepareSendToParent(resourceIdsToTransfer, &list); |
| 645 EXPECT_LE(syncPoint, list.sync_point); | 647 ASSERT_EQ(1u, list.size()); |
| 646 EXPECT_EQ(1u, list.resources.size()); | 648 EXPECT_LE(syncPoint, list[0].sync_point); |
| 647 EXPECT_EQ(0u, memcmp(mailbox.name, list.resources[0].mailbox.name, sizeo
f(mailbox.name))); | 649 EXPECT_EQ(0u, memcmp(mailbox.name, list[0].mailbox.name, sizeof(mailbox.
name))); |
| 648 EXPECT_EQ(0u, releaseSyncPoint); | 650 EXPECT_EQ(0u, releaseSyncPoint); |
| 649 | 651 |
| 650 context()->waitSyncPoint(list.sync_point); | 652 context()->waitSyncPoint(list[0].sync_point); |
| 651 unsigned otherTexture = context()->createTexture(); | 653 unsigned otherTexture = context()->createTexture(); |
| 652 context()->bindTexture(GL_TEXTURE_2D, otherTexture); | 654 context()->bindTexture(GL_TEXTURE_2D, otherTexture); |
| 653 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 655 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 654 uint8_t testData[4] = {0}; | 656 uint8_t testData[4] = {0}; |
| 655 context()->getPixels(gfx::Size(1, 1), GL_RGBA, testData); | 657 context()->getPixels(gfx::Size(1, 1), GL_RGBA, testData); |
| 656 EXPECT_EQ(0u, memcmp(data, testData, sizeof(data))); | 658 EXPECT_EQ(0u, memcmp(data, testData, sizeof(data))); |
| 657 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 659 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 658 context()->deleteTexture(otherTexture); | 660 context()->deleteTexture(otherTexture); |
| 659 list.sync_point = context()->insertSyncPoint(); | 661 list[0].sync_point = context()->insertSyncPoint(); |
| 660 EXPECT_LT(0u, list.sync_point); | 662 EXPECT_LT(0u, list[0].sync_point); |
| 661 | 663 |
| 662 // Delete the resource, which shouldn't do anything. | 664 // Delete the resource, which shouldn't do anything. |
| 663 m_resourceProvider->deleteResource(resource); | 665 m_resourceProvider->deleteResource(resource); |
| 664 EXPECT_EQ(1u, context()->textureCount()); | 666 EXPECT_EQ(1u, context()->textureCount()); |
| 665 EXPECT_EQ(0u, releaseSyncPoint); | 667 EXPECT_EQ(0u, releaseSyncPoint); |
| 666 | 668 |
| 667 // Then receive the resource which should release the mailbox, expect th
e sync points to be consistent. | 669 // Then receive the resource which should release the mailbox, expect th
e sync points to be consistent. |
| 668 m_resourceProvider->receiveFromParent(list); | 670 m_resourceProvider->receiveFromParent(list); |
| 669 EXPECT_LE(list.sync_point, releaseSyncPoint); | 671 EXPECT_LE(list[0].sync_point, releaseSyncPoint); |
| 670 } | 672 } |
| 671 | 673 |
| 672 context()->waitSyncPoint(releaseSyncPoint); | 674 context()->waitSyncPoint(releaseSyncPoint); |
| 673 context()->bindTexture(GL_TEXTURE_2D, texture); | 675 context()->bindTexture(GL_TEXTURE_2D, texture); |
| 674 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 676 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 675 context()->deleteTexture(texture); | 677 context()->deleteTexture(texture); |
| 676 } | 678 } |
| 677 | 679 |
| 678 class TextureStateTrackingContext : public TestWebGraphicsContext3D { | 680 class TextureStateTrackingContext : public TestWebGraphicsContext3D { |
| 679 public: | 681 public: |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 Mock::VerifyAndClearExpectations(context); | 849 Mock::VerifyAndClearExpectations(context); |
| 848 } | 850 } |
| 849 | 851 |
| 850 INSTANTIATE_TEST_CASE_P(ResourceProviderTests, | 852 INSTANTIATE_TEST_CASE_P(ResourceProviderTests, |
| 851 ResourceProviderTest, | 853 ResourceProviderTest, |
| 852 ::testing::Values(ResourceProvider::GLTexture, | 854 ::testing::Values(ResourceProvider::GLTexture, |
| 853 ResourceProvider::Bitmap)); | 855 ResourceProvider::Bitmap)); |
| 854 | 856 |
| 855 } // namespace | 857 } // namespace |
| 856 } // namespace cc | 858 } // namespace cc |
| OLD | NEW |