| 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 |