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/resources/resource_provider.h" | 5 #include "cc/resources/resource_provider.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 scoped_refptr<TestTexture> texture; | 343 scoped_refptr<TestTexture> texture; |
344 }; | 344 }; |
345 typedef ScopedPtrDeque<PendingProduceTexture> PendingProduceTextureList; | 345 typedef ScopedPtrDeque<PendingProduceTexture> PendingProduceTextureList; |
346 ContextSharedData* shared_data_; | 346 ContextSharedData* shared_data_; |
347 GLuint last_waited_sync_point_; | 347 GLuint last_waited_sync_point_; |
348 PendingProduceTextureList pending_produce_textures_; | 348 PendingProduceTextureList pending_produce_textures_; |
349 }; | 349 }; |
350 | 350 |
351 void GetResourcePixels(ResourceProvider* resource_provider, | 351 void GetResourcePixels(ResourceProvider* resource_provider, |
352 ResourceProviderContext* context, | 352 ResourceProviderContext* context, |
353 ResourceProvider::ResourceId id, | 353 ResourceId id, |
354 const gfx::Size& size, | 354 const gfx::Size& size, |
355 ResourceFormat format, | 355 ResourceFormat format, |
356 uint8_t* pixels) { | 356 uint8_t* pixels) { |
357 resource_provider->WaitSyncPointIfNeeded(id); | 357 resource_provider->WaitSyncPointIfNeeded(id); |
358 switch (resource_provider->default_resource_type()) { | 358 switch (resource_provider->default_resource_type()) { |
359 case ResourceProvider::RESOURCE_TYPE_GL_TEXTURE: { | 359 case ResourceProvider::RESOURCE_TYPE_GL_TEXTURE: { |
360 ResourceProvider::ScopedReadLockGL lock_gl(resource_provider, id); | 360 ResourceProvider::ScopedReadLockGL lock_gl(resource_provider, id); |
361 ASSERT_NE(0U, lock_gl.texture_id()); | 361 ASSERT_NE(0U, lock_gl.texture_id()); |
362 context->bindTexture(GL_TEXTURE_2D, lock_gl.texture_id()); | 362 context->bindTexture(GL_TEXTURE_2D, lock_gl.texture_id()); |
363 context->GetPixels(size, format, pixels); | 363 context->GetPixels(size, format, pixels); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 const ReturnedResourceArray& returned, | 442 const ReturnedResourceArray& returned, |
443 BlockingTaskRunner* main_thread_task_runner) { | 443 BlockingTaskRunner* main_thread_task_runner) { |
444 array->insert(array->end(), returned.begin(), returned.end()); | 444 array->insert(array->end(), returned.begin(), returned.end()); |
445 } | 445 } |
446 | 446 |
447 static ReturnCallback GetReturnCallback(ReturnedResourceArray* array) { | 447 static ReturnCallback GetReturnCallback(ReturnedResourceArray* array) { |
448 return base::Bind(&ResourceProviderTest::CollectResources, array); | 448 return base::Bind(&ResourceProviderTest::CollectResources, array); |
449 } | 449 } |
450 | 450 |
451 static void SetResourceFilter(ResourceProvider* resource_provider, | 451 static void SetResourceFilter(ResourceProvider* resource_provider, |
452 ResourceProvider::ResourceId id, | 452 ResourceId id, |
453 GLenum filter) { | 453 GLenum filter) { |
454 ResourceProvider::ScopedSamplerGL sampler( | 454 ResourceProvider::ScopedSamplerGL sampler( |
455 resource_provider, id, GL_TEXTURE_2D, filter); | 455 resource_provider, id, GL_TEXTURE_2D, filter); |
456 } | 456 } |
457 | 457 |
458 ResourceProviderContext* context() { return context3d_; } | 458 ResourceProviderContext* context() { return context3d_; } |
459 | 459 |
460 ResourceProvider::ResourceId CreateChildMailbox(uint32* release_sync_point, | 460 ResourceId CreateChildMailbox(uint32* release_sync_point, |
461 bool* lost_resource, | 461 bool* lost_resource, |
462 bool* release_called, | 462 bool* release_called, |
463 uint32* sync_point) { | 463 uint32* sync_point) { |
464 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 464 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { |
465 unsigned texture = child_context_->createTexture(); | 465 unsigned texture = child_context_->createTexture(); |
466 gpu::Mailbox gpu_mailbox; | 466 gpu::Mailbox gpu_mailbox; |
467 child_context_->genMailboxCHROMIUM(gpu_mailbox.name); | 467 child_context_->genMailboxCHROMIUM(gpu_mailbox.name); |
468 child_context_->produceTextureDirectCHROMIUM(texture, GL_TEXTURE_2D, | 468 child_context_->produceTextureDirectCHROMIUM(texture, GL_TEXTURE_2D, |
469 gpu_mailbox.name); | 469 gpu_mailbox.name); |
470 *sync_point = child_context_->insertSyncPoint(); | 470 *sync_point = child_context_->insertSyncPoint(); |
471 EXPECT_LT(0u, *sync_point); | 471 EXPECT_LT(0u, *sync_point); |
472 | 472 |
473 scoped_ptr<SharedBitmap> shared_bitmap; | 473 scoped_ptr<SharedBitmap> shared_bitmap; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
511 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type, | 511 void CheckCreateResource(ResourceProvider::ResourceType expected_default_type, |
512 ResourceProvider* resource_provider, | 512 ResourceProvider* resource_provider, |
513 ResourceProviderContext* context) { | 513 ResourceProviderContext* context) { |
514 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type()); | 514 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type()); |
515 | 515 |
516 gfx::Size size(1, 1); | 516 gfx::Size size(1, 1); |
517 ResourceFormat format = RGBA_8888; | 517 ResourceFormat format = RGBA_8888; |
518 size_t pixel_size = TextureSizeBytes(size, format); | 518 size_t pixel_size = TextureSizeBytes(size, format); |
519 ASSERT_EQ(4U, pixel_size); | 519 ASSERT_EQ(4U, pixel_size); |
520 | 520 |
521 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 521 ResourceId id = resource_provider->CreateResource( |
522 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 522 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
523 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources())); | 523 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources())); |
524 if (expected_default_type == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 524 if (expected_default_type == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
525 EXPECT_EQ(0u, context->NumTextures()); | 525 EXPECT_EQ(0u, context->NumTextures()); |
526 | 526 |
527 uint8_t data[4] = { 1, 2, 3, 4 }; | 527 uint8_t data[4] = { 1, 2, 3, 4 }; |
528 resource_provider->CopyToResource(id, data, size); | 528 resource_provider->CopyToResource(id, data, size); |
529 if (expected_default_type == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 529 if (expected_default_type == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
530 EXPECT_EQ(1u, context->NumTextures()); | 530 EXPECT_EQ(1u, context->NumTextures()); |
531 | 531 |
(...skipping 10 matching lines...) Expand all Loading... |
542 TEST_P(ResourceProviderTest, Basic) { | 542 TEST_P(ResourceProviderTest, Basic) { |
543 CheckCreateResource(GetParam(), resource_provider_.get(), context()); | 543 CheckCreateResource(GetParam(), resource_provider_.get(), context()); |
544 } | 544 } |
545 | 545 |
546 TEST_P(ResourceProviderTest, Upload) { | 546 TEST_P(ResourceProviderTest, Upload) { |
547 gfx::Size size(2, 2); | 547 gfx::Size size(2, 2); |
548 ResourceFormat format = RGBA_8888; | 548 ResourceFormat format = RGBA_8888; |
549 size_t pixel_size = TextureSizeBytes(size, format); | 549 size_t pixel_size = TextureSizeBytes(size, format); |
550 ASSERT_EQ(16U, pixel_size); | 550 ASSERT_EQ(16U, pixel_size); |
551 | 551 |
552 ResourceProvider::ResourceId id = resource_provider_->CreateResource( | 552 ResourceId id = resource_provider_->CreateResource( |
553 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 553 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
554 | 554 |
555 uint8_t image[16] = { 0 }; | 555 uint8_t image[16] = { 0 }; |
556 gfx::Rect image_rect(size); | 556 gfx::Rect image_rect(size); |
557 resource_provider_->SetPixels( | 557 resource_provider_->SetPixels( |
558 id, image, image_rect, image_rect, gfx::Vector2d()); | 558 id, image, image_rect, image_rect, gfx::Vector2d()); |
559 | 559 |
560 for (uint8_t i = 0; i < pixel_size; ++i) | 560 for (uint8_t i = 0; i < pixel_size; ++i) |
561 image[i] = i; | 561 image[i] = i; |
562 | 562 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 | 609 |
610 resource_provider_->DeleteResource(id); | 610 resource_provider_->DeleteResource(id); |
611 } | 611 } |
612 | 612 |
613 TEST_P(ResourceProviderTest, SimpleUpload) { | 613 TEST_P(ResourceProviderTest, SimpleUpload) { |
614 gfx::Size size(2, 2); | 614 gfx::Size size(2, 2); |
615 ResourceFormat format = RGBA_8888; | 615 ResourceFormat format = RGBA_8888; |
616 size_t pixel_size = TextureSizeBytes(size, format); | 616 size_t pixel_size = TextureSizeBytes(size, format); |
617 ASSERT_EQ(16U, pixel_size); | 617 ASSERT_EQ(16U, pixel_size); |
618 | 618 |
619 ResourceProvider::ResourceId id = resource_provider_->CreateResource( | 619 ResourceId id = resource_provider_->CreateResource( |
620 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 620 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
621 | 621 |
622 uint8_t image[16] = {0}; | 622 uint8_t image[16] = {0}; |
623 resource_provider_->CopyToResource(id, image, size); | 623 resource_provider_->CopyToResource(id, image, size); |
624 { | 624 { |
625 uint8_t result[16] = {0}; | 625 uint8_t result[16] = {0}; |
626 uint8_t expected[16] = {0}; | 626 uint8_t expected[16] = {0}; |
627 GetResourcePixels(resource_provider_.get(), context(), id, size, format, | 627 GetResourcePixels(resource_provider_.get(), context(), id, size, format, |
628 result); | 628 result); |
629 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); | 629 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); |
(...skipping 13 matching lines...) Expand all Loading... |
643 } | 643 } |
644 | 644 |
645 TEST_P(ResourceProviderTest, TransferGLResources) { | 645 TEST_P(ResourceProviderTest, TransferGLResources) { |
646 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 646 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
647 return; | 647 return; |
648 gfx::Size size(1, 1); | 648 gfx::Size size(1, 1); |
649 ResourceFormat format = RGBA_8888; | 649 ResourceFormat format = RGBA_8888; |
650 size_t pixel_size = TextureSizeBytes(size, format); | 650 size_t pixel_size = TextureSizeBytes(size, format); |
651 ASSERT_EQ(4U, pixel_size); | 651 ASSERT_EQ(4U, pixel_size); |
652 | 652 |
653 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 653 ResourceId id1 = child_resource_provider_->CreateResource( |
654 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 654 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
655 uint8_t data1[4] = { 1, 2, 3, 4 }; | 655 uint8_t data1[4] = { 1, 2, 3, 4 }; |
656 child_resource_provider_->CopyToResource(id1, data1, size); | 656 child_resource_provider_->CopyToResource(id1, data1, size); |
657 | 657 |
658 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 658 ResourceId id2 = child_resource_provider_->CreateResource( |
659 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 659 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
660 uint8_t data2[4] = { 5, 5, 5, 5 }; | 660 uint8_t data2[4] = { 5, 5, 5, 5 }; |
661 child_resource_provider_->CopyToResource(id2, data2, size); | 661 child_resource_provider_->CopyToResource(id2, data2, size); |
662 | 662 |
663 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( | 663 ResourceId id3 = child_resource_provider_->CreateResource( |
664 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 664 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
665 { | 665 { |
666 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( | 666 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
667 child_resource_provider_.get(), id3); | 667 child_resource_provider_.get(), id3); |
668 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); | 668 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); |
669 } | 669 } |
670 | 670 |
671 GLuint external_texture_id = child_context_->createExternalTexture(); | 671 GLuint external_texture_id = child_context_->createExternalTexture(); |
672 | 672 |
673 gpu::Mailbox external_mailbox; | 673 gpu::Mailbox external_mailbox; |
674 child_context_->genMailboxCHROMIUM(external_mailbox.name); | 674 child_context_->genMailboxCHROMIUM(external_mailbox.name); |
675 child_context_->produceTextureDirectCHROMIUM( | 675 child_context_->produceTextureDirectCHROMIUM( |
676 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); | 676 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); |
677 const GLuint external_sync_point = child_context_->insertSyncPoint(); | 677 const GLuint external_sync_point = child_context_->insertSyncPoint(); |
678 ResourceProvider::ResourceId id4 = | 678 ResourceId id4 = child_resource_provider_->CreateResourceFromTextureMailbox( |
679 child_resource_provider_->CreateResourceFromTextureMailbox( | 679 TextureMailbox(external_mailbox, GL_TEXTURE_EXTERNAL_OES, |
680 TextureMailbox( | 680 external_sync_point), |
681 external_mailbox, GL_TEXTURE_EXTERNAL_OES, external_sync_point), | 681 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
682 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); | |
683 | 682 |
684 ReturnedResourceArray returned_to_child; | 683 ReturnedResourceArray returned_to_child; |
685 int child_id = | 684 int child_id = |
686 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 685 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
687 { | 686 { |
688 // Transfer some resources to the parent. | 687 // Transfer some resources to the parent. |
689 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 688 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
690 resource_ids_to_transfer.push_back(id1); | 689 resource_ids_to_transfer.push_back(id1); |
691 resource_ids_to_transfer.push_back(id2); | 690 resource_ids_to_transfer.push_back(id2); |
692 resource_ids_to_transfer.push_back(id3); | 691 resource_ids_to_transfer.push_back(id3); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 resource_ids_to_receive.insert(id2); | 729 resource_ids_to_receive.insert(id2); |
731 resource_ids_to_receive.insert(id3); | 730 resource_ids_to_receive.insert(id3); |
732 resource_ids_to_receive.insert(id4); | 731 resource_ids_to_receive.insert(id4); |
733 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 732 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
734 resource_ids_to_receive); | 733 resource_ids_to_receive); |
735 } | 734 } |
736 | 735 |
737 EXPECT_EQ(4u, resource_provider_->num_resources()); | 736 EXPECT_EQ(4u, resource_provider_->num_resources()); |
738 ResourceProvider::ResourceIdMap resource_map = | 737 ResourceProvider::ResourceIdMap resource_map = |
739 resource_provider_->GetChildToParentMap(child_id); | 738 resource_provider_->GetChildToParentMap(child_id); |
740 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 739 ResourceId mapped_id1 = resource_map[id1]; |
741 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; | 740 ResourceId mapped_id2 = resource_map[id2]; |
742 ResourceProvider::ResourceId mapped_id3 = resource_map[id3]; | 741 ResourceId mapped_id3 = resource_map[id3]; |
743 ResourceProvider::ResourceId mapped_id4 = resource_map[id4]; | 742 ResourceId mapped_id4 = resource_map[id4]; |
744 EXPECT_NE(0u, mapped_id1); | 743 EXPECT_NE(0u, mapped_id1); |
745 EXPECT_NE(0u, mapped_id2); | 744 EXPECT_NE(0u, mapped_id2); |
746 EXPECT_NE(0u, mapped_id3); | 745 EXPECT_NE(0u, mapped_id3); |
747 EXPECT_NE(0u, mapped_id4); | 746 EXPECT_NE(0u, mapped_id4); |
748 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); | 747 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); |
749 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); | 748 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); |
750 EXPECT_FALSE(resource_provider_->InUseByConsumer(id3)); | 749 EXPECT_FALSE(resource_provider_->InUseByConsumer(id3)); |
751 EXPECT_FALSE(resource_provider_->InUseByConsumer(id4)); | 750 EXPECT_FALSE(resource_provider_->InUseByConsumer(id4)); |
752 | 751 |
753 uint8_t result[4] = { 0 }; | 752 uint8_t result[4] = { 0 }; |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
902 EXPECT_EQ(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, GetParam()); | 901 EXPECT_EQ(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, GetParam()); |
903 } | 902 } |
904 }; | 903 }; |
905 | 904 |
906 TEST_P(ResourceProviderTestNoSyncPoint, TransferGLResources) { | 905 TEST_P(ResourceProviderTestNoSyncPoint, TransferGLResources) { |
907 gfx::Size size(1, 1); | 906 gfx::Size size(1, 1); |
908 ResourceFormat format = RGBA_8888; | 907 ResourceFormat format = RGBA_8888; |
909 size_t pixel_size = TextureSizeBytes(size, format); | 908 size_t pixel_size = TextureSizeBytes(size, format); |
910 ASSERT_EQ(4U, pixel_size); | 909 ASSERT_EQ(4U, pixel_size); |
911 | 910 |
912 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 911 ResourceId id1 = child_resource_provider_->CreateResource( |
913 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 912 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
914 uint8_t data1[4] = {1, 2, 3, 4}; | 913 uint8_t data1[4] = {1, 2, 3, 4}; |
915 child_resource_provider_->CopyToResource(id1, data1, size); | 914 child_resource_provider_->CopyToResource(id1, data1, size); |
916 | 915 |
917 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 916 ResourceId id2 = child_resource_provider_->CreateResource( |
918 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 917 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
919 { | 918 { |
920 // Ensure locking the memory buffer doesn't create an unnecessary sync | 919 // Ensure locking the memory buffer doesn't create an unnecessary sync |
921 // point. | 920 // point. |
922 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( | 921 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
923 child_resource_provider_.get(), id2); | 922 child_resource_provider_.get(), id2); |
924 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); | 923 EXPECT_TRUE(lock.GetGpuMemoryBuffer()); |
925 } | 924 } |
926 | 925 |
927 GLuint external_texture_id = child_context_->createExternalTexture(); | 926 GLuint external_texture_id = child_context_->createExternalTexture(); |
928 | 927 |
929 // A sync point is specified directly and should be used. | 928 // A sync point is specified directly and should be used. |
930 gpu::Mailbox external_mailbox; | 929 gpu::Mailbox external_mailbox; |
931 child_context_->genMailboxCHROMIUM(external_mailbox.name); | 930 child_context_->genMailboxCHROMIUM(external_mailbox.name); |
932 child_context_->produceTextureDirectCHROMIUM( | 931 child_context_->produceTextureDirectCHROMIUM( |
933 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); | 932 external_texture_id, GL_TEXTURE_EXTERNAL_OES, external_mailbox.name); |
934 const GLuint external_sync_point = child_context_->insertSyncPoint(); | 933 const GLuint external_sync_point = child_context_->insertSyncPoint(); |
935 ResourceProvider::ResourceId id3 = | 934 ResourceId id3 = child_resource_provider_->CreateResourceFromTextureMailbox( |
936 child_resource_provider_->CreateResourceFromTextureMailbox( | 935 TextureMailbox(external_mailbox, GL_TEXTURE_EXTERNAL_OES, |
937 TextureMailbox(external_mailbox, GL_TEXTURE_EXTERNAL_OES, | 936 external_sync_point), |
938 external_sync_point), | 937 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); |
939 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback))); | |
940 | 938 |
941 ReturnedResourceArray returned_to_child; | 939 ReturnedResourceArray returned_to_child; |
942 int child_id = | 940 int child_id = |
943 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 941 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
944 resource_provider_->SetChildNeedsSyncPoints(child_id, false); | 942 resource_provider_->SetChildNeedsSyncPoints(child_id, false); |
945 { | 943 { |
946 // Transfer some resources to the parent. | 944 // Transfer some resources to the parent. |
947 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 945 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
948 resource_ids_to_transfer.push_back(id1); | 946 resource_ids_to_transfer.push_back(id1); |
949 resource_ids_to_transfer.push_back(id2); | 947 resource_ids_to_transfer.push_back(id2); |
(...skipping 19 matching lines...) Expand all Loading... |
969 | 967 |
970 { | 968 { |
971 EXPECT_EQ(0u, returned_to_child.size()); | 969 EXPECT_EQ(0u, returned_to_child.size()); |
972 | 970 |
973 // Transfer resources back from the parent to the child. Set no resources as | 971 // Transfer resources back from the parent to the child. Set no resources as |
974 // being in use. | 972 // being in use. |
975 ResourceProvider::ResourceIdSet no_resources; | 973 ResourceProvider::ResourceIdSet no_resources; |
976 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 974 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
977 | 975 |
978 ASSERT_EQ(3u, returned_to_child.size()); | 976 ASSERT_EQ(3u, returned_to_child.size()); |
979 std::map<ResourceProvider::ResourceId, unsigned int> returned_sync_points; | 977 std::map<ResourceId, unsigned int> returned_sync_points; |
980 for (const auto& returned : returned_to_child) | 978 for (const auto& returned : returned_to_child) |
981 returned_sync_points[returned.id] = returned.sync_point; | 979 returned_sync_points[returned.id] = returned.sync_point; |
982 | 980 |
983 EXPECT_TRUE(returned_sync_points.find(id1) != returned_sync_points.end()); | 981 EXPECT_TRUE(returned_sync_points.find(id1) != returned_sync_points.end()); |
984 // No new sync point should be created transferring back. | 982 // No new sync point should be created transferring back. |
985 EXPECT_TRUE(returned_sync_points.find(id1) != returned_sync_points.end()); | 983 EXPECT_TRUE(returned_sync_points.find(id1) != returned_sync_points.end()); |
986 EXPECT_EQ(0u, returned_sync_points[id1]); | 984 EXPECT_EQ(0u, returned_sync_points[id1]); |
987 EXPECT_TRUE(returned_sync_points.find(id2) != returned_sync_points.end()); | 985 EXPECT_TRUE(returned_sync_points.find(id2) != returned_sync_points.end()); |
988 EXPECT_EQ(0u, returned_sync_points[id2]); | 986 EXPECT_EQ(0u, returned_sync_points[id2]); |
989 // Original sync point given should be returned. | 987 // Original sync point given should be returned. |
(...skipping 13 matching lines...) Expand all Loading... |
1003 ResourceProviderTests, | 1001 ResourceProviderTests, |
1004 ResourceProviderTestNoSyncPoint, | 1002 ResourceProviderTestNoSyncPoint, |
1005 ::testing::Values(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)); | 1003 ::testing::Values(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE)); |
1006 | 1004 |
1007 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { | 1005 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { |
1008 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1006 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
1009 return; | 1007 return; |
1010 gfx::Size size(1, 1); | 1008 gfx::Size size(1, 1); |
1011 ResourceFormat format = RGBA_8888; | 1009 ResourceFormat format = RGBA_8888; |
1012 | 1010 |
1013 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1011 ResourceId id1 = child_resource_provider_->CreateResource( |
1014 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1012 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1015 uint8_t data1[4] = {1, 2, 3, 4}; | 1013 uint8_t data1[4] = {1, 2, 3, 4}; |
1016 child_resource_provider_->CopyToResource(id1, data1, size); | 1014 child_resource_provider_->CopyToResource(id1, data1, size); |
1017 | 1015 |
1018 ReturnedResourceArray returned_to_child; | 1016 ReturnedResourceArray returned_to_child; |
1019 int child_id = | 1017 int child_id = |
1020 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1018 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1021 { | 1019 { |
1022 // Transfer some resources to the parent. | 1020 // Transfer some resources to the parent. |
1023 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1021 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1058 TEST_P(ResourceProviderTest, AllowOverlayTransfersToParent) { | 1056 TEST_P(ResourceProviderTest, AllowOverlayTransfersToParent) { |
1059 // Overlays only supported on the GL path. | 1057 // Overlays only supported on the GL path. |
1060 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1058 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) |
1061 return; | 1059 return; |
1062 | 1060 |
1063 uint32 sync_point = 0; | 1061 uint32 sync_point = 0; |
1064 TextureMailbox mailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); | 1062 TextureMailbox mailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
1065 mailbox.set_allow_overlay(true); | 1063 mailbox.set_allow_overlay(true); |
1066 scoped_ptr<SingleReleaseCallbackImpl> release_callback = | 1064 scoped_ptr<SingleReleaseCallbackImpl> release_callback = |
1067 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); | 1065 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); |
1068 ResourceProvider::ResourceId id1 = | 1066 ResourceId id1 = child_resource_provider_->CreateResourceFromTextureMailbox( |
1069 child_resource_provider_->CreateResourceFromTextureMailbox( | 1067 mailbox, release_callback.Pass()); |
1070 mailbox, release_callback.Pass()); | |
1071 | 1068 |
1072 TextureMailbox mailbox2(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); | 1069 TextureMailbox mailbox2(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
1073 mailbox2.set_allow_overlay(false); | 1070 mailbox2.set_allow_overlay(false); |
1074 scoped_ptr<SingleReleaseCallbackImpl> release_callback2 = | 1071 scoped_ptr<SingleReleaseCallbackImpl> release_callback2 = |
1075 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); | 1072 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); |
1076 ResourceProvider::ResourceId id2 = | 1073 ResourceId id2 = child_resource_provider_->CreateResourceFromTextureMailbox( |
1077 child_resource_provider_->CreateResourceFromTextureMailbox( | 1074 mailbox2, release_callback2.Pass()); |
1078 mailbox2, release_callback2.Pass()); | |
1079 | 1075 |
1080 ReturnedResourceArray returned_to_child; | 1076 ReturnedResourceArray returned_to_child; |
1081 int child_id = | 1077 int child_id = |
1082 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1078 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1083 | 1079 |
1084 // Transfer some resources to the parent. | 1080 // Transfer some resources to the parent. |
1085 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1081 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1086 resource_ids_to_transfer.push_back(id1); | 1082 resource_ids_to_transfer.push_back(id1); |
1087 resource_ids_to_transfer.push_back(id2); | 1083 resource_ids_to_transfer.push_back(id2); |
1088 TransferableResourceArray list; | 1084 TransferableResourceArray list; |
(...skipping 19 matching lines...) Expand all Loading... |
1108 | 1104 |
1109 TEST_P(ResourceProviderTest, TransferSoftwareResources) { | 1105 TEST_P(ResourceProviderTest, TransferSoftwareResources) { |
1110 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) | 1106 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) |
1111 return; | 1107 return; |
1112 | 1108 |
1113 gfx::Size size(1, 1); | 1109 gfx::Size size(1, 1); |
1114 ResourceFormat format = RGBA_8888; | 1110 ResourceFormat format = RGBA_8888; |
1115 size_t pixel_size = TextureSizeBytes(size, format); | 1111 size_t pixel_size = TextureSizeBytes(size, format); |
1116 ASSERT_EQ(4U, pixel_size); | 1112 ASSERT_EQ(4U, pixel_size); |
1117 | 1113 |
1118 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1114 ResourceId id1 = child_resource_provider_->CreateResource( |
1119 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1115 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1120 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1116 uint8_t data1[4] = { 1, 2, 3, 4 }; |
1121 child_resource_provider_->CopyToResource(id1, data1, size); | 1117 child_resource_provider_->CopyToResource(id1, data1, size); |
1122 | 1118 |
1123 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1119 ResourceId id2 = child_resource_provider_->CreateResource( |
1124 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1120 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1125 uint8_t data2[4] = { 5, 5, 5, 5 }; | 1121 uint8_t data2[4] = { 5, 5, 5, 5 }; |
1126 child_resource_provider_->CopyToResource(id2, data2, size); | 1122 child_resource_provider_->CopyToResource(id2, data2, size); |
1127 | 1123 |
1128 scoped_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( | 1124 scoped_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( |
1129 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); | 1125 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); |
1130 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); | 1126 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); |
1131 ResourceProvider::ResourceId id3 = | 1127 ResourceId id3 = child_resource_provider_->CreateResourceFromTextureMailbox( |
1132 child_resource_provider_->CreateResourceFromTextureMailbox( | 1128 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), |
1133 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), | 1129 SingleReleaseCallbackImpl::Create(base::Bind( |
1134 SingleReleaseCallbackImpl::Create(base::Bind( | 1130 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); |
1135 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); | |
1136 | 1131 |
1137 ReturnedResourceArray returned_to_child; | 1132 ReturnedResourceArray returned_to_child; |
1138 int child_id = | 1133 int child_id = |
1139 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1134 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1140 { | 1135 { |
1141 // Transfer some resources to the parent. | 1136 // Transfer some resources to the parent. |
1142 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1137 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1143 resource_ids_to_transfer.push_back(id1); | 1138 resource_ids_to_transfer.push_back(id1); |
1144 resource_ids_to_transfer.push_back(id2); | 1139 resource_ids_to_transfer.push_back(id2); |
1145 resource_ids_to_transfer.push_back(id3); | 1140 resource_ids_to_transfer.push_back(id3); |
(...skipping 12 matching lines...) Expand all Loading... |
1158 resource_ids_to_receive.insert(id1); | 1153 resource_ids_to_receive.insert(id1); |
1159 resource_ids_to_receive.insert(id2); | 1154 resource_ids_to_receive.insert(id2); |
1160 resource_ids_to_receive.insert(id3); | 1155 resource_ids_to_receive.insert(id3); |
1161 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1156 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1162 resource_ids_to_receive); | 1157 resource_ids_to_receive); |
1163 } | 1158 } |
1164 | 1159 |
1165 EXPECT_EQ(3u, resource_provider_->num_resources()); | 1160 EXPECT_EQ(3u, resource_provider_->num_resources()); |
1166 ResourceProvider::ResourceIdMap resource_map = | 1161 ResourceProvider::ResourceIdMap resource_map = |
1167 resource_provider_->GetChildToParentMap(child_id); | 1162 resource_provider_->GetChildToParentMap(child_id); |
1168 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 1163 ResourceId mapped_id1 = resource_map[id1]; |
1169 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; | 1164 ResourceId mapped_id2 = resource_map[id2]; |
1170 ResourceProvider::ResourceId mapped_id3 = resource_map[id3]; | 1165 ResourceId mapped_id3 = resource_map[id3]; |
1171 EXPECT_NE(0u, mapped_id1); | 1166 EXPECT_NE(0u, mapped_id1); |
1172 EXPECT_NE(0u, mapped_id2); | 1167 EXPECT_NE(0u, mapped_id2); |
1173 EXPECT_NE(0u, mapped_id3); | 1168 EXPECT_NE(0u, mapped_id3); |
1174 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); | 1169 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); |
1175 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); | 1170 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); |
1176 EXPECT_FALSE(resource_provider_->InUseByConsumer(id3)); | 1171 EXPECT_FALSE(resource_provider_->InUseByConsumer(id3)); |
1177 | 1172 |
1178 uint8_t result[4] = { 0 }; | 1173 uint8_t result[4] = { 0 }; |
1179 GetResourcePixels( | 1174 GetResourcePixels( |
1180 resource_provider_.get(), context(), mapped_id1, size, format, result); | 1175 resource_provider_.get(), context(), mapped_id1, size, format, result); |
(...skipping 28 matching lines...) Expand all Loading... |
1209 | 1204 |
1210 // Transfer resources back from the parent to the child. Set no resources as | 1205 // Transfer resources back from the parent to the child. Set no resources as |
1211 // being in use. | 1206 // being in use. |
1212 ResourceProvider::ResourceIdSet no_resources; | 1207 ResourceProvider::ResourceIdSet no_resources; |
1213 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1208 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
1214 | 1209 |
1215 ASSERT_EQ(3u, returned_to_child.size()); | 1210 ASSERT_EQ(3u, returned_to_child.size()); |
1216 EXPECT_EQ(0u, returned_to_child[0].sync_point); | 1211 EXPECT_EQ(0u, returned_to_child[0].sync_point); |
1217 EXPECT_EQ(0u, returned_to_child[1].sync_point); | 1212 EXPECT_EQ(0u, returned_to_child[1].sync_point); |
1218 EXPECT_EQ(0u, returned_to_child[2].sync_point); | 1213 EXPECT_EQ(0u, returned_to_child[2].sync_point); |
1219 std::set<ResourceProvider::ResourceId> expected_ids; | 1214 std::set<ResourceId> expected_ids; |
1220 expected_ids.insert(id1); | 1215 expected_ids.insert(id1); |
1221 expected_ids.insert(id2); | 1216 expected_ids.insert(id2); |
1222 expected_ids.insert(id3); | 1217 expected_ids.insert(id3); |
1223 std::set<ResourceProvider::ResourceId> returned_ids; | 1218 std::set<ResourceId> returned_ids; |
1224 for (unsigned i = 0; i < 3; i++) | 1219 for (unsigned i = 0; i < 3; i++) |
1225 returned_ids.insert(returned_to_child[i].id); | 1220 returned_ids.insert(returned_to_child[i].id); |
1226 EXPECT_EQ(expected_ids, returned_ids); | 1221 EXPECT_EQ(expected_ids, returned_ids); |
1227 EXPECT_FALSE(returned_to_child[0].lost); | 1222 EXPECT_FALSE(returned_to_child[0].lost); |
1228 EXPECT_FALSE(returned_to_child[1].lost); | 1223 EXPECT_FALSE(returned_to_child[1].lost); |
1229 EXPECT_FALSE(returned_to_child[2].lost); | 1224 EXPECT_FALSE(returned_to_child[2].lost); |
1230 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1225 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
1231 returned_to_child.clear(); | 1226 returned_to_child.clear(); |
1232 } | 1227 } |
1233 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id1)); | 1228 EXPECT_FALSE(child_resource_provider_->InUseByConsumer(id1)); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1278 EXPECT_EQ(0u, returned_to_child.size()); | 1273 EXPECT_EQ(0u, returned_to_child.size()); |
1279 | 1274 |
1280 EXPECT_EQ(3u, resource_provider_->num_resources()); | 1275 EXPECT_EQ(3u, resource_provider_->num_resources()); |
1281 resource_provider_->DestroyChild(child_id); | 1276 resource_provider_->DestroyChild(child_id); |
1282 EXPECT_EQ(0u, resource_provider_->num_resources()); | 1277 EXPECT_EQ(0u, resource_provider_->num_resources()); |
1283 | 1278 |
1284 ASSERT_EQ(3u, returned_to_child.size()); | 1279 ASSERT_EQ(3u, returned_to_child.size()); |
1285 EXPECT_EQ(0u, returned_to_child[0].sync_point); | 1280 EXPECT_EQ(0u, returned_to_child[0].sync_point); |
1286 EXPECT_EQ(0u, returned_to_child[1].sync_point); | 1281 EXPECT_EQ(0u, returned_to_child[1].sync_point); |
1287 EXPECT_EQ(0u, returned_to_child[2].sync_point); | 1282 EXPECT_EQ(0u, returned_to_child[2].sync_point); |
1288 std::set<ResourceProvider::ResourceId> expected_ids; | 1283 std::set<ResourceId> expected_ids; |
1289 expected_ids.insert(id1); | 1284 expected_ids.insert(id1); |
1290 expected_ids.insert(id2); | 1285 expected_ids.insert(id2); |
1291 expected_ids.insert(id3); | 1286 expected_ids.insert(id3); |
1292 std::set<ResourceProvider::ResourceId> returned_ids; | 1287 std::set<ResourceId> returned_ids; |
1293 for (unsigned i = 0; i < 3; i++) | 1288 for (unsigned i = 0; i < 3; i++) |
1294 returned_ids.insert(returned_to_child[i].id); | 1289 returned_ids.insert(returned_to_child[i].id); |
1295 EXPECT_EQ(expected_ids, returned_ids); | 1290 EXPECT_EQ(expected_ids, returned_ids); |
1296 EXPECT_FALSE(returned_to_child[0].lost); | 1291 EXPECT_FALSE(returned_to_child[0].lost); |
1297 EXPECT_FALSE(returned_to_child[1].lost); | 1292 EXPECT_FALSE(returned_to_child[1].lost); |
1298 EXPECT_FALSE(returned_to_child[2].lost); | 1293 EXPECT_FALSE(returned_to_child[2].lost); |
1299 } | 1294 } |
1300 | 1295 |
1301 TEST_P(ResourceProviderTest, TransferGLToSoftware) { | 1296 TEST_P(ResourceProviderTest, TransferGLToSoftware) { |
1302 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) | 1297 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) |
(...skipping 14 matching lines...) Expand all Loading... |
1317 NULL, | 1312 NULL, |
1318 0, | 1313 0, |
1319 false, | 1314 false, |
1320 1)); | 1315 1)); |
1321 | 1316 |
1322 gfx::Size size(1, 1); | 1317 gfx::Size size(1, 1); |
1323 ResourceFormat format = RGBA_8888; | 1318 ResourceFormat format = RGBA_8888; |
1324 size_t pixel_size = TextureSizeBytes(size, format); | 1319 size_t pixel_size = TextureSizeBytes(size, format); |
1325 ASSERT_EQ(4U, pixel_size); | 1320 ASSERT_EQ(4U, pixel_size); |
1326 | 1321 |
1327 ResourceProvider::ResourceId id1 = child_resource_provider->CreateResource( | 1322 ResourceId id1 = child_resource_provider->CreateResource( |
1328 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1323 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1329 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1324 uint8_t data1[4] = { 1, 2, 3, 4 }; |
1330 child_resource_provider->CopyToResource(id1, data1, size); | 1325 child_resource_provider->CopyToResource(id1, data1, size); |
1331 | 1326 |
1332 ReturnedResourceArray returned_to_child; | 1327 ReturnedResourceArray returned_to_child; |
1333 int child_id = | 1328 int child_id = |
1334 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1329 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1335 { | 1330 { |
1336 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1331 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1337 resource_ids_to_transfer.push_back(id1); | 1332 resource_ids_to_transfer.push_back(id1); |
1338 TransferableResourceArray list; | 1333 TransferableResourceArray list; |
1339 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, | 1334 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, |
1340 &list); | 1335 &list); |
1341 ASSERT_EQ(1u, list.size()); | 1336 ASSERT_EQ(1u, list.size()); |
1342 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); | 1337 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); |
1343 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), | 1338 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), |
1344 list[0].mailbox_holder.texture_target); | 1339 list[0].mailbox_holder.texture_target); |
1345 EXPECT_TRUE(child_resource_provider->InUseByConsumer(id1)); | 1340 EXPECT_TRUE(child_resource_provider->InUseByConsumer(id1)); |
1346 resource_provider_->ReceiveFromChild(child_id, list); | 1341 resource_provider_->ReceiveFromChild(child_id, list); |
1347 } | 1342 } |
1348 | 1343 |
1349 EXPECT_EQ(0u, resource_provider_->num_resources()); | 1344 EXPECT_EQ(0u, resource_provider_->num_resources()); |
1350 ASSERT_EQ(1u, returned_to_child.size()); | 1345 ASSERT_EQ(1u, returned_to_child.size()); |
1351 EXPECT_EQ(returned_to_child[0].id, id1); | 1346 EXPECT_EQ(returned_to_child[0].id, id1); |
1352 ResourceProvider::ResourceIdMap resource_map = | 1347 ResourceProvider::ResourceIdMap resource_map = |
1353 resource_provider_->GetChildToParentMap(child_id); | 1348 resource_provider_->GetChildToParentMap(child_id); |
1354 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 1349 ResourceId mapped_id1 = resource_map[id1]; |
1355 EXPECT_EQ(0u, mapped_id1); | 1350 EXPECT_EQ(0u, mapped_id1); |
1356 | 1351 |
1357 resource_provider_->DestroyChild(child_id); | 1352 resource_provider_->DestroyChild(child_id); |
1358 EXPECT_EQ(0u, resource_provider_->num_resources()); | 1353 EXPECT_EQ(0u, resource_provider_->num_resources()); |
1359 | 1354 |
1360 ASSERT_EQ(1u, returned_to_child.size()); | 1355 ASSERT_EQ(1u, returned_to_child.size()); |
1361 EXPECT_FALSE(returned_to_child[0].lost); | 1356 EXPECT_FALSE(returned_to_child[0].lost); |
1362 } | 1357 } |
1363 | 1358 |
1364 TEST_P(ResourceProviderTest, TransferInvalidSoftware) { | 1359 TEST_P(ResourceProviderTest, TransferInvalidSoftware) { |
1365 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) | 1360 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) |
1366 return; | 1361 return; |
1367 | 1362 |
1368 gfx::Size size(1, 1); | 1363 gfx::Size size(1, 1); |
1369 ResourceFormat format = RGBA_8888; | 1364 ResourceFormat format = RGBA_8888; |
1370 size_t pixel_size = TextureSizeBytes(size, format); | 1365 size_t pixel_size = TextureSizeBytes(size, format); |
1371 ASSERT_EQ(4U, pixel_size); | 1366 ASSERT_EQ(4U, pixel_size); |
1372 | 1367 |
1373 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1368 ResourceId id1 = child_resource_provider_->CreateResource( |
1374 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1369 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1375 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1370 uint8_t data1[4] = { 1, 2, 3, 4 }; |
1376 child_resource_provider_->CopyToResource(id1, data1, size); | 1371 child_resource_provider_->CopyToResource(id1, data1, size); |
1377 | 1372 |
1378 ReturnedResourceArray returned_to_child; | 1373 ReturnedResourceArray returned_to_child; |
1379 int child_id = | 1374 int child_id = |
1380 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1375 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1381 { | 1376 { |
1382 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1377 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1383 resource_ids_to_transfer.push_back(id1); | 1378 resource_ids_to_transfer.push_back(id1); |
1384 TransferableResourceArray list; | 1379 TransferableResourceArray list; |
1385 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1380 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1386 &list); | 1381 &list); |
1387 ASSERT_EQ(1u, list.size()); | 1382 ASSERT_EQ(1u, list.size()); |
1388 // Make invalid. | 1383 // Make invalid. |
1389 list[0].mailbox_holder.mailbox.name[1] = 5; | 1384 list[0].mailbox_holder.mailbox.name[1] = 5; |
1390 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1385 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
1391 resource_provider_->ReceiveFromChild(child_id, list); | 1386 resource_provider_->ReceiveFromChild(child_id, list); |
1392 } | 1387 } |
1393 | 1388 |
1394 EXPECT_EQ(1u, resource_provider_->num_resources()); | 1389 EXPECT_EQ(1u, resource_provider_->num_resources()); |
1395 EXPECT_EQ(0u, returned_to_child.size()); | 1390 EXPECT_EQ(0u, returned_to_child.size()); |
1396 | 1391 |
1397 ResourceProvider::ResourceIdMap resource_map = | 1392 ResourceProvider::ResourceIdMap resource_map = |
1398 resource_provider_->GetChildToParentMap(child_id); | 1393 resource_provider_->GetChildToParentMap(child_id); |
1399 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 1394 ResourceId mapped_id1 = resource_map[id1]; |
1400 EXPECT_NE(0u, mapped_id1); | 1395 EXPECT_NE(0u, mapped_id1); |
1401 { | 1396 { |
1402 ResourceProvider::ScopedReadLockSoftware lock(resource_provider_.get(), | 1397 ResourceProvider::ScopedReadLockSoftware lock(resource_provider_.get(), |
1403 mapped_id1); | 1398 mapped_id1); |
1404 EXPECT_FALSE(lock.valid()); | 1399 EXPECT_FALSE(lock.valid()); |
1405 } | 1400 } |
1406 | 1401 |
1407 resource_provider_->DestroyChild(child_id); | 1402 resource_provider_->DestroyChild(child_id); |
1408 EXPECT_EQ(0u, resource_provider_->num_resources()); | 1403 EXPECT_EQ(0u, resource_provider_->num_resources()); |
1409 | 1404 |
1410 ASSERT_EQ(1u, returned_to_child.size()); | 1405 ASSERT_EQ(1u, returned_to_child.size()); |
1411 EXPECT_FALSE(returned_to_child[0].lost); | 1406 EXPECT_FALSE(returned_to_child[0].lost); |
1412 } | 1407 } |
1413 | 1408 |
1414 TEST_P(ResourceProviderTest, DeleteExportedResources) { | 1409 TEST_P(ResourceProviderTest, DeleteExportedResources) { |
1415 gfx::Size size(1, 1); | 1410 gfx::Size size(1, 1); |
1416 ResourceFormat format = RGBA_8888; | 1411 ResourceFormat format = RGBA_8888; |
1417 size_t pixel_size = TextureSizeBytes(size, format); | 1412 size_t pixel_size = TextureSizeBytes(size, format); |
1418 ASSERT_EQ(4U, pixel_size); | 1413 ASSERT_EQ(4U, pixel_size); |
1419 | 1414 |
1420 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1415 ResourceId id1 = child_resource_provider_->CreateResource( |
1421 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1416 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1422 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1417 uint8_t data1[4] = { 1, 2, 3, 4 }; |
1423 child_resource_provider_->CopyToResource(id1, data1, size); | 1418 child_resource_provider_->CopyToResource(id1, data1, size); |
1424 | 1419 |
1425 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1420 ResourceId id2 = child_resource_provider_->CreateResource( |
1426 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1421 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1427 uint8_t data2[4] = {5, 5, 5, 5}; | 1422 uint8_t data2[4] = {5, 5, 5, 5}; |
1428 child_resource_provider_->CopyToResource(id2, data2, size); | 1423 child_resource_provider_->CopyToResource(id2, data2, size); |
1429 | 1424 |
1430 ReturnedResourceArray returned_to_child; | 1425 ReturnedResourceArray returned_to_child; |
1431 int child_id = | 1426 int child_id = |
1432 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1427 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1433 { | 1428 { |
1434 // Transfer some resources to the parent. | 1429 // Transfer some resources to the parent. |
1435 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1430 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
(...skipping 13 matching lines...) Expand all Loading... |
1449 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1444 ResourceProvider::ResourceIdSet resource_ids_to_receive; |
1450 resource_ids_to_receive.insert(id1); | 1445 resource_ids_to_receive.insert(id1); |
1451 resource_ids_to_receive.insert(id2); | 1446 resource_ids_to_receive.insert(id2); |
1452 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1447 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1453 resource_ids_to_receive); | 1448 resource_ids_to_receive); |
1454 } | 1449 } |
1455 | 1450 |
1456 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1451 EXPECT_EQ(2u, resource_provider_->num_resources()); |
1457 ResourceProvider::ResourceIdMap resource_map = | 1452 ResourceProvider::ResourceIdMap resource_map = |
1458 resource_provider_->GetChildToParentMap(child_id); | 1453 resource_provider_->GetChildToParentMap(child_id); |
1459 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 1454 ResourceId mapped_id1 = resource_map[id1]; |
1460 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; | 1455 ResourceId mapped_id2 = resource_map[id2]; |
1461 EXPECT_NE(0u, mapped_id1); | 1456 EXPECT_NE(0u, mapped_id1); |
1462 EXPECT_NE(0u, mapped_id2); | 1457 EXPECT_NE(0u, mapped_id2); |
1463 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); | 1458 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); |
1464 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); | 1459 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); |
1465 | 1460 |
1466 { | 1461 { |
1467 // The parent transfers the resources to the grandparent. | 1462 // The parent transfers the resources to the grandparent. |
1468 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1463 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1469 resource_ids_to_transfer.push_back(mapped_id1); | 1464 resource_ids_to_transfer.push_back(mapped_id1); |
1470 resource_ids_to_transfer.push_back(mapped_id2); | 1465 resource_ids_to_transfer.push_back(mapped_id2); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1506 EXPECT_FALSE(returned_to_child[1].lost); | 1501 EXPECT_FALSE(returned_to_child[1].lost); |
1507 } | 1502 } |
1508 } | 1503 } |
1509 | 1504 |
1510 TEST_P(ResourceProviderTest, DestroyChildWithExportedResources) { | 1505 TEST_P(ResourceProviderTest, DestroyChildWithExportedResources) { |
1511 gfx::Size size(1, 1); | 1506 gfx::Size size(1, 1); |
1512 ResourceFormat format = RGBA_8888; | 1507 ResourceFormat format = RGBA_8888; |
1513 size_t pixel_size = TextureSizeBytes(size, format); | 1508 size_t pixel_size = TextureSizeBytes(size, format); |
1514 ASSERT_EQ(4U, pixel_size); | 1509 ASSERT_EQ(4U, pixel_size); |
1515 | 1510 |
1516 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1511 ResourceId id1 = child_resource_provider_->CreateResource( |
1517 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1512 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1518 uint8_t data1[4] = {1, 2, 3, 4}; | 1513 uint8_t data1[4] = {1, 2, 3, 4}; |
1519 child_resource_provider_->CopyToResource(id1, data1, size); | 1514 child_resource_provider_->CopyToResource(id1, data1, size); |
1520 | 1515 |
1521 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1516 ResourceId id2 = child_resource_provider_->CreateResource( |
1522 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1517 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1523 uint8_t data2[4] = {5, 5, 5, 5}; | 1518 uint8_t data2[4] = {5, 5, 5, 5}; |
1524 child_resource_provider_->CopyToResource(id2, data2, size); | 1519 child_resource_provider_->CopyToResource(id2, data2, size); |
1525 | 1520 |
1526 ReturnedResourceArray returned_to_child; | 1521 ReturnedResourceArray returned_to_child; |
1527 int child_id = | 1522 int child_id = |
1528 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1523 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1529 { | 1524 { |
1530 // Transfer some resources to the parent. | 1525 // Transfer some resources to the parent. |
1531 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1526 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
(...skipping 13 matching lines...) Expand all Loading... |
1545 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1540 ResourceProvider::ResourceIdSet resource_ids_to_receive; |
1546 resource_ids_to_receive.insert(id1); | 1541 resource_ids_to_receive.insert(id1); |
1547 resource_ids_to_receive.insert(id2); | 1542 resource_ids_to_receive.insert(id2); |
1548 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1543 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1549 resource_ids_to_receive); | 1544 resource_ids_to_receive); |
1550 } | 1545 } |
1551 | 1546 |
1552 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1547 EXPECT_EQ(2u, resource_provider_->num_resources()); |
1553 ResourceProvider::ResourceIdMap resource_map = | 1548 ResourceProvider::ResourceIdMap resource_map = |
1554 resource_provider_->GetChildToParentMap(child_id); | 1549 resource_provider_->GetChildToParentMap(child_id); |
1555 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 1550 ResourceId mapped_id1 = resource_map[id1]; |
1556 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; | 1551 ResourceId mapped_id2 = resource_map[id2]; |
1557 EXPECT_NE(0u, mapped_id1); | 1552 EXPECT_NE(0u, mapped_id1); |
1558 EXPECT_NE(0u, mapped_id2); | 1553 EXPECT_NE(0u, mapped_id2); |
1559 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); | 1554 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); |
1560 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); | 1555 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); |
1561 | 1556 |
1562 { | 1557 { |
1563 // The parent transfers the resources to the grandparent. | 1558 // The parent transfers the resources to the grandparent. |
1564 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1559 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1565 resource_ids_to_transfer.push_back(mapped_id1); | 1560 resource_ids_to_transfer.push_back(mapped_id1); |
1566 resource_ids_to_transfer.push_back(mapped_id2); | 1561 resource_ids_to_transfer.push_back(mapped_id2); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1619 EXPECT_TRUE(returned_to_child[0].lost); | 1614 EXPECT_TRUE(returned_to_child[0].lost); |
1620 } | 1615 } |
1621 } | 1616 } |
1622 | 1617 |
1623 TEST_P(ResourceProviderTest, DeleteTransferredResources) { | 1618 TEST_P(ResourceProviderTest, DeleteTransferredResources) { |
1624 gfx::Size size(1, 1); | 1619 gfx::Size size(1, 1); |
1625 ResourceFormat format = RGBA_8888; | 1620 ResourceFormat format = RGBA_8888; |
1626 size_t pixel_size = TextureSizeBytes(size, format); | 1621 size_t pixel_size = TextureSizeBytes(size, format); |
1627 ASSERT_EQ(4U, pixel_size); | 1622 ASSERT_EQ(4U, pixel_size); |
1628 | 1623 |
1629 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( | 1624 ResourceId id = child_resource_provider_->CreateResource( |
1630 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1625 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1631 uint8_t data[4] = { 1, 2, 3, 4 }; | 1626 uint8_t data[4] = { 1, 2, 3, 4 }; |
1632 child_resource_provider_->CopyToResource(id, data, size); | 1627 child_resource_provider_->CopyToResource(id, data, size); |
1633 | 1628 |
1634 ReturnedResourceArray returned_to_child; | 1629 ReturnedResourceArray returned_to_child; |
1635 int child_id = | 1630 int child_id = |
1636 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1631 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1637 { | 1632 { |
1638 // Transfer some resource to the parent. | 1633 // Transfer some resource to the parent. |
1639 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1634 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
(...skipping 30 matching lines...) Expand all Loading... |
1670 } | 1665 } |
1671 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 1666 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
1672 } | 1667 } |
1673 | 1668 |
1674 TEST_P(ResourceProviderTest, UnuseTransferredResources) { | 1669 TEST_P(ResourceProviderTest, UnuseTransferredResources) { |
1675 gfx::Size size(1, 1); | 1670 gfx::Size size(1, 1); |
1676 ResourceFormat format = RGBA_8888; | 1671 ResourceFormat format = RGBA_8888; |
1677 size_t pixel_size = TextureSizeBytes(size, format); | 1672 size_t pixel_size = TextureSizeBytes(size, format); |
1678 ASSERT_EQ(4U, pixel_size); | 1673 ASSERT_EQ(4U, pixel_size); |
1679 | 1674 |
1680 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( | 1675 ResourceId id = child_resource_provider_->CreateResource( |
1681 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1676 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
1682 uint8_t data[4] = {1, 2, 3, 4}; | 1677 uint8_t data[4] = {1, 2, 3, 4}; |
1683 child_resource_provider_->CopyToResource(id, data, size); | 1678 child_resource_provider_->CopyToResource(id, data, size); |
1684 | 1679 |
1685 ReturnedResourceArray returned_to_child; | 1680 ReturnedResourceArray returned_to_child; |
1686 int child_id = | 1681 int child_id = |
1687 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1682 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
1688 const ResourceProvider::ResourceIdMap& map = | 1683 const ResourceProvider::ResourceIdMap& map = |
1689 resource_provider_->GetChildToParentMap(child_id); | 1684 resource_provider_->GetChildToParentMap(child_id); |
1690 { | 1685 { |
1691 // Transfer some resource to the parent. | 1686 // Transfer some resource to the parent. |
1692 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1687 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1693 resource_ids_to_transfer.push_back(id); | 1688 resource_ids_to_transfer.push_back(id); |
1694 TransferableResourceArray list; | 1689 TransferableResourceArray list; |
1695 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1690 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1696 &list); | 1691 &list); |
1697 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 1692 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
1698 resource_provider_->ReceiveFromChild(child_id, list); | 1693 resource_provider_->ReceiveFromChild(child_id, list); |
1699 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1694 ResourceProvider::ResourceIdSet resource_ids_to_receive; |
1700 resource_ids_to_receive.insert(id); | 1695 resource_ids_to_receive.insert(id); |
1701 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1696 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
1702 resource_ids_to_receive); | 1697 resource_ids_to_receive); |
1703 } | 1698 } |
1704 TransferableResourceArray sent_to_top_level; | 1699 TransferableResourceArray sent_to_top_level; |
1705 { | 1700 { |
1706 // Parent transfers to top-level. | 1701 // Parent transfers to top-level. |
1707 ASSERT_TRUE(map.find(id) != map.end()); | 1702 ASSERT_TRUE(map.find(id) != map.end()); |
1708 ResourceProvider::ResourceId parent_id = map.find(id)->second; | 1703 ResourceId parent_id = map.find(id)->second; |
1709 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1704 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1710 resource_ids_to_transfer.push_back(parent_id); | 1705 resource_ids_to_transfer.push_back(parent_id); |
1711 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1706 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1712 &sent_to_top_level); | 1707 &sent_to_top_level); |
1713 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); | 1708 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); |
1714 } | 1709 } |
1715 { | 1710 { |
1716 // Stop using resource. | 1711 // Stop using resource. |
1717 ResourceProvider::ResourceIdSet empty; | 1712 ResourceProvider::ResourceIdSet empty; |
1718 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); | 1713 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); |
(...skipping 17 matching lines...) Expand all Loading... |
1736 } | 1731 } |
1737 { | 1732 { |
1738 // Receive returns back from top-level. | 1733 // Receive returns back from top-level. |
1739 ReturnedResourceArray returned; | 1734 ReturnedResourceArray returned; |
1740 TransferableResource::ReturnResources(sent_to_top_level, &returned); | 1735 TransferableResource::ReturnResources(sent_to_top_level, &returned); |
1741 resource_provider_->ReceiveReturnsFromParent(returned); | 1736 resource_provider_->ReceiveReturnsFromParent(returned); |
1742 // Resource is still not yet returned to the child, since it's declared used | 1737 // Resource is still not yet returned to the child, since it's declared used |
1743 // in the parent. | 1738 // in the parent. |
1744 EXPECT_TRUE(returned_to_child.empty()); | 1739 EXPECT_TRUE(returned_to_child.empty()); |
1745 ASSERT_TRUE(map.find(id) != map.end()); | 1740 ASSERT_TRUE(map.find(id) != map.end()); |
1746 ResourceProvider::ResourceId parent_id = map.find(id)->second; | 1741 ResourceId parent_id = map.find(id)->second; |
1747 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); | 1742 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); |
1748 } | 1743 } |
1749 { | 1744 { |
1750 sent_to_top_level.clear(); | 1745 sent_to_top_level.clear(); |
1751 // Parent transfers again to top-level. | 1746 // Parent transfers again to top-level. |
1752 ASSERT_TRUE(map.find(id) != map.end()); | 1747 ASSERT_TRUE(map.find(id) != map.end()); |
1753 ResourceProvider::ResourceId parent_id = map.find(id)->second; | 1748 ResourceId parent_id = map.find(id)->second; |
1754 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1749 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
1755 resource_ids_to_transfer.push_back(parent_id); | 1750 resource_ids_to_transfer.push_back(parent_id); |
1756 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1751 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
1757 &sent_to_top_level); | 1752 &sent_to_top_level); |
1758 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); | 1753 EXPECT_TRUE(resource_provider_->InUseByConsumer(parent_id)); |
1759 } | 1754 } |
1760 { | 1755 { |
1761 // Receive returns back from top-level. | 1756 // Receive returns back from top-level. |
1762 ReturnedResourceArray returned; | 1757 ReturnedResourceArray returned; |
1763 TransferableResource::ReturnResources(sent_to_top_level, &returned); | 1758 TransferableResource::ReturnResources(sent_to_top_level, &returned); |
1764 resource_provider_->ReceiveReturnsFromParent(returned); | 1759 resource_provider_->ReceiveReturnsFromParent(returned); |
1765 // Resource is still not yet returned to the child, since it's still | 1760 // Resource is still not yet returned to the child, since it's still |
1766 // declared used in the parent. | 1761 // declared used in the parent. |
1767 EXPECT_TRUE(returned_to_child.empty()); | 1762 EXPECT_TRUE(returned_to_child.empty()); |
1768 ASSERT_TRUE(map.find(id) != map.end()); | 1763 ASSERT_TRUE(map.find(id) != map.end()); |
1769 ResourceProvider::ResourceId parent_id = map.find(id)->second; | 1764 ResourceId parent_id = map.find(id)->second; |
1770 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); | 1765 EXPECT_FALSE(resource_provider_->InUseByConsumer(parent_id)); |
1771 } | 1766 } |
1772 { | 1767 { |
1773 // Stop using resource. | 1768 // Stop using resource. |
1774 ResourceProvider::ResourceIdSet empty; | 1769 ResourceProvider::ResourceIdSet empty; |
1775 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); | 1770 resource_provider_->DeclareUsedResourcesFromChild(child_id, empty); |
1776 // Resource should have been returned to the child, since it's no longer in | 1771 // Resource should have been returned to the child, since it's no longer in |
1777 // use by the top-level. | 1772 // use by the top-level. |
1778 ASSERT_EQ(1u, returned_to_child.size()); | 1773 ASSERT_EQ(1u, returned_to_child.size()); |
1779 EXPECT_EQ(id, returned_to_child[0].id); | 1774 EXPECT_EQ(id, returned_to_child[0].id); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1826 1)); | 1821 1)); |
1827 | 1822 |
1828 gfx::Size size(1, 1); | 1823 gfx::Size size(1, 1); |
1829 ResourceFormat format = RGBA_8888; | 1824 ResourceFormat format = RGBA_8888; |
1830 int child_texture_id = 1; | 1825 int child_texture_id = 1; |
1831 int parent_texture_id = 2; | 1826 int parent_texture_id = 2; |
1832 | 1827 |
1833 size_t pixel_size = TextureSizeBytes(size, format); | 1828 size_t pixel_size = TextureSizeBytes(size, format); |
1834 ASSERT_EQ(4U, pixel_size); | 1829 ASSERT_EQ(4U, pixel_size); |
1835 | 1830 |
1836 ResourceProvider::ResourceId id = child_resource_provider->CreateResource( | 1831 ResourceId id = child_resource_provider->CreateResource( |
1837 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 1832 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
1838 format); | 1833 format); |
1839 | 1834 |
1840 // The new texture is created with GL_LINEAR. | 1835 // The new texture is created with GL_LINEAR. |
1841 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)) | 1836 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)) |
1842 .Times(2); // Once to create and once to allocate. | 1837 .Times(2); // Once to create and once to allocate. |
1843 EXPECT_CALL(*child_context, | 1838 EXPECT_CALL(*child_context, |
1844 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 1839 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
1845 EXPECT_CALL(*child_context, | 1840 EXPECT_CALL(*child_context, |
1846 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 1841 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1908 Mock::VerifyAndClearExpectations(parent_context); | 1903 Mock::VerifyAndClearExpectations(parent_context); |
1909 | 1904 |
1910 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 1905 ResourceProvider::ResourceIdSet resource_ids_to_receive; |
1911 resource_ids_to_receive.insert(id); | 1906 resource_ids_to_receive.insert(id); |
1912 parent_resource_provider->DeclareUsedResourcesFromChild( | 1907 parent_resource_provider->DeclareUsedResourcesFromChild( |
1913 child_id, resource_ids_to_receive); | 1908 child_id, resource_ids_to_receive); |
1914 Mock::VerifyAndClearExpectations(parent_context); | 1909 Mock::VerifyAndClearExpectations(parent_context); |
1915 } | 1910 } |
1916 ResourceProvider::ResourceIdMap resource_map = | 1911 ResourceProvider::ResourceIdMap resource_map = |
1917 parent_resource_provider->GetChildToParentMap(child_id); | 1912 parent_resource_provider->GetChildToParentMap(child_id); |
1918 ResourceProvider::ResourceId mapped_id = resource_map[id]; | 1913 ResourceId mapped_id = resource_map[id]; |
1919 EXPECT_NE(0u, mapped_id); | 1914 EXPECT_NE(0u, mapped_id); |
1920 | 1915 |
1921 // The texture is set to |parent_filter| in the parent. | 1916 // The texture is set to |parent_filter| in the parent. |
1922 EXPECT_CALL(*parent_context, bindTexture(GL_TEXTURE_2D, parent_texture_id)); | 1917 EXPECT_CALL(*parent_context, bindTexture(GL_TEXTURE_2D, parent_texture_id)); |
1923 EXPECT_CALL( | 1918 EXPECT_CALL( |
1924 *parent_context, | 1919 *parent_context, |
1925 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, parent_filter)); | 1920 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, parent_filter)); |
1926 EXPECT_CALL( | 1921 EXPECT_CALL( |
1927 *parent_context, | 1922 *parent_context, |
1928 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, parent_filter)); | 1923 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, parent_filter)); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1990 // All the logic below assumes that the sync points are all positive. | 1985 // All the logic below assumes that the sync points are all positive. |
1991 EXPECT_LT(0u, sync_point); | 1986 EXPECT_LT(0u, sync_point); |
1992 | 1987 |
1993 uint32 release_sync_point = 0; | 1988 uint32 release_sync_point = 0; |
1994 bool lost_resource = false; | 1989 bool lost_resource = false; |
1995 BlockingTaskRunner* main_thread_task_runner = NULL; | 1990 BlockingTaskRunner* main_thread_task_runner = NULL; |
1996 ReleaseCallbackImpl callback = base::Bind(ReleaseCallback, | 1991 ReleaseCallbackImpl callback = base::Bind(ReleaseCallback, |
1997 &release_sync_point, | 1992 &release_sync_point, |
1998 &lost_resource, | 1993 &lost_resource, |
1999 &main_thread_task_runner); | 1994 &main_thread_task_runner); |
2000 ResourceProvider::ResourceId resource = | 1995 ResourceId resource = resource_provider_->CreateResourceFromTextureMailbox( |
2001 resource_provider_->CreateResourceFromTextureMailbox( | 1996 TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point), |
2002 TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point), | 1997 SingleReleaseCallbackImpl::Create(callback)); |
2003 SingleReleaseCallbackImpl::Create(callback)); | |
2004 EXPECT_EQ(1u, context()->NumTextures()); | 1998 EXPECT_EQ(1u, context()->NumTextures()); |
2005 EXPECT_EQ(0u, release_sync_point); | 1999 EXPECT_EQ(0u, release_sync_point); |
2006 { | 2000 { |
2007 // Transfer the resource, expect the sync points to be consistent. | 2001 // Transfer the resource, expect the sync points to be consistent. |
2008 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2002 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2009 resource_ids_to_transfer.push_back(resource); | 2003 resource_ids_to_transfer.push_back(resource); |
2010 TransferableResourceArray list; | 2004 TransferableResourceArray list; |
2011 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 2005 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
2012 ASSERT_EQ(1u, list.size()); | 2006 ASSERT_EQ(1u, list.size()); |
2013 EXPECT_LE(sync_point, list[0].mailbox_holder.sync_point); | 2007 EXPECT_LE(sync_point, list[0].mailbox_holder.sync_point); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2100 | 2094 |
2101 context()->waitSyncPoint(release_sync_point); | 2095 context()->waitSyncPoint(release_sync_point); |
2102 texture = | 2096 texture = |
2103 context()->createAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 2097 context()->createAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
2104 context()->deleteTexture(texture); | 2098 context()->deleteTexture(texture); |
2105 } | 2099 } |
2106 | 2100 |
2107 TEST_P(ResourceProviderTest, LostResourceInParent) { | 2101 TEST_P(ResourceProviderTest, LostResourceInParent) { |
2108 gfx::Size size(1, 1); | 2102 gfx::Size size(1, 1); |
2109 ResourceFormat format = RGBA_8888; | 2103 ResourceFormat format = RGBA_8888; |
2110 ResourceProvider::ResourceId resource = | 2104 ResourceId resource = child_resource_provider_->CreateResource( |
2111 child_resource_provider_->CreateResource( | 2105 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
2112 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | |
2113 format); | |
2114 child_resource_provider_->AllocateForTesting(resource); | 2106 child_resource_provider_->AllocateForTesting(resource); |
2115 // Expect a GL resource to be lost. | 2107 // Expect a GL resource to be lost. |
2116 bool should_lose_resource = | 2108 bool should_lose_resource = |
2117 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE; | 2109 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE; |
2118 | 2110 |
2119 ReturnedResourceArray returned_to_child; | 2111 ReturnedResourceArray returned_to_child; |
2120 int child_id = | 2112 int child_id = |
2121 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2113 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
2122 { | 2114 { |
2123 // Transfer the resource to the parent. | 2115 // Transfer the resource to the parent. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2157 EXPECT_EQ(should_lose_resource, child_resource_provider_->IsLost(resource)); | 2149 EXPECT_EQ(should_lose_resource, child_resource_provider_->IsLost(resource)); |
2158 | 2150 |
2159 // Lost resources stay in use in the parent forever. | 2151 // Lost resources stay in use in the parent forever. |
2160 EXPECT_EQ(should_lose_resource, | 2152 EXPECT_EQ(should_lose_resource, |
2161 child_resource_provider_->InUseByConsumer(resource)); | 2153 child_resource_provider_->InUseByConsumer(resource)); |
2162 } | 2154 } |
2163 | 2155 |
2164 TEST_P(ResourceProviderTest, LostResourceInGrandParent) { | 2156 TEST_P(ResourceProviderTest, LostResourceInGrandParent) { |
2165 gfx::Size size(1, 1); | 2157 gfx::Size size(1, 1); |
2166 ResourceFormat format = RGBA_8888; | 2158 ResourceFormat format = RGBA_8888; |
2167 ResourceProvider::ResourceId resource = | 2159 ResourceId resource = child_resource_provider_->CreateResource( |
2168 child_resource_provider_->CreateResource( | 2160 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
2169 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | |
2170 format); | |
2171 child_resource_provider_->AllocateForTesting(resource); | 2161 child_resource_provider_->AllocateForTesting(resource); |
2172 | 2162 |
2173 ReturnedResourceArray returned_to_child; | 2163 ReturnedResourceArray returned_to_child; |
2174 int child_id = | 2164 int child_id = |
2175 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2165 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
2176 { | 2166 { |
2177 // Transfer the resource to the parent. | 2167 // Transfer the resource to the parent. |
2178 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2168 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2179 resource_ids_to_transfer.push_back(resource); | 2169 resource_ids_to_transfer.push_back(resource); |
2180 TransferableResourceArray list; | 2170 TransferableResourceArray list; |
2181 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2171 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
2182 &list); | 2172 &list); |
2183 EXPECT_EQ(1u, list.size()); | 2173 EXPECT_EQ(1u, list.size()); |
2184 | 2174 |
2185 resource_provider_->ReceiveFromChild(child_id, list); | 2175 resource_provider_->ReceiveFromChild(child_id, list); |
2186 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2176 ResourceProvider::ResourceIdSet resource_ids_to_receive; |
2187 resource_ids_to_receive.insert(resource); | 2177 resource_ids_to_receive.insert(resource); |
2188 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2178 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
2189 resource_ids_to_receive); | 2179 resource_ids_to_receive); |
2190 } | 2180 } |
2191 | 2181 |
2192 { | 2182 { |
2193 ResourceProvider::ResourceIdMap resource_map = | 2183 ResourceProvider::ResourceIdMap resource_map = |
2194 resource_provider_->GetChildToParentMap(child_id); | 2184 resource_provider_->GetChildToParentMap(child_id); |
2195 ResourceProvider::ResourceId parent_resource = resource_map[resource]; | 2185 ResourceId parent_resource = resource_map[resource]; |
2196 EXPECT_NE(0u, parent_resource); | 2186 EXPECT_NE(0u, parent_resource); |
2197 | 2187 |
2198 // Transfer to a grandparent. | 2188 // Transfer to a grandparent. |
2199 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2189 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2200 resource_ids_to_transfer.push_back(parent_resource); | 2190 resource_ids_to_transfer.push_back(parent_resource); |
2201 TransferableResourceArray list; | 2191 TransferableResourceArray list; |
2202 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 2192 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
2203 | 2193 |
2204 // Receive back a lost resource from the grandparent. | 2194 // Receive back a lost resource from the grandparent. |
2205 EXPECT_EQ(1u, list.size()); | 2195 EXPECT_EQ(1u, list.size()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2238 | 2228 |
2239 // Lost resources stay in use in the parent forever. | 2229 // Lost resources stay in use in the parent forever. |
2240 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(resource)); | 2230 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(resource)); |
2241 } | 2231 } |
2242 | 2232 |
2243 TEST_P(ResourceProviderTest, LostMailboxInParent) { | 2233 TEST_P(ResourceProviderTest, LostMailboxInParent) { |
2244 uint32 release_sync_point = 0; | 2234 uint32 release_sync_point = 0; |
2245 bool lost_resource = false; | 2235 bool lost_resource = false; |
2246 bool release_called = false; | 2236 bool release_called = false; |
2247 uint32 sync_point = 0; | 2237 uint32 sync_point = 0; |
2248 ResourceProvider::ResourceId resource = CreateChildMailbox( | 2238 ResourceId resource = CreateChildMailbox(&release_sync_point, &lost_resource, |
2249 &release_sync_point, &lost_resource, &release_called, &sync_point); | 2239 &release_called, &sync_point); |
2250 | 2240 |
2251 ReturnedResourceArray returned_to_child; | 2241 ReturnedResourceArray returned_to_child; |
2252 int child_id = | 2242 int child_id = |
2253 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2243 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
2254 { | 2244 { |
2255 // Transfer the resource to the parent. | 2245 // Transfer the resource to the parent. |
2256 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2246 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2257 resource_ids_to_transfer.push_back(resource); | 2247 resource_ids_to_transfer.push_back(resource); |
2258 TransferableResourceArray list; | 2248 TransferableResourceArray list; |
2259 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2249 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2291 child_resource_provider_->DeleteResource(resource); | 2281 child_resource_provider_->DeleteResource(resource); |
2292 EXPECT_EQ(lost_resource, | 2282 EXPECT_EQ(lost_resource, |
2293 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); | 2283 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); |
2294 } | 2284 } |
2295 | 2285 |
2296 TEST_P(ResourceProviderTest, LostMailboxInGrandParent) { | 2286 TEST_P(ResourceProviderTest, LostMailboxInGrandParent) { |
2297 uint32 release_sync_point = 0; | 2287 uint32 release_sync_point = 0; |
2298 bool lost_resource = false; | 2288 bool lost_resource = false; |
2299 bool release_called = false; | 2289 bool release_called = false; |
2300 uint32 sync_point = 0; | 2290 uint32 sync_point = 0; |
2301 ResourceProvider::ResourceId resource = CreateChildMailbox( | 2291 ResourceId resource = CreateChildMailbox(&release_sync_point, &lost_resource, |
2302 &release_sync_point, &lost_resource, &release_called, &sync_point); | 2292 &release_called, &sync_point); |
2303 | 2293 |
2304 ReturnedResourceArray returned_to_child; | 2294 ReturnedResourceArray returned_to_child; |
2305 int child_id = | 2295 int child_id = |
2306 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2296 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
2307 { | 2297 { |
2308 // Transfer the resource to the parent. | 2298 // Transfer the resource to the parent. |
2309 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2299 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2310 resource_ids_to_transfer.push_back(resource); | 2300 resource_ids_to_transfer.push_back(resource); |
2311 TransferableResourceArray list; | 2301 TransferableResourceArray list; |
2312 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2302 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
2313 &list); | 2303 &list); |
2314 EXPECT_EQ(1u, list.size()); | 2304 EXPECT_EQ(1u, list.size()); |
2315 | 2305 |
2316 resource_provider_->ReceiveFromChild(child_id, list); | 2306 resource_provider_->ReceiveFromChild(child_id, list); |
2317 ResourceProvider::ResourceIdSet resource_ids_to_receive; | 2307 ResourceProvider::ResourceIdSet resource_ids_to_receive; |
2318 resource_ids_to_receive.insert(resource); | 2308 resource_ids_to_receive.insert(resource); |
2319 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 2309 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
2320 resource_ids_to_receive); | 2310 resource_ids_to_receive); |
2321 } | 2311 } |
2322 | 2312 |
2323 { | 2313 { |
2324 ResourceProvider::ResourceIdMap resource_map = | 2314 ResourceProvider::ResourceIdMap resource_map = |
2325 resource_provider_->GetChildToParentMap(child_id); | 2315 resource_provider_->GetChildToParentMap(child_id); |
2326 ResourceProvider::ResourceId parent_resource = resource_map[resource]; | 2316 ResourceId parent_resource = resource_map[resource]; |
2327 EXPECT_NE(0u, parent_resource); | 2317 EXPECT_NE(0u, parent_resource); |
2328 | 2318 |
2329 // Transfer to a grandparent. | 2319 // Transfer to a grandparent. |
2330 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2320 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2331 resource_ids_to_transfer.push_back(parent_resource); | 2321 resource_ids_to_transfer.push_back(parent_resource); |
2332 TransferableResourceArray list; | 2322 TransferableResourceArray list; |
2333 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 2323 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
2334 | 2324 |
2335 // Receive back a lost resource from the grandparent. | 2325 // Receive back a lost resource from the grandparent. |
2336 EXPECT_EQ(1u, list.size()); | 2326 EXPECT_EQ(1u, list.size()); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2381 } | 2371 } |
2382 EXPECT_TRUE(release_called); | 2372 EXPECT_TRUE(release_called); |
2383 EXPECT_FALSE(lost_resource); | 2373 EXPECT_FALSE(lost_resource); |
2384 } | 2374 } |
2385 | 2375 |
2386 TEST_P(ResourceProviderTest, ShutdownWithExportedResource) { | 2376 TEST_P(ResourceProviderTest, ShutdownWithExportedResource) { |
2387 uint32 release_sync_point = 0; | 2377 uint32 release_sync_point = 0; |
2388 bool lost_resource = false; | 2378 bool lost_resource = false; |
2389 bool release_called = false; | 2379 bool release_called = false; |
2390 uint32 sync_point = 0; | 2380 uint32 sync_point = 0; |
2391 ResourceProvider::ResourceId resource = CreateChildMailbox( | 2381 ResourceId resource = CreateChildMailbox(&release_sync_point, &lost_resource, |
2392 &release_sync_point, &lost_resource, &release_called, &sync_point); | 2382 &release_called, &sync_point); |
2393 | 2383 |
2394 // Transfer the resource, so we can't release it properly on shutdown. | 2384 // Transfer the resource, so we can't release it properly on shutdown. |
2395 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2385 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
2396 resource_ids_to_transfer.push_back(resource); | 2386 resource_ids_to_transfer.push_back(resource); |
2397 TransferableResourceArray list; | 2387 TransferableResourceArray list; |
2398 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 2388 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
2399 &list); | 2389 &list); |
2400 | 2390 |
2401 EXPECT_EQ(0u, release_sync_point); | 2391 EXPECT_EQ(0u, release_sync_point); |
2402 EXPECT_FALSE(lost_resource); | 2392 EXPECT_FALSE(lost_resource); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2464 gpu_memory_buffer_manager_.get(), | 2454 gpu_memory_buffer_manager_.get(), |
2465 NULL, | 2455 NULL, |
2466 0, | 2456 0, |
2467 false, | 2457 false, |
2468 1)); | 2458 1)); |
2469 | 2459 |
2470 gfx::Size size(1, 1); | 2460 gfx::Size size(1, 1); |
2471 ResourceFormat format = RGBA_8888; | 2461 ResourceFormat format = RGBA_8888; |
2472 int texture_id = 1; | 2462 int texture_id = 1; |
2473 | 2463 |
2474 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 2464 ResourceId id = resource_provider->CreateResource( |
2475 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2465 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
2476 | 2466 |
2477 // Check that the texture gets created with the right sampler settings. | 2467 // Check that the texture gets created with the right sampler settings. |
2478 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)) | 2468 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)) |
2479 .Times(2); // Once to create and once to allocate. | 2469 .Times(2); // Once to create and once to allocate. |
2480 EXPECT_CALL(*context, | 2470 EXPECT_CALL(*context, |
2481 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2471 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
2482 EXPECT_CALL(*context, | 2472 EXPECT_CALL(*context, |
2483 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2473 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
2484 EXPECT_CALL( | 2474 EXPECT_CALL( |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2552 NULL, | 2542 NULL, |
2553 0, | 2543 0, |
2554 false, | 2544 false, |
2555 1)); | 2545 1)); |
2556 | 2546 |
2557 gfx::Size size(1, 1); | 2547 gfx::Size size(1, 1); |
2558 ResourceFormat format = RGBA_8888; | 2548 ResourceFormat format = RGBA_8888; |
2559 int texture_id = 1; | 2549 int texture_id = 1; |
2560 | 2550 |
2561 // Check that the texture gets created with the right sampler settings. | 2551 // Check that the texture gets created with the right sampler settings. |
2562 ResourceProvider::ResourceId id = resource_provider->CreateManagedResource( | 2552 ResourceId id = resource_provider->CreateManagedResource( |
2563 size, GL_TEXTURE_2D, GL_CLAMP_TO_EDGE, | 2553 size, GL_TEXTURE_2D, GL_CLAMP_TO_EDGE, |
2564 ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2554 ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
2565 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); | 2555 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); |
2566 EXPECT_CALL(*context, | 2556 EXPECT_CALL(*context, |
2567 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2557 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
2568 EXPECT_CALL(*context, | 2558 EXPECT_CALL(*context, |
2569 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2559 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
2570 EXPECT_CALL( | 2560 EXPECT_CALL( |
2571 *context, | 2561 *context, |
2572 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); | 2562 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2606 false, | 2596 false, |
2607 1)); | 2597 1)); |
2608 | 2598 |
2609 gfx::Size size(1, 1); | 2599 gfx::Size size(1, 1); |
2610 ResourceFormat format = RGBA_8888; | 2600 ResourceFormat format = RGBA_8888; |
2611 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; | 2601 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; |
2612 | 2602 |
2613 for (int texture_id = 1; texture_id <= 2; ++texture_id) { | 2603 for (int texture_id = 1; texture_id <= 2; ++texture_id) { |
2614 GLint wrap_mode = texture_id == 1 ? GL_CLAMP_TO_EDGE : GL_REPEAT; | 2604 GLint wrap_mode = texture_id == 1 ? GL_CLAMP_TO_EDGE : GL_REPEAT; |
2615 // Check that the texture gets created with the right sampler settings. | 2605 // Check that the texture gets created with the right sampler settings. |
2616 ResourceProvider::ResourceId id = resource_provider->CreateGLTexture( | 2606 ResourceId id = resource_provider->CreateGLTexture( |
2617 size, GL_TEXTURE_2D, texture_pool, wrap_mode, | 2607 size, GL_TEXTURE_2D, texture_pool, wrap_mode, |
2618 ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2608 ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
2619 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); | 2609 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); |
2620 EXPECT_CALL(*context, | 2610 EXPECT_CALL(*context, |
2621 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2611 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
2622 EXPECT_CALL(*context, | 2612 EXPECT_CALL(*context, |
2623 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2613 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
2624 EXPECT_CALL(*context, | 2614 EXPECT_CALL(*context, |
2625 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_mode)); | 2615 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_mode)); |
2626 EXPECT_CALL(*context, | 2616 EXPECT_CALL(*context, |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2666 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; | 2656 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; |
2667 | 2657 |
2668 const ResourceProvider::TextureHint hints[4] = { | 2658 const ResourceProvider::TextureHint hints[4] = { |
2669 ResourceProvider::TEXTURE_HINT_DEFAULT, | 2659 ResourceProvider::TEXTURE_HINT_DEFAULT, |
2670 ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 2660 ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
2671 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, | 2661 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, |
2672 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, | 2662 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, |
2673 }; | 2663 }; |
2674 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { | 2664 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { |
2675 // Check that the texture gets created with the right sampler settings. | 2665 // Check that the texture gets created with the right sampler settings. |
2676 ResourceProvider::ResourceId id = | 2666 ResourceId id = resource_provider->CreateGLTexture( |
2677 resource_provider->CreateGLTexture(size, | 2667 size, GL_TEXTURE_2D, texture_pool, GL_CLAMP_TO_EDGE, |
2678 GL_TEXTURE_2D, | 2668 hints[texture_id - 1], format); |
2679 texture_pool, | |
2680 GL_CLAMP_TO_EDGE, | |
2681 hints[texture_id - 1], | |
2682 format); | |
2683 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); | 2669 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); |
2684 EXPECT_CALL(*context, | 2670 EXPECT_CALL(*context, |
2685 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2671 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
2686 EXPECT_CALL(*context, | 2672 EXPECT_CALL(*context, |
2687 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2673 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
2688 EXPECT_CALL( | 2674 EXPECT_CALL( |
2689 *context, | 2675 *context, |
2690 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); | 2676 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); |
2691 EXPECT_CALL( | 2677 EXPECT_CALL( |
2692 *context, | 2678 *context, |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2737 uint32 release_sync_point = 0; | 2723 uint32 release_sync_point = 0; |
2738 bool lost_resource = false; | 2724 bool lost_resource = false; |
2739 BlockingTaskRunner* main_thread_task_runner = NULL; | 2725 BlockingTaskRunner* main_thread_task_runner = NULL; |
2740 scoped_ptr<SingleReleaseCallbackImpl> callback = | 2726 scoped_ptr<SingleReleaseCallbackImpl> callback = |
2741 SingleReleaseCallbackImpl::Create(base::Bind(&ReleaseCallback, | 2727 SingleReleaseCallbackImpl::Create(base::Bind(&ReleaseCallback, |
2742 &release_sync_point, | 2728 &release_sync_point, |
2743 &lost_resource, | 2729 &lost_resource, |
2744 &main_thread_task_runner)); | 2730 &main_thread_task_runner)); |
2745 TextureMailbox mailbox(shared_bitmap.get(), size); | 2731 TextureMailbox mailbox(shared_bitmap.get(), size); |
2746 | 2732 |
2747 ResourceProvider::ResourceId id = | 2733 ResourceId id = resource_provider->CreateResourceFromTextureMailbox( |
2748 resource_provider->CreateResourceFromTextureMailbox( | 2734 mailbox, callback.Pass()); |
2749 mailbox, callback.Pass()); | |
2750 EXPECT_NE(0u, id); | 2735 EXPECT_NE(0u, id); |
2751 | 2736 |
2752 { | 2737 { |
2753 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); | 2738 ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id); |
2754 const SkBitmap* sk_bitmap = lock.sk_bitmap(); | 2739 const SkBitmap* sk_bitmap = lock.sk_bitmap(); |
2755 EXPECT_EQ(sk_bitmap->width(), size.width()); | 2740 EXPECT_EQ(sk_bitmap->width(), size.width()); |
2756 EXPECT_EQ(sk_bitmap->height(), size.height()); | 2741 EXPECT_EQ(sk_bitmap->height(), size.height()); |
2757 EXPECT_EQ(*sk_bitmap->getAddr32(16, 16), kBadBeef); | 2742 EXPECT_EQ(*sk_bitmap->getAddr32(16, 16), kBadBeef); |
2758 } | 2743 } |
2759 | 2744 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2806 BlockingTaskRunner* mailbox_task_runner = NULL; | 2791 BlockingTaskRunner* mailbox_task_runner = NULL; |
2807 scoped_ptr<SingleReleaseCallbackImpl> callback = | 2792 scoped_ptr<SingleReleaseCallbackImpl> callback = |
2808 SingleReleaseCallbackImpl::Create(base::Bind(&ReleaseCallback, | 2793 SingleReleaseCallbackImpl::Create(base::Bind(&ReleaseCallback, |
2809 &release_sync_point, | 2794 &release_sync_point, |
2810 &lost_resource, | 2795 &lost_resource, |
2811 &mailbox_task_runner)); | 2796 &mailbox_task_runner)); |
2812 | 2797 |
2813 TextureMailbox mailbox(gpu_mailbox, target, sync_point); | 2798 TextureMailbox mailbox(gpu_mailbox, target, sync_point); |
2814 mailbox.set_nearest_neighbor(mailbox_nearest_neighbor); | 2799 mailbox.set_nearest_neighbor(mailbox_nearest_neighbor); |
2815 | 2800 |
2816 ResourceProvider::ResourceId id = | 2801 ResourceId id = resource_provider->CreateResourceFromTextureMailbox( |
2817 resource_provider->CreateResourceFromTextureMailbox(mailbox, | 2802 mailbox, callback.Pass()); |
2818 callback.Pass()); | |
2819 EXPECT_NE(0u, id); | 2803 EXPECT_NE(0u, id); |
2820 | 2804 |
2821 Mock::VerifyAndClearExpectations(context); | 2805 Mock::VerifyAndClearExpectations(context); |
2822 | 2806 |
2823 { | 2807 { |
2824 // Mailbox sync point WaitSyncPoint before using the texture. | 2808 // Mailbox sync point WaitSyncPoint before using the texture. |
2825 EXPECT_CALL(*context, waitSyncPoint(sync_point)); | 2809 EXPECT_CALL(*context, waitSyncPoint(sync_point)); |
2826 resource_provider->WaitSyncPointIfNeeded(id); | 2810 resource_provider->WaitSyncPointIfNeeded(id); |
2827 Mock::VerifyAndClearExpectations(context); | 2811 Mock::VerifyAndClearExpectations(context); |
2828 | 2812 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2947 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); | 2931 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); |
2948 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); | 2932 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); |
2949 | 2933 |
2950 gpu::Mailbox gpu_mailbox; | 2934 gpu::Mailbox gpu_mailbox; |
2951 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); | 2935 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); |
2952 scoped_ptr<SingleReleaseCallbackImpl> callback = | 2936 scoped_ptr<SingleReleaseCallbackImpl> callback = |
2953 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); | 2937 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); |
2954 | 2938 |
2955 TextureMailbox mailbox(gpu_mailbox, target, sync_point); | 2939 TextureMailbox mailbox(gpu_mailbox, target, sync_point); |
2956 | 2940 |
2957 ResourceProvider::ResourceId id = | 2941 ResourceId id = resource_provider->CreateResourceFromTextureMailbox( |
2958 resource_provider->CreateResourceFromTextureMailbox( | 2942 mailbox, callback.Pass()); |
2959 mailbox, callback.Pass()); | |
2960 EXPECT_NE(0u, id); | 2943 EXPECT_NE(0u, id); |
2961 | 2944 |
2962 Mock::VerifyAndClearExpectations(context); | 2945 Mock::VerifyAndClearExpectations(context); |
2963 | 2946 |
2964 { | 2947 { |
2965 // Mailbox sync point WaitSyncPoint before using the texture. | 2948 // Mailbox sync point WaitSyncPoint before using the texture. |
2966 EXPECT_CALL(*context, waitSyncPoint(sync_point)); | 2949 EXPECT_CALL(*context, waitSyncPoint(sync_point)); |
2967 resource_provider->WaitSyncPointIfNeeded(id); | 2950 resource_provider->WaitSyncPointIfNeeded(id); |
2968 Mock::VerifyAndClearExpectations(context); | 2951 Mock::VerifyAndClearExpectations(context); |
2969 | 2952 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3022 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); | 3005 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); |
3023 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); | 3006 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); |
3024 | 3007 |
3025 gpu::Mailbox gpu_mailbox; | 3008 gpu::Mailbox gpu_mailbox; |
3026 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); | 3009 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); |
3027 scoped_ptr<SingleReleaseCallbackImpl> callback = | 3010 scoped_ptr<SingleReleaseCallbackImpl> callback = |
3028 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); | 3011 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); |
3029 | 3012 |
3030 TextureMailbox mailbox(gpu_mailbox, target, sync_point); | 3013 TextureMailbox mailbox(gpu_mailbox, target, sync_point); |
3031 | 3014 |
3032 ResourceProvider::ResourceId id = | 3015 ResourceId id = resource_provider->CreateResourceFromTextureMailbox( |
3033 resource_provider->CreateResourceFromTextureMailbox(mailbox, | 3016 mailbox, callback.Pass()); |
3034 callback.Pass()); | |
3035 EXPECT_NE(0u, id); | 3017 EXPECT_NE(0u, id); |
3036 | 3018 |
3037 Mock::VerifyAndClearExpectations(context); | 3019 Mock::VerifyAndClearExpectations(context); |
3038 | 3020 |
3039 { | 3021 { |
3040 // First call to WaitSyncPointIfNeeded should call waitSyncPoint. | 3022 // First call to WaitSyncPointIfNeeded should call waitSyncPoint. |
3041 EXPECT_CALL(*context, waitSyncPoint(sync_point)); | 3023 EXPECT_CALL(*context, waitSyncPoint(sync_point)); |
3042 resource_provider->WaitSyncPointIfNeeded(id); | 3024 resource_provider->WaitSyncPointIfNeeded(id); |
3043 Mock::VerifyAndClearExpectations(context); | 3025 Mock::VerifyAndClearExpectations(context); |
3044 | 3026 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3081 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); | 3063 EXPECT_CALL(*context, produceTextureDirectCHROMIUM(_, _, _)).Times(0); |
3082 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); | 3064 EXPECT_CALL(*context, createAndConsumeTextureCHROMIUM(_, _)).Times(0); |
3083 | 3065 |
3084 gpu::Mailbox gpu_mailbox; | 3066 gpu::Mailbox gpu_mailbox; |
3085 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); | 3067 memcpy(gpu_mailbox.name, "Hello world", strlen("Hello world") + 1); |
3086 scoped_ptr<SingleReleaseCallbackImpl> callback = | 3068 scoped_ptr<SingleReleaseCallbackImpl> callback = |
3087 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); | 3069 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); |
3088 | 3070 |
3089 TextureMailbox mailbox(gpu_mailbox, target, sync_point); | 3071 TextureMailbox mailbox(gpu_mailbox, target, sync_point); |
3090 | 3072 |
3091 ResourceProvider::ResourceId id = | 3073 ResourceId id = resource_provider->CreateResourceFromTextureMailbox( |
3092 resource_provider->CreateResourceFromTextureMailbox(mailbox, | 3074 mailbox, callback.Pass()); |
3093 callback.Pass()); | |
3094 EXPECT_NE(0u, id); | 3075 EXPECT_NE(0u, id); |
3095 | 3076 |
3096 Mock::VerifyAndClearExpectations(context); | 3077 Mock::VerifyAndClearExpectations(context); |
3097 | 3078 |
3098 { | 3079 { |
3099 // WaitSyncPointIfNeeded with sync_point == 0 shouldn't call waitSyncPoint. | 3080 // WaitSyncPointIfNeeded with sync_point == 0 shouldn't call waitSyncPoint. |
3100 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); | 3081 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); |
3101 resource_provider->WaitSyncPointIfNeeded(id); | 3082 resource_provider->WaitSyncPointIfNeeded(id); |
3102 Mock::VerifyAndClearExpectations(context); | 3083 Mock::VerifyAndClearExpectations(context); |
3103 } | 3084 } |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3194 shared_bitmap_manager_.get(), | 3175 shared_bitmap_manager_.get(), |
3195 gpu_memory_buffer_manager_.get(), | 3176 gpu_memory_buffer_manager_.get(), |
3196 NULL, | 3177 NULL, |
3197 0, | 3178 0, |
3198 false, | 3179 false, |
3199 1)); | 3180 1)); |
3200 | 3181 |
3201 gfx::Size size(2, 2); | 3182 gfx::Size size(2, 2); |
3202 gfx::Vector2d offset(0, 0); | 3183 gfx::Vector2d offset(0, 0); |
3203 ResourceFormat format = RGBA_8888; | 3184 ResourceFormat format = RGBA_8888; |
3204 ResourceProvider::ResourceId id = 0; | 3185 ResourceId id = 0; |
3205 uint8_t pixels[16] = { 0 }; | 3186 uint8_t pixels[16] = { 0 }; |
3206 int texture_id = 123; | 3187 int texture_id = 123; |
3207 | 3188 |
3208 // Lazy allocation. Don't allocate when creating the resource. | 3189 // Lazy allocation. Don't allocate when creating the resource. |
3209 id = resource_provider->CreateResource( | 3190 id = resource_provider->CreateResource( |
3210 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3191 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
3211 | 3192 |
3212 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3193 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3213 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); | 3194 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); |
3214 resource_provider->CreateForTesting(id); | 3195 resource_provider->CreateForTesting(id); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3282 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; | 3263 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; |
3283 const ResourceProvider::TextureHint hints[4] = { | 3264 const ResourceProvider::TextureHint hints[4] = { |
3284 ResourceProvider::TEXTURE_HINT_DEFAULT, | 3265 ResourceProvider::TEXTURE_HINT_DEFAULT, |
3285 ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3266 ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
3286 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, | 3267 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, |
3287 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, | 3268 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, |
3288 }; | 3269 }; |
3289 for (size_t i = 0; i < arraysize(formats); ++i) { | 3270 for (size_t i = 0; i < arraysize(formats); ++i) { |
3290 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { | 3271 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { |
3291 // Lazy allocation. Don't allocate when creating the resource. | 3272 // Lazy allocation. Don't allocate when creating the resource. |
3292 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3273 ResourceId id = resource_provider->CreateResource( |
3293 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); | 3274 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); |
3294 | 3275 |
3295 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3276 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3296 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3277 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
3297 bool is_immutable_hint = | 3278 bool is_immutable_hint = |
3298 hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_IMMUTABLE; | 3279 hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
3299 bool support_immutable_texture = | 3280 bool support_immutable_texture = |
3300 is_immutable_hint && formats[i] == RGBA_8888; | 3281 is_immutable_hint && formats[i] == RGBA_8888; |
3301 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) | 3282 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) |
3302 .Times(support_immutable_texture ? 1 : 0); | 3283 .Times(support_immutable_texture ? 1 : 0); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3342 | 3323 |
3343 const ResourceProvider::TextureHint hints[4] = { | 3324 const ResourceProvider::TextureHint hints[4] = { |
3344 ResourceProvider::TEXTURE_HINT_DEFAULT, | 3325 ResourceProvider::TEXTURE_HINT_DEFAULT, |
3345 ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3326 ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
3346 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, | 3327 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, |
3347 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, | 3328 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, |
3348 }; | 3329 }; |
3349 for (size_t i = 0; i < arraysize(formats); ++i) { | 3330 for (size_t i = 0; i < arraysize(formats); ++i) { |
3350 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { | 3331 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { |
3351 // Lazy allocation. Don't allocate when creating the resource. | 3332 // Lazy allocation. Don't allocate when creating the resource. |
3352 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3333 ResourceId id = resource_provider->CreateResource( |
3353 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); | 3334 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); |
3354 | 3335 |
3355 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3336 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3356 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3337 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
3357 bool is_immutable_hint = | 3338 bool is_immutable_hint = |
3358 hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_IMMUTABLE; | 3339 hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
3359 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) | 3340 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) |
3360 .Times(is_immutable_hint ? 1 : 0); | 3341 .Times(is_immutable_hint ? 1 : 0); |
3361 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)) | 3342 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)) |
3362 .Times(is_immutable_hint ? 0 : 1); | 3343 .Times(is_immutable_hint ? 0 : 1); |
(...skipping 14 matching lines...) Expand all Loading... |
3377 new StrictMock<AllocationTrackingContext3D>); | 3358 new StrictMock<AllocationTrackingContext3D>); |
3378 AllocationTrackingContext3D* context = context_owned.get(); | 3359 AllocationTrackingContext3D* context = context_owned.get(); |
3379 | 3360 |
3380 FakeOutputSurfaceClient output_surface_client; | 3361 FakeOutputSurfaceClient output_surface_client; |
3381 scoped_ptr<OutputSurface> output_surface( | 3362 scoped_ptr<OutputSurface> output_surface( |
3382 FakeOutputSurface::Create3d(context_owned.Pass())); | 3363 FakeOutputSurface::Create3d(context_owned.Pass())); |
3383 CHECK(output_surface->BindToClient(&output_surface_client)); | 3364 CHECK(output_surface->BindToClient(&output_surface_client)); |
3384 | 3365 |
3385 gfx::Size size(2, 2); | 3366 gfx::Size size(2, 2); |
3386 ResourceFormat format = RGBA_8888; | 3367 ResourceFormat format = RGBA_8888; |
3387 ResourceProvider::ResourceId id = 0; | 3368 ResourceId id = 0; |
3388 int texture_id = 123; | 3369 int texture_id = 123; |
3389 | 3370 |
3390 scoped_ptr<ResourceProvider> resource_provider( | 3371 scoped_ptr<ResourceProvider> resource_provider( |
3391 ResourceProvider::Create(output_surface.get(), | 3372 ResourceProvider::Create(output_surface.get(), |
3392 shared_bitmap_manager_.get(), | 3373 shared_bitmap_manager_.get(), |
3393 gpu_memory_buffer_manager_.get(), | 3374 gpu_memory_buffer_manager_.get(), |
3394 NULL, | 3375 NULL, |
3395 0, | 3376 0, |
3396 false, | 3377 false, |
3397 1)); | 3378 1)); |
(...skipping 26 matching lines...) Expand all Loading... |
3424 new StrictMock<AllocationTrackingContext3D>); | 3405 new StrictMock<AllocationTrackingContext3D>); |
3425 AllocationTrackingContext3D* context = context_owned.get(); | 3406 AllocationTrackingContext3D* context = context_owned.get(); |
3426 | 3407 |
3427 FakeOutputSurfaceClient output_surface_client; | 3408 FakeOutputSurfaceClient output_surface_client; |
3428 scoped_ptr<OutputSurface> output_surface( | 3409 scoped_ptr<OutputSurface> output_surface( |
3429 FakeOutputSurface::Create3d(context_owned.Pass())); | 3410 FakeOutputSurface::Create3d(context_owned.Pass())); |
3430 CHECK(output_surface->BindToClient(&output_surface_client)); | 3411 CHECK(output_surface->BindToClient(&output_surface_client)); |
3431 | 3412 |
3432 gfx::Size size(2, 2); | 3413 gfx::Size size(2, 2); |
3433 ResourceFormat format = RGBA_8888; | 3414 ResourceFormat format = RGBA_8888; |
3434 ResourceProvider::ResourceId id = 0; | 3415 ResourceId id = 0; |
3435 int texture_id = 123; | 3416 int texture_id = 123; |
3436 | 3417 |
3437 scoped_ptr<ResourceProvider> resource_provider( | 3418 scoped_ptr<ResourceProvider> resource_provider( |
3438 ResourceProvider::Create(output_surface.get(), | 3419 ResourceProvider::Create(output_surface.get(), |
3439 shared_bitmap_manager_.get(), | 3420 shared_bitmap_manager_.get(), |
3440 gpu_memory_buffer_manager_.get(), | 3421 gpu_memory_buffer_manager_.get(), |
3441 NULL, | 3422 NULL, |
3442 0, | 3423 0, |
3443 false, | 3424 false, |
3444 1)); | 3425 1)); |
(...skipping 26 matching lines...) Expand all Loading... |
3471 new NiceMock<AllocationTrackingContext3D>); | 3452 new NiceMock<AllocationTrackingContext3D>); |
3472 AllocationTrackingContext3D* context = context_owned.get(); | 3453 AllocationTrackingContext3D* context = context_owned.get(); |
3473 | 3454 |
3474 FakeOutputSurfaceClient output_surface_client; | 3455 FakeOutputSurfaceClient output_surface_client; |
3475 scoped_ptr<OutputSurface> output_surface( | 3456 scoped_ptr<OutputSurface> output_surface( |
3476 FakeOutputSurface::Create3d(context_owned.Pass())); | 3457 FakeOutputSurface::Create3d(context_owned.Pass())); |
3477 CHECK(output_surface->BindToClient(&output_surface_client)); | 3458 CHECK(output_surface->BindToClient(&output_surface_client)); |
3478 | 3459 |
3479 gfx::Size size(2, 2); | 3460 gfx::Size size(2, 2); |
3480 ResourceFormat format = RGBA_8888; | 3461 ResourceFormat format = RGBA_8888; |
3481 ResourceProvider::ResourceId id = 0; | 3462 ResourceId id = 0; |
3482 int texture_id = 123; | 3463 int texture_id = 123; |
3483 | 3464 |
3484 scoped_ptr<ResourceProvider> resource_provider( | 3465 scoped_ptr<ResourceProvider> resource_provider( |
3485 ResourceProvider::Create(output_surface.get(), | 3466 ResourceProvider::Create(output_surface.get(), |
3486 shared_bitmap_manager_.get(), | 3467 shared_bitmap_manager_.get(), |
3487 gpu_memory_buffer_manager_.get(), | 3468 gpu_memory_buffer_manager_.get(), |
3488 NULL, | 3469 NULL, |
3489 0, | 3470 0, |
3490 false, | 3471 false, |
3491 1)); | 3472 1)); |
(...skipping 23 matching lines...) Expand all Loading... |
3515 | 3496 |
3516 FakeOutputSurfaceClient output_surface_client; | 3497 FakeOutputSurfaceClient output_surface_client; |
3517 scoped_ptr<OutputSurface> output_surface( | 3498 scoped_ptr<OutputSurface> output_surface( |
3518 FakeOutputSurface::Create3d(context_owned.Pass())); | 3499 FakeOutputSurface::Create3d(context_owned.Pass())); |
3519 CHECK(output_surface->BindToClient(&output_surface_client)); | 3500 CHECK(output_surface->BindToClient(&output_surface_client)); |
3520 | 3501 |
3521 const int kWidth = 2; | 3502 const int kWidth = 2; |
3522 const int kHeight = 2; | 3503 const int kHeight = 2; |
3523 gfx::Size size(kWidth, kHeight); | 3504 gfx::Size size(kWidth, kHeight); |
3524 ResourceFormat format = RGBA_8888; | 3505 ResourceFormat format = RGBA_8888; |
3525 ResourceProvider::ResourceId id = 0; | 3506 ResourceId id = 0; |
3526 const unsigned kTextureId = 123u; | 3507 const unsigned kTextureId = 123u; |
3527 const unsigned kImageId = 234u; | 3508 const unsigned kImageId = 234u; |
3528 | 3509 |
3529 scoped_ptr<ResourceProvider> resource_provider( | 3510 scoped_ptr<ResourceProvider> resource_provider( |
3530 ResourceProvider::Create(output_surface.get(), | 3511 ResourceProvider::Create(output_surface.get(), |
3531 shared_bitmap_manager_.get(), | 3512 shared_bitmap_manager_.get(), |
3532 gpu_memory_buffer_manager_.get(), | 3513 gpu_memory_buffer_manager_.get(), |
3533 NULL, | 3514 NULL, |
3534 0, | 3515 0, |
3535 false, | 3516 false, |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3600 | 3581 |
3601 FakeOutputSurfaceClient output_surface_client; | 3582 FakeOutputSurfaceClient output_surface_client; |
3602 scoped_ptr<OutputSurface> output_surface( | 3583 scoped_ptr<OutputSurface> output_surface( |
3603 FakeOutputSurface::Create3d(context_owned.Pass())); | 3584 FakeOutputSurface::Create3d(context_owned.Pass())); |
3604 ASSERT_TRUE(output_surface->BindToClient(&output_surface_client)); | 3585 ASSERT_TRUE(output_surface->BindToClient(&output_surface_client)); |
3605 | 3586 |
3606 const int kWidth = 2; | 3587 const int kWidth = 2; |
3607 const int kHeight = 2; | 3588 const int kHeight = 2; |
3608 gfx::Size size(kWidth, kHeight); | 3589 gfx::Size size(kWidth, kHeight); |
3609 ResourceFormat format = RGBA_8888; | 3590 ResourceFormat format = RGBA_8888; |
3610 ResourceProvider::ResourceId source_id = 0; | 3591 ResourceId source_id = 0; |
3611 ResourceProvider::ResourceId dest_id = 0; | 3592 ResourceId dest_id = 0; |
3612 const unsigned kSourceTextureId = 123u; | 3593 const unsigned kSourceTextureId = 123u; |
3613 const unsigned kDestTextureId = 321u; | 3594 const unsigned kDestTextureId = 321u; |
3614 const unsigned kImageId = 234u; | 3595 const unsigned kImageId = 234u; |
3615 | 3596 |
3616 scoped_ptr<ResourceProvider> resource_provider( | 3597 scoped_ptr<ResourceProvider> resource_provider( |
3617 ResourceProvider::Create(output_surface.get(), | 3598 ResourceProvider::Create(output_surface.get(), |
3618 shared_bitmap_manager_.get(), | 3599 shared_bitmap_manager_.get(), |
3619 gpu_memory_buffer_manager_.get(), | 3600 gpu_memory_buffer_manager_.get(), |
3620 NULL, | 3601 NULL, |
3621 0, | 3602 0, |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3691 scoped_ptr<ResourceProvider> resource_provider( | 3672 scoped_ptr<ResourceProvider> resource_provider( |
3692 ResourceProvider::Create(output_surface.get(), | 3673 ResourceProvider::Create(output_surface.get(), |
3693 shared_bitmap_manager_.get(), | 3674 shared_bitmap_manager_.get(), |
3694 gpu_memory_buffer_manager_.get(), | 3675 gpu_memory_buffer_manager_.get(), |
3695 NULL, | 3676 NULL, |
3696 0, | 3677 0, |
3697 false, | 3678 false, |
3698 1)); | 3679 1)); |
3699 int texture_id = 123; | 3680 int texture_id = 123; |
3700 | 3681 |
3701 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3682 ResourceId id = resource_provider->CreateResource( |
3702 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); | 3683 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); |
3703 EXPECT_NE(0u, id); | 3684 EXPECT_NE(0u, id); |
3704 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3685 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3705 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3686 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
3706 resource_provider->AllocateForTesting(id); | 3687 resource_provider->AllocateForTesting(id); |
3707 | 3688 |
3708 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3689 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
3709 resource_provider->DeleteResource(id); | 3690 resource_provider->DeleteResource(id); |
3710 } | 3691 } |
3711 | 3692 |
(...skipping 16 matching lines...) Expand all Loading... |
3728 ResourceProvider::Create(output_surface.get(), | 3709 ResourceProvider::Create(output_surface.get(), |
3729 shared_bitmap_manager_.get(), | 3710 shared_bitmap_manager_.get(), |
3730 gpu_memory_buffer_manager_.get(), | 3711 gpu_memory_buffer_manager_.get(), |
3731 NULL, | 3712 NULL, |
3732 0, | 3713 0, |
3733 false, | 3714 false, |
3734 1)); | 3715 1)); |
3735 int texture_id = 123; | 3716 int texture_id = 123; |
3736 uint8_t pixels[8]; | 3717 uint8_t pixels[8]; |
3737 | 3718 |
3738 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3719 ResourceId id = resource_provider->CreateResource( |
3739 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); | 3720 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); |
3740 EXPECT_NE(0u, id); | 3721 EXPECT_NE(0u, id); |
3741 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3722 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
3742 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); | 3723 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); |
3743 EXPECT_CALL(*context, | 3724 EXPECT_CALL(*context, |
3744 compressedTexImage2D( | 3725 compressedTexImage2D( |
3745 _, 0, _, size.width(), size.height(), _, _, _)).Times(1); | 3726 _, 0, _, size.width(), size.height(), _, _, _)).Times(1); |
3746 resource_provider->CopyToResource(id, pixels, size); | 3727 resource_provider->CopyToResource(id, pixels, size); |
3747 | 3728 |
3748 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3729 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3787 size_t kTextureAllocationChunkSize = 1; | 3768 size_t kTextureAllocationChunkSize = 1; |
3788 scoped_ptr<ResourceProvider> resource_provider( | 3769 scoped_ptr<ResourceProvider> resource_provider( |
3789 ResourceProvider::Create(output_surface.get(), | 3770 ResourceProvider::Create(output_surface.get(), |
3790 shared_bitmap_manager.get(), | 3771 shared_bitmap_manager.get(), |
3791 NULL, | 3772 NULL, |
3792 NULL, | 3773 NULL, |
3793 0, | 3774 0, |
3794 false, | 3775 false, |
3795 kTextureAllocationChunkSize)); | 3776 kTextureAllocationChunkSize)); |
3796 | 3777 |
3797 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3778 ResourceId id = resource_provider->CreateResource( |
3798 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3779 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
3799 format); | 3780 format); |
3800 resource_provider->AllocateForTesting(id); | 3781 resource_provider->AllocateForTesting(id); |
3801 Mock::VerifyAndClearExpectations(context); | 3782 Mock::VerifyAndClearExpectations(context); |
3802 | 3783 |
3803 DCHECK_EQ(2u, context->PeekTextureId()); | 3784 DCHECK_EQ(2u, context->PeekTextureId()); |
3804 resource_provider->DeleteResource(id); | 3785 resource_provider->DeleteResource(id); |
3805 } | 3786 } |
3806 | 3787 |
3807 { | 3788 { |
3808 size_t kTextureAllocationChunkSize = 8; | 3789 size_t kTextureAllocationChunkSize = 8; |
3809 scoped_ptr<ResourceProvider> resource_provider( | 3790 scoped_ptr<ResourceProvider> resource_provider( |
3810 ResourceProvider::Create(output_surface.get(), | 3791 ResourceProvider::Create(output_surface.get(), |
3811 shared_bitmap_manager.get(), | 3792 shared_bitmap_manager.get(), |
3812 NULL, | 3793 NULL, |
3813 NULL, | 3794 NULL, |
3814 0, | 3795 0, |
3815 false, | 3796 false, |
3816 kTextureAllocationChunkSize)); | 3797 kTextureAllocationChunkSize)); |
3817 | 3798 |
3818 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3799 ResourceId id = resource_provider->CreateResource( |
3819 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3800 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
3820 format); | 3801 format); |
3821 resource_provider->AllocateForTesting(id); | 3802 resource_provider->AllocateForTesting(id); |
3822 Mock::VerifyAndClearExpectations(context); | 3803 Mock::VerifyAndClearExpectations(context); |
3823 | 3804 |
3824 DCHECK_EQ(10u, context->PeekTextureId()); | 3805 DCHECK_EQ(10u, context->PeekTextureId()); |
3825 resource_provider->DeleteResource(id); | 3806 resource_provider->DeleteResource(id); |
3826 } | 3807 } |
3827 } | 3808 } |
3828 | 3809 |
3829 } // namespace | 3810 } // namespace |
3830 } // namespace cc | 3811 } // namespace cc |
OLD | NEW |