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 "cc/resource_provider.h" | 7 #include "cc/resource_provider.h" |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "cc/graphics_context.h" | 10 #include "cc/graphics_context.h" |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 childResourceProvider->setPixels(id2, data2, rect, rect, gfx::Vector2d()); | 436 childResourceProvider->setPixels(id2, data2, rect, rect, gfx::Vector2d()); |
437 | 437 |
438 int childPool = 2; | 438 int childPool = 2; |
439 int childId = m_resourceProvider->createChild(childPool); | 439 int childId = m_resourceProvider->createChild(childPool); |
440 | 440 |
441 { | 441 { |
442 // Transfer some resources to the parent. | 442 // Transfer some resources to the parent. |
443 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 443 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
444 resourceIdsToTransfer.push_back(id1); | 444 resourceIdsToTransfer.push_back(id1); |
445 resourceIdsToTransfer.push_back(id2); | 445 resourceIdsToTransfer.push_back(id2); |
446 ResourceProvider::TransferableResourceList list = childResourceProvider-
>prepareSendToParent(resourceIdsToTransfer); | 446 TransferableResourceList list; |
447 EXPECT_NE(0u, list.syncPoint); | 447 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 448 EXPECT_NE(0u, list.sync_point); |
448 EXPECT_EQ(2u, list.resources.size()); | 449 EXPECT_EQ(2u, list.resources.size()); |
449 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); | 450 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); |
450 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); | 451 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); |
451 m_resourceProvider->receiveFromChild(childId, list); | 452 m_resourceProvider->receiveFromChild(childId, list); |
452 } | 453 } |
453 | 454 |
454 EXPECT_EQ(2u, m_resourceProvider->numResources()); | 455 EXPECT_EQ(2u, m_resourceProvider->numResources()); |
455 EXPECT_EQ(2u, m_resourceProvider->mailboxCount()); | 456 EXPECT_EQ(2u, m_resourceProvider->mailboxCount()); |
456 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChildTo
ParentMap(childId); | 457 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChildTo
ParentMap(childId); |
457 ResourceProvider::ResourceId mappedId1 = resourceMap[id1]; | 458 ResourceProvider::ResourceId mappedId1 = resourceMap[id1]; |
458 ResourceProvider::ResourceId mappedId2 = resourceMap[id2]; | 459 ResourceProvider::ResourceId mappedId2 = resourceMap[id2]; |
459 EXPECT_NE(0u, mappedId1); | 460 EXPECT_NE(0u, mappedId1); |
460 EXPECT_NE(0u, mappedId2); | 461 EXPECT_NE(0u, mappedId2); |
461 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1)); | 462 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id1)); |
462 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2)); | 463 EXPECT_FALSE(m_resourceProvider->inUseByConsumer(id2)); |
463 | 464 |
464 uint8_t result[4] = {0}; | 465 uint8_t result[4] = {0}; |
465 getResourcePixels(mappedId1, size, format, result); | 466 getResourcePixels(mappedId1, size, format, result); |
466 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); | 467 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); |
467 | 468 |
468 getResourcePixels(mappedId2, size, format, result); | 469 getResourcePixels(mappedId2, size, format, result); |
469 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); | 470 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); |
470 | 471 |
471 { | 472 { |
472 // Check that transfering again the same resource from the child to the | 473 // Check that transfering again the same resource from the child to the |
473 // parent is a noop. | 474 // parent is a noop. |
474 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 475 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
475 resourceIdsToTransfer.push_back(id1); | 476 resourceIdsToTransfer.push_back(id1); |
476 ResourceProvider::TransferableResourceList list = childResourceProvider-
>prepareSendToParent(resourceIdsToTransfer); | 477 TransferableResourceList list; |
477 EXPECT_EQ(0u, list.syncPoint); | 478 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 479 EXPECT_EQ(0u, list.sync_point); |
478 EXPECT_EQ(0u, list.resources.size()); | 480 EXPECT_EQ(0u, list.resources.size()); |
479 } | 481 } |
480 | 482 |
481 { | 483 { |
482 // Transfer resources back from the parent to the child. | 484 // Transfer resources back from the parent to the child. |
483 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 485 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
484 resourceIdsToTransfer.push_back(mappedId1); | 486 resourceIdsToTransfer.push_back(mappedId1); |
485 resourceIdsToTransfer.push_back(mappedId2); | 487 resourceIdsToTransfer.push_back(mappedId2); |
486 ResourceProvider::TransferableResourceList list = m_resourceProvider->pr
epareSendToChild(childId, resourceIdsToTransfer); | 488 TransferableResourceList list; |
487 EXPECT_NE(0u, list.syncPoint); | 489 m_resourceProvider->prepareSendToChild(childId, resourceIdsToTransfer, &
list); |
| 490 EXPECT_NE(0u, list.sync_point); |
488 EXPECT_EQ(2u, list.resources.size()); | 491 EXPECT_EQ(2u, list.resources.size()); |
489 childResourceProvider->receiveFromParent(list); | 492 childResourceProvider->receiveFromParent(list); |
490 } | 493 } |
491 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); | 494 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); |
492 EXPECT_EQ(2u, childResourceProvider->mailboxCount()); | 495 EXPECT_EQ(2u, childResourceProvider->mailboxCount()); |
493 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1)); | 496 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id1)); |
494 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2)); | 497 EXPECT_FALSE(childResourceProvider->inUseByConsumer(id2)); |
495 | 498 |
496 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex
t*>(childContext->context3D()); | 499 ResourceProviderContext* childContext3D = static_cast<ResourceProviderContex
t*>(childContext->context3D()); |
497 { | 500 { |
498 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id1
); | 501 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id1
); |
499 ASSERT_NE(0U, lock.textureId()); | 502 ASSERT_NE(0U, lock.textureId()); |
500 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); | 503 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); |
501 childContext3D->getPixels(size, format, result); | 504 childContext3D->getPixels(size, format, result); |
502 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); | 505 EXPECT_EQ(0, memcmp(data1, result, pixelSize)); |
503 } | 506 } |
504 { | 507 { |
505 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id2
); | 508 ResourceProvider::ScopedReadLockGL lock(childResourceProvider.get(), id2
); |
506 ASSERT_NE(0U, lock.textureId()); | 509 ASSERT_NE(0U, lock.textureId()); |
507 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); | 510 childContext3D->bindTexture(GL_TEXTURE_2D, lock.textureId()); |
508 childContext3D->getPixels(size, format, result); | 511 childContext3D->getPixels(size, format, result); |
509 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); | 512 EXPECT_EQ(0, memcmp(data2, result, pixelSize)); |
510 } | 513 } |
511 | 514 |
512 { | 515 { |
513 // Transfer resources to the parent again. | 516 // Transfer resources to the parent again. |
514 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 517 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
515 resourceIdsToTransfer.push_back(id1); | 518 resourceIdsToTransfer.push_back(id1); |
516 resourceIdsToTransfer.push_back(id2); | 519 resourceIdsToTransfer.push_back(id2); |
517 ResourceProvider::TransferableResourceList list = childResourceProvider-
>prepareSendToParent(resourceIdsToTransfer); | 520 TransferableResourceList list; |
518 EXPECT_NE(0u, list.syncPoint); | 521 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 522 EXPECT_NE(0u, list.sync_point); |
519 EXPECT_EQ(2u, list.resources.size()); | 523 EXPECT_EQ(2u, list.resources.size()); |
520 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); | 524 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id1)); |
521 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); | 525 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id2)); |
522 m_resourceProvider->receiveFromChild(childId, list); | 526 m_resourceProvider->receiveFromChild(childId, list); |
523 } | 527 } |
524 | 528 |
525 EXPECT_EQ(2u, m_resourceProvider->numResources()); | 529 EXPECT_EQ(2u, m_resourceProvider->numResources()); |
526 m_resourceProvider->destroyChild(childId); | 530 m_resourceProvider->destroyChild(childId); |
527 EXPECT_EQ(0u, m_resourceProvider->numResources()); | 531 EXPECT_EQ(0u, m_resourceProvider->numResources()); |
528 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); | 532 EXPECT_EQ(0u, m_resourceProvider->mailboxCount()); |
(...skipping 19 matching lines...) Expand all Loading... |
548 gfx::Rect rect(gfx::Point(), size); | 552 gfx::Rect rect(gfx::Point(), size); |
549 childResourceProvider->setPixels(id, data, rect, rect, gfx::Vector2d()); | 553 childResourceProvider->setPixels(id, data, rect, rect, gfx::Vector2d()); |
550 | 554 |
551 int childPool = 2; | 555 int childPool = 2; |
552 int childId = m_resourceProvider->createChild(childPool); | 556 int childId = m_resourceProvider->createChild(childPool); |
553 | 557 |
554 { | 558 { |
555 // Transfer some resource to the parent. | 559 // Transfer some resource to the parent. |
556 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 560 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
557 resourceIdsToTransfer.push_back(id); | 561 resourceIdsToTransfer.push_back(id); |
558 ResourceProvider::TransferableResourceList list = childResourceProvider-
>prepareSendToParent(resourceIdsToTransfer); | 562 TransferableResourceList list; |
559 EXPECT_NE(0u, list.syncPoint); | 563 childResourceProvider->prepareSendToParent(resourceIdsToTransfer, &list)
; |
| 564 EXPECT_NE(0u, list.sync_point); |
560 EXPECT_EQ(1u, list.resources.size()); | 565 EXPECT_EQ(1u, list.resources.size()); |
561 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id)); | 566 EXPECT_TRUE(childResourceProvider->inUseByConsumer(id)); |
562 m_resourceProvider->receiveFromChild(childId, list); | 567 m_resourceProvider->receiveFromChild(childId, list); |
563 } | 568 } |
564 | 569 |
565 // Delete textures in the child, while they are transfered. | 570 // Delete textures in the child, while they are transfered. |
566 childResourceProvider->deleteResource(id); | 571 childResourceProvider->deleteResource(id); |
567 EXPECT_EQ(1u, childResourceProvider->numResources()); | 572 EXPECT_EQ(1u, childResourceProvider->numResources()); |
568 | 573 |
569 { | 574 { |
570 // Transfer resources back from the parent to the child. | 575 // Transfer resources back from the parent to the child. |
571 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChi
ldToParentMap(childId); | 576 ResourceProvider::ResourceIdMap resourceMap = m_resourceProvider->getChi
ldToParentMap(childId); |
572 ResourceProvider::ResourceId mappedId = resourceMap[id]; | 577 ResourceProvider::ResourceId mappedId = resourceMap[id]; |
573 EXPECT_NE(0u, mappedId); | 578 EXPECT_NE(0u, mappedId); |
574 ResourceProvider::ResourceIdArray resourceIdsToTransfer; | 579 ResourceProvider::ResourceIdArray resourceIdsToTransfer; |
575 resourceIdsToTransfer.push_back(mappedId); | 580 resourceIdsToTransfer.push_back(mappedId); |
576 ResourceProvider::TransferableResourceList list = m_resourceProvider->pr
epareSendToChild(childId, resourceIdsToTransfer); | 581 TransferableResourceList list; |
577 EXPECT_NE(0u, list.syncPoint); | 582 m_resourceProvider->prepareSendToChild(childId, resourceIdsToTransfer, &
list); |
| 583 EXPECT_NE(0u, list.sync_point); |
578 EXPECT_EQ(1u, list.resources.size()); | 584 EXPECT_EQ(1u, list.resources.size()); |
579 childResourceProvider->receiveFromParent(list); | 585 childResourceProvider->receiveFromParent(list); |
580 } | 586 } |
581 EXPECT_EQ(0u, childResourceProvider->numResources()); | 587 EXPECT_EQ(0u, childResourceProvider->numResources()); |
582 } | 588 } |
583 | 589 |
584 INSTANTIATE_TEST_CASE_P(ResourceProviderTests, | 590 INSTANTIATE_TEST_CASE_P(ResourceProviderTests, |
585 ResourceProviderTest, | 591 ResourceProviderTest, |
586 ::testing::Values(ResourceProvider::GLTexture, | 592 ::testing::Values(ResourceProvider::GLTexture, |
587 ResourceProvider::Bitmap)); | 593 ResourceProvider::Bitmap)); |
588 | 594 |
589 } // namespace | 595 } // namespace |
OLD | NEW |