| 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 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 }; | 347 }; |
| 348 | 348 |
| 349 void GetResourcePixels(ResourceProvider* resource_provider, | 349 void GetResourcePixels(ResourceProvider* resource_provider, |
| 350 ResourceProviderContext* context, | 350 ResourceProviderContext* context, |
| 351 ResourceProvider::ResourceId id, | 351 ResourceProvider::ResourceId id, |
| 352 const gfx::Size& size, | 352 const gfx::Size& size, |
| 353 ResourceFormat format, | 353 ResourceFormat format, |
| 354 uint8_t* pixels) { | 354 uint8_t* pixels) { |
| 355 resource_provider->WaitSyncPointIfNeeded(id); | 355 resource_provider->WaitSyncPointIfNeeded(id); |
| 356 switch (resource_provider->default_resource_type()) { | 356 switch (resource_provider->default_resource_type()) { |
| 357 case ResourceProvider::RESOURCE_TYPE_GL_TEXTURE: { | 357 case ResourceProvider::GLTexture: { |
| 358 ResourceProvider::ScopedReadLockGL lock_gl(resource_provider, id); | 358 ResourceProvider::ScopedReadLockGL lock_gl(resource_provider, id); |
| 359 ASSERT_NE(0U, lock_gl.texture_id()); | 359 ASSERT_NE(0U, lock_gl.texture_id()); |
| 360 context->bindTexture(GL_TEXTURE_2D, lock_gl.texture_id()); | 360 context->bindTexture(GL_TEXTURE_2D, lock_gl.texture_id()); |
| 361 context->GetPixels(size, format, pixels); | 361 context->GetPixels(size, format, pixels); |
| 362 break; | 362 break; |
| 363 } | 363 } |
| 364 case ResourceProvider::RESOURCE_TYPE_BITMAP: { | 364 case ResourceProvider::Bitmap: { |
| 365 ResourceProvider::ScopedReadLockSoftware lock_software(resource_provider, | 365 ResourceProvider::ScopedReadLockSoftware lock_software(resource_provider, |
| 366 id); | 366 id); |
| 367 memcpy(pixels, | 367 memcpy(pixels, |
| 368 lock_software.sk_bitmap()->getPixels(), | 368 lock_software.sk_bitmap()->getPixels(), |
| 369 lock_software.sk_bitmap()->getSize()); | 369 lock_software.sk_bitmap()->getSize()); |
| 370 break; | 370 break; |
| 371 } | 371 } |
| 372 case ResourceProvider::RESOURCE_TYPE_INVALID: | 372 case ResourceProvider::InvalidType: |
| 373 NOTREACHED(); | 373 NOTREACHED(); |
| 374 break; | 374 break; |
| 375 } | 375 } |
| 376 } | 376 } |
| 377 | 377 |
| 378 class ResourceProviderTest | 378 class ResourceProviderTest |
| 379 : public testing::TestWithParam<ResourceProvider::ResourceType> { | 379 : public testing::TestWithParam<ResourceProvider::ResourceType> { |
| 380 public: | 380 public: |
| 381 ResourceProviderTest() | 381 ResourceProviderTest() |
| 382 : shared_data_(ContextSharedData::Create()), | 382 : shared_data_(ContextSharedData::Create()), |
| 383 context3d_(NULL), | 383 context3d_(NULL), |
| 384 child_context_(NULL), | 384 child_context_(NULL), |
| 385 main_thread_task_runner_(BlockingTaskRunner::Create(NULL)) { | 385 main_thread_task_runner_(BlockingTaskRunner::Create(NULL)) { |
| 386 switch (GetParam()) { | 386 switch (GetParam()) { |
| 387 case ResourceProvider::RESOURCE_TYPE_GL_TEXTURE: { | 387 case ResourceProvider::GLTexture: { |
| 388 scoped_ptr<ResourceProviderContext> context3d( | 388 scoped_ptr<ResourceProviderContext> context3d( |
| 389 ResourceProviderContext::Create(shared_data_.get())); | 389 ResourceProviderContext::Create(shared_data_.get())); |
| 390 context3d_ = context3d.get(); | 390 context3d_ = context3d.get(); |
| 391 | 391 |
| 392 scoped_refptr<TestContextProvider> context_provider = | 392 scoped_refptr<TestContextProvider> context_provider = |
| 393 TestContextProvider::Create(context3d.Pass()); | 393 TestContextProvider::Create(context3d.Pass()); |
| 394 | 394 |
| 395 output_surface_ = FakeOutputSurface::Create3d(context_provider); | 395 output_surface_ = FakeOutputSurface::Create3d(context_provider); |
| 396 | 396 |
| 397 scoped_ptr<ResourceProviderContext> child_context_owned = | 397 scoped_ptr<ResourceProviderContext> child_context_owned = |
| 398 ResourceProviderContext::Create(shared_data_.get()); | 398 ResourceProviderContext::Create(shared_data_.get()); |
| 399 child_context_ = child_context_owned.get(); | 399 child_context_ = child_context_owned.get(); |
| 400 child_output_surface_ = | 400 child_output_surface_ = |
| 401 FakeOutputSurface::Create3d(child_context_owned.Pass()); | 401 FakeOutputSurface::Create3d(child_context_owned.Pass()); |
| 402 break; | 402 break; |
| 403 } | 403 } |
| 404 case ResourceProvider::RESOURCE_TYPE_BITMAP: | 404 case ResourceProvider::Bitmap: |
| 405 output_surface_ = FakeOutputSurface::CreateSoftware( | 405 output_surface_ = FakeOutputSurface::CreateSoftware( |
| 406 make_scoped_ptr(new SoftwareOutputDevice)); | 406 make_scoped_ptr(new SoftwareOutputDevice)); |
| 407 child_output_surface_ = FakeOutputSurface::CreateSoftware( | 407 child_output_surface_ = FakeOutputSurface::CreateSoftware( |
| 408 make_scoped_ptr(new SoftwareOutputDevice)); | 408 make_scoped_ptr(new SoftwareOutputDevice)); |
| 409 break; | 409 break; |
| 410 case ResourceProvider::RESOURCE_TYPE_INVALID: | 410 case ResourceProvider::InvalidType: |
| 411 NOTREACHED(); | 411 NOTREACHED(); |
| 412 break; | 412 break; |
| 413 } | 413 } |
| 414 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 414 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 415 CHECK(child_output_surface_->BindToClient(&child_output_surface_client_)); | 415 CHECK(child_output_surface_->BindToClient(&child_output_surface_client_)); |
| 416 | 416 |
| 417 shared_bitmap_manager_.reset(new TestSharedBitmapManager); | 417 shared_bitmap_manager_.reset(new TestSharedBitmapManager); |
| 418 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); | 418 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); |
| 419 | 419 |
| 420 resource_provider_ = | 420 resource_provider_ = |
| (...skipping 30 matching lines...) Expand all Loading... |
| 451 ResourceProvider::ScopedSamplerGL sampler( | 451 ResourceProvider::ScopedSamplerGL sampler( |
| 452 resource_provider, id, GL_TEXTURE_2D, filter); | 452 resource_provider, id, GL_TEXTURE_2D, filter); |
| 453 } | 453 } |
| 454 | 454 |
| 455 ResourceProviderContext* context() { return context3d_; } | 455 ResourceProviderContext* context() { return context3d_; } |
| 456 | 456 |
| 457 ResourceProvider::ResourceId CreateChildMailbox(uint32* release_sync_point, | 457 ResourceProvider::ResourceId CreateChildMailbox(uint32* release_sync_point, |
| 458 bool* lost_resource, | 458 bool* lost_resource, |
| 459 bool* release_called, | 459 bool* release_called, |
| 460 uint32* sync_point) { | 460 uint32* sync_point) { |
| 461 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 461 if (GetParam() == ResourceProvider::GLTexture) { |
| 462 unsigned texture = child_context_->createTexture(); | 462 unsigned texture = child_context_->createTexture(); |
| 463 gpu::Mailbox gpu_mailbox; | 463 gpu::Mailbox gpu_mailbox; |
| 464 child_context_->bindTexture(GL_TEXTURE_2D, texture); | 464 child_context_->bindTexture(GL_TEXTURE_2D, texture); |
| 465 child_context_->genMailboxCHROMIUM(gpu_mailbox.name); | 465 child_context_->genMailboxCHROMIUM(gpu_mailbox.name); |
| 466 child_context_->produceTextureCHROMIUM(GL_TEXTURE_2D, gpu_mailbox.name); | 466 child_context_->produceTextureCHROMIUM(GL_TEXTURE_2D, gpu_mailbox.name); |
| 467 *sync_point = child_context_->insertSyncPoint(); | 467 *sync_point = child_context_->insertSyncPoint(); |
| 468 EXPECT_LT(0u, *sync_point); | 468 EXPECT_LT(0u, *sync_point); |
| 469 | 469 |
| 470 scoped_ptr<SharedBitmap> shared_bitmap; | 470 scoped_ptr<SharedBitmap> shared_bitmap; |
| 471 scoped_ptr<SingleReleaseCallbackImpl> callback = | 471 scoped_ptr<SingleReleaseCallbackImpl> callback = |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 ResourceProvider* resource_provider, | 509 ResourceProvider* resource_provider, |
| 510 ResourceProviderContext* context) { | 510 ResourceProviderContext* context) { |
| 511 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type()); | 511 DCHECK_EQ(expected_default_type, resource_provider->default_resource_type()); |
| 512 | 512 |
| 513 gfx::Size size(1, 1); | 513 gfx::Size size(1, 1); |
| 514 ResourceFormat format = RGBA_8888; | 514 ResourceFormat format = RGBA_8888; |
| 515 size_t pixel_size = TextureSizeBytes(size, format); | 515 size_t pixel_size = TextureSizeBytes(size, format); |
| 516 ASSERT_EQ(4U, pixel_size); | 516 ASSERT_EQ(4U, pixel_size); |
| 517 | 517 |
| 518 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 518 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 519 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 519 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 520 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources())); | 520 EXPECT_EQ(1, static_cast<int>(resource_provider->num_resources())); |
| 521 if (expected_default_type == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 521 if (expected_default_type == ResourceProvider::GLTexture) |
| 522 EXPECT_EQ(0u, context->NumTextures()); | 522 EXPECT_EQ(0u, context->NumTextures()); |
| 523 | 523 |
| 524 uint8_t data[4] = { 1, 2, 3, 4 }; | 524 uint8_t data[4] = { 1, 2, 3, 4 }; |
| 525 resource_provider->CopyToResource(id, data, size); | 525 gfx::Rect rect(size); |
| 526 if (expected_default_type == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 526 resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d()); |
| 527 if (expected_default_type == ResourceProvider::GLTexture) |
| 527 EXPECT_EQ(1u, context->NumTextures()); | 528 EXPECT_EQ(1u, context->NumTextures()); |
| 528 | 529 |
| 529 uint8_t result[4] = { 0 }; | 530 uint8_t result[4] = { 0 }; |
| 530 GetResourcePixels(resource_provider, context, id, size, format, result); | 531 GetResourcePixels(resource_provider, context, id, size, format, result); |
| 531 EXPECT_EQ(0, memcmp(data, result, pixel_size)); | 532 EXPECT_EQ(0, memcmp(data, result, pixel_size)); |
| 532 | 533 |
| 533 resource_provider->DeleteResource(id); | 534 resource_provider->DeleteResource(id); |
| 534 EXPECT_EQ(0, static_cast<int>(resource_provider->num_resources())); | 535 EXPECT_EQ(0, static_cast<int>(resource_provider->num_resources())); |
| 535 if (expected_default_type == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 536 if (expected_default_type == ResourceProvider::GLTexture) |
| 536 EXPECT_EQ(0u, context->NumTextures()); | 537 EXPECT_EQ(0u, context->NumTextures()); |
| 537 } | 538 } |
| 538 | 539 |
| 539 TEST_P(ResourceProviderTest, Basic) { | 540 TEST_P(ResourceProviderTest, Basic) { |
| 540 CheckCreateResource(GetParam(), resource_provider_.get(), context()); | 541 CheckCreateResource(GetParam(), resource_provider_.get(), context()); |
| 541 } | 542 } |
| 542 | 543 |
| 543 TEST_P(ResourceProviderTest, Upload) { | 544 TEST_P(ResourceProviderTest, Upload) { |
| 544 gfx::Size size(2, 2); | 545 gfx::Size size(2, 2); |
| 545 ResourceFormat format = RGBA_8888; | 546 ResourceFormat format = RGBA_8888; |
| 546 size_t pixel_size = TextureSizeBytes(size, format); | 547 size_t pixel_size = TextureSizeBytes(size, format); |
| 547 ASSERT_EQ(16U, pixel_size); | 548 ASSERT_EQ(16U, pixel_size); |
| 548 | 549 |
| 549 ResourceProvider::ResourceId id = resource_provider_->CreateResource( | 550 ResourceProvider::ResourceId id = resource_provider_->CreateResource( |
| 550 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 551 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 551 | 552 |
| 552 uint8_t image[16] = { 0 }; | 553 uint8_t image[16] = { 0 }; |
| 553 gfx::Rect image_rect(size); | 554 gfx::Rect image_rect(size); |
| 554 resource_provider_->SetPixels( | 555 resource_provider_->SetPixels( |
| 555 id, image, image_rect, image_rect, gfx::Vector2d()); | 556 id, image, image_rect, image_rect, gfx::Vector2d()); |
| 556 | 557 |
| 557 for (uint8_t i = 0; i < pixel_size; ++i) | 558 for (uint8_t i = 0; i < pixel_size; ++i) |
| 558 image[i] = i; | 559 image[i] = i; |
| 559 | 560 |
| 560 uint8_t result[16] = { 0 }; | 561 uint8_t result[16] = { 0 }; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 600 | 601 |
| 601 uint8_t expected[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3 }; | 602 uint8_t expected[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3 }; |
| 602 GetResourcePixels( | 603 GetResourcePixels( |
| 603 resource_provider_.get(), context(), id, size, format, result); | 604 resource_provider_.get(), context(), id, size, format, result); |
| 604 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); | 605 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); |
| 605 } | 606 } |
| 606 | 607 |
| 607 resource_provider_->DeleteResource(id); | 608 resource_provider_->DeleteResource(id); |
| 608 } | 609 } |
| 609 | 610 |
| 610 TEST_P(ResourceProviderTest, SimpleUpload) { | |
| 611 gfx::Size size(2, 2); | |
| 612 ResourceFormat format = RGBA_8888; | |
| 613 size_t pixel_size = TextureSizeBytes(size, format); | |
| 614 ASSERT_EQ(16U, pixel_size); | |
| 615 | |
| 616 ResourceProvider::ResourceId id = resource_provider_->CreateResource( | |
| 617 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | |
| 618 | |
| 619 uint8_t image[16] = {0}; | |
| 620 resource_provider_->CopyToResource(id, image, size); | |
| 621 { | |
| 622 uint8_t result[16] = {0}; | |
| 623 uint8_t expected[16] = {0}; | |
| 624 GetResourcePixels(resource_provider_.get(), context(), id, size, format, | |
| 625 result); | |
| 626 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); | |
| 627 } | |
| 628 | |
| 629 for (uint8_t i = 0; i < pixel_size; ++i) | |
| 630 image[i] = i; | |
| 631 resource_provider_->CopyToResource(id, image, size); | |
| 632 { | |
| 633 uint8_t result[16] = {0}; | |
| 634 uint8_t expected[16] = { | |
| 635 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; | |
| 636 GetResourcePixels(resource_provider_.get(), context(), id, size, format, | |
| 637 result); | |
| 638 EXPECT_EQ(0, memcmp(expected, result, pixel_size)); | |
| 639 } | |
| 640 } | |
| 641 | |
| 642 TEST_P(ResourceProviderTest, TransferGLResources) { | 611 TEST_P(ResourceProviderTest, TransferGLResources) { |
| 643 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 612 if (GetParam() != ResourceProvider::GLTexture) |
| 644 return; | 613 return; |
| 645 gfx::Size size(1, 1); | 614 gfx::Size size(1, 1); |
| 646 ResourceFormat format = RGBA_8888; | 615 ResourceFormat format = RGBA_8888; |
| 647 size_t pixel_size = TextureSizeBytes(size, format); | 616 size_t pixel_size = TextureSizeBytes(size, format); |
| 648 ASSERT_EQ(4U, pixel_size); | 617 ASSERT_EQ(4U, pixel_size); |
| 649 | 618 |
| 650 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 619 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
| 651 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 620 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 652 uint8_t data1[4] = { 1, 2, 3, 4 }; | 621 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 653 child_resource_provider_->CopyToResource(id1, data1, size); | 622 gfx::Rect rect(size); |
| 623 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
| 654 | 624 |
| 655 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 625 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
| 656 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 626 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 657 uint8_t data2[4] = { 5, 5, 5, 5 }; | 627 uint8_t data2[4] = { 5, 5, 5, 5 }; |
| 658 child_resource_provider_->CopyToResource(id2, data2, size); | 628 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); |
| 659 | 629 |
| 660 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( | 630 ResourceProvider::ResourceId id3 = child_resource_provider_->CreateResource( |
| 661 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 631 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 662 { | 632 { |
| 663 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( | 633 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
| 664 child_resource_provider_.get(), id3); | 634 child_resource_provider_.get(), id3); |
| 665 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); | 635 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); |
| 666 } | 636 } |
| 667 | 637 |
| 668 GLuint external_texture_id = child_context_->createExternalTexture(); | 638 GLuint external_texture_id = child_context_->createExternalTexture(); |
| 669 child_context_->bindTexture(GL_TEXTURE_EXTERNAL_OES, external_texture_id); | 639 child_context_->bindTexture(GL_TEXTURE_EXTERNAL_OES, external_texture_id); |
| 670 | 640 |
| 671 gpu::Mailbox external_mailbox; | 641 gpu::Mailbox external_mailbox; |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 878 EXPECT_NE(0u, returned_to_child[1].sync_point); | 848 EXPECT_NE(0u, returned_to_child[1].sync_point); |
| 879 EXPECT_NE(0u, returned_to_child[2].sync_point); | 849 EXPECT_NE(0u, returned_to_child[2].sync_point); |
| 880 EXPECT_NE(0u, returned_to_child[3].sync_point); | 850 EXPECT_NE(0u, returned_to_child[3].sync_point); |
| 881 EXPECT_FALSE(returned_to_child[0].lost); | 851 EXPECT_FALSE(returned_to_child[0].lost); |
| 882 EXPECT_FALSE(returned_to_child[1].lost); | 852 EXPECT_FALSE(returned_to_child[1].lost); |
| 883 EXPECT_FALSE(returned_to_child[2].lost); | 853 EXPECT_FALSE(returned_to_child[2].lost); |
| 884 EXPECT_FALSE(returned_to_child[3].lost); | 854 EXPECT_FALSE(returned_to_child[3].lost); |
| 885 } | 855 } |
| 886 | 856 |
| 887 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { | 857 TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { |
| 888 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 858 if (GetParam() != ResourceProvider::GLTexture) |
| 889 return; | 859 return; |
| 890 gfx::Size size(1, 1); | 860 gfx::Size size(1, 1); |
| 891 ResourceFormat format = RGBA_8888; | 861 ResourceFormat format = RGBA_8888; |
| 892 | 862 |
| 893 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 863 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
| 894 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 864 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 895 uint8_t data1[4] = {1, 2, 3, 4}; | 865 uint8_t data1[4] = {1, 2, 3, 4}; |
| 896 child_resource_provider_->CopyToResource(id1, data1, size); | 866 gfx::Rect rect(size); |
| 867 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
| 897 | 868 |
| 898 ReturnedResourceArray returned_to_child; | 869 ReturnedResourceArray returned_to_child; |
| 899 int child_id = | 870 int child_id = |
| 900 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 871 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 901 { | 872 { |
| 902 // Transfer some resources to the parent. | 873 // Transfer some resources to the parent. |
| 903 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 874 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 904 resource_ids_to_transfer.push_back(id1); | 875 resource_ids_to_transfer.push_back(id1); |
| 905 TransferableResourceArray list; | 876 TransferableResourceArray list; |
| 906 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 877 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 930 EXPECT_EQ(1u, child_resource_provider_->num_resources()); | 901 EXPECT_EQ(1u, child_resource_provider_->num_resources()); |
| 931 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 902 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 932 } | 903 } |
| 933 | 904 |
| 934 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 905 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
| 935 resource_provider_->DestroyChild(child_id); | 906 resource_provider_->DestroyChild(child_id); |
| 936 } | 907 } |
| 937 | 908 |
| 938 TEST_P(ResourceProviderTest, AllowOverlayTransfersToParent) { | 909 TEST_P(ResourceProviderTest, AllowOverlayTransfersToParent) { |
| 939 // Overlays only supported on the GL path. | 910 // Overlays only supported on the GL path. |
| 940 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 911 if (GetParam() != ResourceProvider::GLTexture) |
| 941 return; | 912 return; |
| 942 | 913 |
| 943 uint32 sync_point = 0; | 914 uint32 sync_point = 0; |
| 944 TextureMailbox mailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); | 915 TextureMailbox mailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
| 945 mailbox.set_allow_overlay(true); | 916 mailbox.set_allow_overlay(true); |
| 946 scoped_ptr<SingleReleaseCallbackImpl> release_callback = | 917 scoped_ptr<SingleReleaseCallbackImpl> release_callback = |
| 947 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); | 918 SingleReleaseCallbackImpl::Create(base::Bind(&EmptyReleaseCallback)); |
| 948 ResourceProvider::ResourceId id1 = | 919 ResourceProvider::ResourceId id1 = |
| 949 child_resource_provider_->CreateResourceFromTextureMailbox( | 920 child_resource_provider_->CreateResourceFromTextureMailbox( |
| 950 mailbox, release_callback.Pass()); | 921 mailbox, release_callback.Pass()); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 980 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 951 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 981 | 952 |
| 982 child_resource_provider_->DeleteResource(id1); | 953 child_resource_provider_->DeleteResource(id1); |
| 983 child_resource_provider_->DeleteResource(id2); | 954 child_resource_provider_->DeleteResource(id2); |
| 984 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 955 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
| 985 | 956 |
| 986 resource_provider_->DestroyChild(child_id); | 957 resource_provider_->DestroyChild(child_id); |
| 987 } | 958 } |
| 988 | 959 |
| 989 TEST_P(ResourceProviderTest, TransferSoftwareResources) { | 960 TEST_P(ResourceProviderTest, TransferSoftwareResources) { |
| 990 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) | 961 if (GetParam() != ResourceProvider::Bitmap) |
| 991 return; | 962 return; |
| 992 | 963 |
| 993 gfx::Size size(1, 1); | 964 gfx::Size size(1, 1); |
| 994 ResourceFormat format = RGBA_8888; | 965 ResourceFormat format = RGBA_8888; |
| 995 size_t pixel_size = TextureSizeBytes(size, format); | 966 size_t pixel_size = TextureSizeBytes(size, format); |
| 996 ASSERT_EQ(4U, pixel_size); | 967 ASSERT_EQ(4U, pixel_size); |
| 997 | 968 |
| 998 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 969 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
| 999 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 970 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1000 uint8_t data1[4] = { 1, 2, 3, 4 }; | 971 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 1001 child_resource_provider_->CopyToResource(id1, data1, size); | 972 gfx::Rect rect(size); |
| 973 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
| 1002 | 974 |
| 1003 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 975 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
| 1004 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 976 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1005 uint8_t data2[4] = { 5, 5, 5, 5 }; | 977 uint8_t data2[4] = { 5, 5, 5, 5 }; |
| 1006 child_resource_provider_->CopyToResource(id2, data2, size); | 978 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); |
| 1007 | 979 |
| 1008 scoped_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( | 980 scoped_ptr<SharedBitmap> shared_bitmap(CreateAndFillSharedBitmap( |
| 1009 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); | 981 shared_bitmap_manager_.get(), gfx::Size(1, 1), 0)); |
| 1010 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); | 982 SharedBitmap* shared_bitmap_ptr = shared_bitmap.get(); |
| 1011 ResourceProvider::ResourceId id3 = | 983 ResourceProvider::ResourceId id3 = |
| 1012 child_resource_provider_->CreateResourceFromTextureMailbox( | 984 child_resource_provider_->CreateResourceFromTextureMailbox( |
| 1013 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), | 985 TextureMailbox(shared_bitmap_ptr, gfx::Size(1, 1)), |
| 1014 SingleReleaseCallbackImpl::Create(base::Bind( | 986 SingleReleaseCallbackImpl::Create(base::Bind( |
| 1015 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); | 987 &SharedBitmapReleaseCallback, base::Passed(&shared_bitmap)))); |
| 1016 | 988 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 std::set<ResourceProvider::ResourceId> returned_ids; | 1136 std::set<ResourceProvider::ResourceId> returned_ids; |
| 1165 for (unsigned i = 0; i < 3; i++) | 1137 for (unsigned i = 0; i < 3; i++) |
| 1166 returned_ids.insert(returned_to_child[i].id); | 1138 returned_ids.insert(returned_to_child[i].id); |
| 1167 EXPECT_EQ(expected_ids, returned_ids); | 1139 EXPECT_EQ(expected_ids, returned_ids); |
| 1168 EXPECT_FALSE(returned_to_child[0].lost); | 1140 EXPECT_FALSE(returned_to_child[0].lost); |
| 1169 EXPECT_FALSE(returned_to_child[1].lost); | 1141 EXPECT_FALSE(returned_to_child[1].lost); |
| 1170 EXPECT_FALSE(returned_to_child[2].lost); | 1142 EXPECT_FALSE(returned_to_child[2].lost); |
| 1171 } | 1143 } |
| 1172 | 1144 |
| 1173 TEST_P(ResourceProviderTest, TransferGLToSoftware) { | 1145 TEST_P(ResourceProviderTest, TransferGLToSoftware) { |
| 1174 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) | 1146 if (GetParam() != ResourceProvider::Bitmap) |
| 1175 return; | 1147 return; |
| 1176 | 1148 |
| 1177 scoped_ptr<ResourceProviderContext> child_context_owned( | 1149 scoped_ptr<ResourceProviderContext> child_context_owned( |
| 1178 ResourceProviderContext::Create(shared_data_.get())); | 1150 ResourceProviderContext::Create(shared_data_.get())); |
| 1179 | 1151 |
| 1180 FakeOutputSurfaceClient child_output_surface_client; | 1152 FakeOutputSurfaceClient child_output_surface_client; |
| 1181 scoped_ptr<OutputSurface> child_output_surface( | 1153 scoped_ptr<OutputSurface> child_output_surface( |
| 1182 FakeOutputSurface::Create3d(child_context_owned.Pass())); | 1154 FakeOutputSurface::Create3d(child_context_owned.Pass())); |
| 1183 CHECK(child_output_surface->BindToClient(&child_output_surface_client)); | 1155 CHECK(child_output_surface->BindToClient(&child_output_surface_client)); |
| 1184 | 1156 |
| 1185 scoped_ptr<ResourceProvider> child_resource_provider( | 1157 scoped_ptr<ResourceProvider> child_resource_provider( |
| 1186 ResourceProvider::Create(child_output_surface.get(), | 1158 ResourceProvider::Create(child_output_surface.get(), |
| 1187 shared_bitmap_manager_.get(), | 1159 shared_bitmap_manager_.get(), |
| 1188 gpu_memory_buffer_manager_.get(), | 1160 gpu_memory_buffer_manager_.get(), |
| 1189 NULL, | 1161 NULL, |
| 1190 0, | 1162 0, |
| 1191 false, | 1163 false, |
| 1192 1)); | 1164 1)); |
| 1193 | 1165 |
| 1194 gfx::Size size(1, 1); | 1166 gfx::Size size(1, 1); |
| 1195 ResourceFormat format = RGBA_8888; | 1167 ResourceFormat format = RGBA_8888; |
| 1196 size_t pixel_size = TextureSizeBytes(size, format); | 1168 size_t pixel_size = TextureSizeBytes(size, format); |
| 1197 ASSERT_EQ(4U, pixel_size); | 1169 ASSERT_EQ(4U, pixel_size); |
| 1198 | 1170 |
| 1199 ResourceProvider::ResourceId id1 = child_resource_provider->CreateResource( | 1171 ResourceProvider::ResourceId id1 = child_resource_provider->CreateResource( |
| 1200 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1172 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1201 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1173 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 1202 child_resource_provider->CopyToResource(id1, data1, size); | 1174 gfx::Rect rect(size); |
| 1175 child_resource_provider->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
| 1203 | 1176 |
| 1204 ReturnedResourceArray returned_to_child; | 1177 ReturnedResourceArray returned_to_child; |
| 1205 int child_id = | 1178 int child_id = |
| 1206 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1179 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 1207 { | 1180 { |
| 1208 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1181 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1209 resource_ids_to_transfer.push_back(id1); | 1182 resource_ids_to_transfer.push_back(id1); |
| 1210 TransferableResourceArray list; | 1183 TransferableResourceArray list; |
| 1211 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, | 1184 child_resource_provider->PrepareSendToParent(resource_ids_to_transfer, |
| 1212 &list); | 1185 &list); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1227 EXPECT_EQ(0u, mapped_id1); | 1200 EXPECT_EQ(0u, mapped_id1); |
| 1228 | 1201 |
| 1229 resource_provider_->DestroyChild(child_id); | 1202 resource_provider_->DestroyChild(child_id); |
| 1230 EXPECT_EQ(0u, resource_provider_->num_resources()); | 1203 EXPECT_EQ(0u, resource_provider_->num_resources()); |
| 1231 | 1204 |
| 1232 ASSERT_EQ(1u, returned_to_child.size()); | 1205 ASSERT_EQ(1u, returned_to_child.size()); |
| 1233 EXPECT_FALSE(returned_to_child[0].lost); | 1206 EXPECT_FALSE(returned_to_child[0].lost); |
| 1234 } | 1207 } |
| 1235 | 1208 |
| 1236 TEST_P(ResourceProviderTest, TransferInvalidSoftware) { | 1209 TEST_P(ResourceProviderTest, TransferInvalidSoftware) { |
| 1237 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) | 1210 if (GetParam() != ResourceProvider::Bitmap) |
| 1238 return; | 1211 return; |
| 1239 | 1212 |
| 1240 gfx::Size size(1, 1); | 1213 gfx::Size size(1, 1); |
| 1241 ResourceFormat format = RGBA_8888; | 1214 ResourceFormat format = RGBA_8888; |
| 1242 size_t pixel_size = TextureSizeBytes(size, format); | 1215 size_t pixel_size = TextureSizeBytes(size, format); |
| 1243 ASSERT_EQ(4U, pixel_size); | 1216 ASSERT_EQ(4U, pixel_size); |
| 1244 | 1217 |
| 1245 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1218 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
| 1246 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1219 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1247 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1220 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 1248 child_resource_provider_->CopyToResource(id1, data1, size); | 1221 gfx::Rect rect(size); |
| 1222 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
| 1249 | 1223 |
| 1250 ReturnedResourceArray returned_to_child; | 1224 ReturnedResourceArray returned_to_child; |
| 1251 int child_id = | 1225 int child_id = |
| 1252 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1226 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 1253 { | 1227 { |
| 1254 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1228 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1255 resource_ids_to_transfer.push_back(id1); | 1229 resource_ids_to_transfer.push_back(id1); |
| 1256 TransferableResourceArray list; | 1230 TransferableResourceArray list; |
| 1257 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1231 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1258 &list); | 1232 &list); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1283 EXPECT_FALSE(returned_to_child[0].lost); | 1257 EXPECT_FALSE(returned_to_child[0].lost); |
| 1284 } | 1258 } |
| 1285 | 1259 |
| 1286 TEST_P(ResourceProviderTest, DeleteExportedResources) { | 1260 TEST_P(ResourceProviderTest, DeleteExportedResources) { |
| 1287 gfx::Size size(1, 1); | 1261 gfx::Size size(1, 1); |
| 1288 ResourceFormat format = RGBA_8888; | 1262 ResourceFormat format = RGBA_8888; |
| 1289 size_t pixel_size = TextureSizeBytes(size, format); | 1263 size_t pixel_size = TextureSizeBytes(size, format); |
| 1290 ASSERT_EQ(4U, pixel_size); | 1264 ASSERT_EQ(4U, pixel_size); |
| 1291 | 1265 |
| 1292 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1266 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
| 1293 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1267 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1294 uint8_t data1[4] = { 1, 2, 3, 4 }; | 1268 uint8_t data1[4] = { 1, 2, 3, 4 }; |
| 1295 child_resource_provider_->CopyToResource(id1, data1, size); | 1269 gfx::Rect rect(size); |
| 1270 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
| 1296 | 1271 |
| 1297 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1272 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
| 1298 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1273 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1299 uint8_t data2[4] = {5, 5, 5, 5}; | 1274 uint8_t data2[4] = {5, 5, 5, 5}; |
| 1300 child_resource_provider_->CopyToResource(id2, data2, size); | 1275 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); |
| 1301 | 1276 |
| 1302 ReturnedResourceArray returned_to_child; | 1277 ReturnedResourceArray returned_to_child; |
| 1303 int child_id = | 1278 int child_id = |
| 1304 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1279 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 1305 { | 1280 { |
| 1306 // Transfer some resources to the parent. | 1281 // Transfer some resources to the parent. |
| 1307 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1282 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1308 resource_ids_to_transfer.push_back(id1); | 1283 resource_ids_to_transfer.push_back(id1); |
| 1309 resource_ids_to_transfer.push_back(id2); | 1284 resource_ids_to_transfer.push_back(id2); |
| 1310 TransferableResourceArray list; | 1285 TransferableResourceArray list; |
| 1311 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1286 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1312 &list); | 1287 &list); |
| 1313 ASSERT_EQ(2u, list.size()); | 1288 ASSERT_EQ(2u, list.size()); |
| 1314 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1289 if (GetParam() == ResourceProvider::GLTexture) { |
| 1315 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); | 1290 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); |
| 1316 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); | 1291 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); |
| 1317 } | 1292 } |
| 1318 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1293 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1319 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1294 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 1320 resource_provider_->ReceiveFromChild(child_id, list); | 1295 resource_provider_->ReceiveFromChild(child_id, list); |
| 1321 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1296 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1322 resource_ids_to_transfer); | 1297 resource_ids_to_transfer); |
| 1323 } | 1298 } |
| 1324 | 1299 |
| 1325 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1300 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1326 ResourceProvider::ResourceIdMap resource_map = | 1301 ResourceProvider::ResourceIdMap resource_map = |
| 1327 resource_provider_->GetChildToParentMap(child_id); | 1302 resource_provider_->GetChildToParentMap(child_id); |
| 1328 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 1303 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; |
| 1329 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; | 1304 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; |
| 1330 EXPECT_NE(0u, mapped_id1); | 1305 EXPECT_NE(0u, mapped_id1); |
| 1331 EXPECT_NE(0u, mapped_id2); | 1306 EXPECT_NE(0u, mapped_id2); |
| 1332 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); | 1307 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); |
| 1333 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); | 1308 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); |
| 1334 | 1309 |
| 1335 { | 1310 { |
| 1336 // The parent transfers the resources to the grandparent. | 1311 // The parent transfers the resources to the grandparent. |
| 1337 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1312 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1338 resource_ids_to_transfer.push_back(mapped_id1); | 1313 resource_ids_to_transfer.push_back(mapped_id1); |
| 1339 resource_ids_to_transfer.push_back(mapped_id2); | 1314 resource_ids_to_transfer.push_back(mapped_id2); |
| 1340 TransferableResourceArray list; | 1315 TransferableResourceArray list; |
| 1341 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 1316 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
| 1342 | 1317 |
| 1343 ASSERT_EQ(2u, list.size()); | 1318 ASSERT_EQ(2u, list.size()); |
| 1344 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1319 if (GetParam() == ResourceProvider::GLTexture) { |
| 1345 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); | 1320 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); |
| 1346 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); | 1321 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); |
| 1347 } | 1322 } |
| 1348 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); | 1323 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); |
| 1349 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); | 1324 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); |
| 1350 | 1325 |
| 1351 // Release the resource in the parent. Set no resources as being in use. The | 1326 // Release the resource in the parent. Set no resources as being in use. The |
| 1352 // resources are exported so that can't be transferred back yet. | 1327 // resources are exported so that can't be transferred back yet. |
| 1353 ResourceProvider::ResourceIdArray no_resources; | 1328 ResourceProvider::ResourceIdArray no_resources; |
| 1354 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1329 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 1355 | 1330 |
| 1356 EXPECT_EQ(0u, returned_to_child.size()); | 1331 EXPECT_EQ(0u, returned_to_child.size()); |
| 1357 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1332 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1358 | 1333 |
| 1359 // Return the resources from the grandparent to the parent. They should be | 1334 // Return the resources from the grandparent to the parent. They should be |
| 1360 // returned to the child then. | 1335 // returned to the child then. |
| 1361 EXPECT_EQ(2u, list.size()); | 1336 EXPECT_EQ(2u, list.size()); |
| 1362 EXPECT_EQ(mapped_id1, list[0].id); | 1337 EXPECT_EQ(mapped_id1, list[0].id); |
| 1363 EXPECT_EQ(mapped_id2, list[1].id); | 1338 EXPECT_EQ(mapped_id2, list[1].id); |
| 1364 ReturnedResourceArray returned; | 1339 ReturnedResourceArray returned; |
| 1365 TransferableResource::ReturnResources(list, &returned); | 1340 TransferableResource::ReturnResources(list, &returned); |
| 1366 resource_provider_->ReceiveReturnsFromParent(returned); | 1341 resource_provider_->ReceiveReturnsFromParent(returned); |
| 1367 | 1342 |
| 1368 EXPECT_EQ(0u, resource_provider_->num_resources()); | 1343 EXPECT_EQ(0u, resource_provider_->num_resources()); |
| 1369 ASSERT_EQ(2u, returned_to_child.size()); | 1344 ASSERT_EQ(2u, returned_to_child.size()); |
| 1370 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1345 if (GetParam() == ResourceProvider::GLTexture) { |
| 1371 EXPECT_NE(0u, returned_to_child[0].sync_point); | 1346 EXPECT_NE(0u, returned_to_child[0].sync_point); |
| 1372 EXPECT_NE(0u, returned_to_child[1].sync_point); | 1347 EXPECT_NE(0u, returned_to_child[1].sync_point); |
| 1373 } | 1348 } |
| 1374 EXPECT_FALSE(returned_to_child[0].lost); | 1349 EXPECT_FALSE(returned_to_child[0].lost); |
| 1375 EXPECT_FALSE(returned_to_child[1].lost); | 1350 EXPECT_FALSE(returned_to_child[1].lost); |
| 1376 } | 1351 } |
| 1377 } | 1352 } |
| 1378 | 1353 |
| 1379 TEST_P(ResourceProviderTest, DestroyChildWithExportedResources) { | 1354 TEST_P(ResourceProviderTest, DestroyChildWithExportedResources) { |
| 1380 gfx::Size size(1, 1); | 1355 gfx::Size size(1, 1); |
| 1381 ResourceFormat format = RGBA_8888; | 1356 ResourceFormat format = RGBA_8888; |
| 1382 size_t pixel_size = TextureSizeBytes(size, format); | 1357 size_t pixel_size = TextureSizeBytes(size, format); |
| 1383 ASSERT_EQ(4U, pixel_size); | 1358 ASSERT_EQ(4U, pixel_size); |
| 1384 | 1359 |
| 1385 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( | 1360 ResourceProvider::ResourceId id1 = child_resource_provider_->CreateResource( |
| 1386 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1361 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1387 uint8_t data1[4] = {1, 2, 3, 4}; | 1362 uint8_t data1[4] = {1, 2, 3, 4}; |
| 1388 child_resource_provider_->CopyToResource(id1, data1, size); | 1363 gfx::Rect rect(size); |
| 1364 child_resource_provider_->SetPixels(id1, data1, rect, rect, gfx::Vector2d()); |
| 1389 | 1365 |
| 1390 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( | 1366 ResourceProvider::ResourceId id2 = child_resource_provider_->CreateResource( |
| 1391 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1367 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1392 uint8_t data2[4] = {5, 5, 5, 5}; | 1368 uint8_t data2[4] = {5, 5, 5, 5}; |
| 1393 child_resource_provider_->CopyToResource(id2, data2, size); | 1369 child_resource_provider_->SetPixels(id2, data2, rect, rect, gfx::Vector2d()); |
| 1394 | 1370 |
| 1395 ReturnedResourceArray returned_to_child; | 1371 ReturnedResourceArray returned_to_child; |
| 1396 int child_id = | 1372 int child_id = |
| 1397 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1373 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 1398 { | 1374 { |
| 1399 // Transfer some resources to the parent. | 1375 // Transfer some resources to the parent. |
| 1400 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1376 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1401 resource_ids_to_transfer.push_back(id1); | 1377 resource_ids_to_transfer.push_back(id1); |
| 1402 resource_ids_to_transfer.push_back(id2); | 1378 resource_ids_to_transfer.push_back(id2); |
| 1403 TransferableResourceArray list; | 1379 TransferableResourceArray list; |
| 1404 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1380 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1405 &list); | 1381 &list); |
| 1406 ASSERT_EQ(2u, list.size()); | 1382 ASSERT_EQ(2u, list.size()); |
| 1407 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1383 if (GetParam() == ResourceProvider::GLTexture) { |
| 1408 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); | 1384 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); |
| 1409 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); | 1385 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); |
| 1410 } | 1386 } |
| 1411 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); | 1387 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id1)); |
| 1412 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); | 1388 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id2)); |
| 1413 resource_provider_->ReceiveFromChild(child_id, list); | 1389 resource_provider_->ReceiveFromChild(child_id, list); |
| 1414 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1390 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1415 resource_ids_to_transfer); | 1391 resource_ids_to_transfer); |
| 1416 } | 1392 } |
| 1417 | 1393 |
| 1418 EXPECT_EQ(2u, resource_provider_->num_resources()); | 1394 EXPECT_EQ(2u, resource_provider_->num_resources()); |
| 1419 ResourceProvider::ResourceIdMap resource_map = | 1395 ResourceProvider::ResourceIdMap resource_map = |
| 1420 resource_provider_->GetChildToParentMap(child_id); | 1396 resource_provider_->GetChildToParentMap(child_id); |
| 1421 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; | 1397 ResourceProvider::ResourceId mapped_id1 = resource_map[id1]; |
| 1422 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; | 1398 ResourceProvider::ResourceId mapped_id2 = resource_map[id2]; |
| 1423 EXPECT_NE(0u, mapped_id1); | 1399 EXPECT_NE(0u, mapped_id1); |
| 1424 EXPECT_NE(0u, mapped_id2); | 1400 EXPECT_NE(0u, mapped_id2); |
| 1425 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); | 1401 EXPECT_FALSE(resource_provider_->InUseByConsumer(id1)); |
| 1426 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); | 1402 EXPECT_FALSE(resource_provider_->InUseByConsumer(id2)); |
| 1427 | 1403 |
| 1428 { | 1404 { |
| 1429 // The parent transfers the resources to the grandparent. | 1405 // The parent transfers the resources to the grandparent. |
| 1430 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1406 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1431 resource_ids_to_transfer.push_back(mapped_id1); | 1407 resource_ids_to_transfer.push_back(mapped_id1); |
| 1432 resource_ids_to_transfer.push_back(mapped_id2); | 1408 resource_ids_to_transfer.push_back(mapped_id2); |
| 1433 TransferableResourceArray list; | 1409 TransferableResourceArray list; |
| 1434 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); | 1410 resource_provider_->PrepareSendToParent(resource_ids_to_transfer, &list); |
| 1435 | 1411 |
| 1436 ASSERT_EQ(2u, list.size()); | 1412 ASSERT_EQ(2u, list.size()); |
| 1437 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1413 if (GetParam() == ResourceProvider::GLTexture) { |
| 1438 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); | 1414 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); |
| 1439 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); | 1415 EXPECT_NE(0u, list[1].mailbox_holder.sync_point); |
| 1440 } | 1416 } |
| 1441 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); | 1417 EXPECT_TRUE(resource_provider_->InUseByConsumer(id1)); |
| 1442 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); | 1418 EXPECT_TRUE(resource_provider_->InUseByConsumer(id2)); |
| 1443 | 1419 |
| 1444 // Release the resource in the parent. Set no resources as being in use. The | 1420 // Release the resource in the parent. Set no resources as being in use. The |
| 1445 // resources are exported so that can't be transferred back yet. | 1421 // resources are exported so that can't be transferred back yet. |
| 1446 ResourceProvider::ResourceIdArray no_resources; | 1422 ResourceProvider::ResourceIdArray no_resources; |
| 1447 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1423 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1462 EXPECT_EQ(mapped_id2, list[1].id); | 1438 EXPECT_EQ(mapped_id2, list[1].id); |
| 1463 TransferableResourceArray return_list; | 1439 TransferableResourceArray return_list; |
| 1464 return_list.push_back(list[1]); | 1440 return_list.push_back(list[1]); |
| 1465 list.pop_back(); | 1441 list.pop_back(); |
| 1466 ReturnedResourceArray returned; | 1442 ReturnedResourceArray returned; |
| 1467 TransferableResource::ReturnResources(return_list, &returned); | 1443 TransferableResource::ReturnResources(return_list, &returned); |
| 1468 resource_provider_->ReceiveReturnsFromParent(returned); | 1444 resource_provider_->ReceiveReturnsFromParent(returned); |
| 1469 | 1445 |
| 1470 EXPECT_EQ(1u, resource_provider_->num_resources()); | 1446 EXPECT_EQ(1u, resource_provider_->num_resources()); |
| 1471 ASSERT_EQ(1u, returned_to_child.size()); | 1447 ASSERT_EQ(1u, returned_to_child.size()); |
| 1472 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1448 if (GetParam() == ResourceProvider::GLTexture) { |
| 1473 EXPECT_NE(0u, returned_to_child[0].sync_point); | 1449 EXPECT_NE(0u, returned_to_child[0].sync_point); |
| 1474 } | 1450 } |
| 1475 EXPECT_FALSE(returned_to_child[0].lost); | 1451 EXPECT_FALSE(returned_to_child[0].lost); |
| 1476 returned_to_child.clear(); | 1452 returned_to_child.clear(); |
| 1477 | 1453 |
| 1478 // Destroy the parent resource provider. The resource that's left should be | 1454 // Destroy the parent resource provider. The resource that's left should be |
| 1479 // lost at this point, and returned. | 1455 // lost at this point, and returned. |
| 1480 resource_provider_ = nullptr; | 1456 resource_provider_ = nullptr; |
| 1481 ASSERT_EQ(1u, returned_to_child.size()); | 1457 ASSERT_EQ(1u, returned_to_child.size()); |
| 1482 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 1458 if (GetParam() == ResourceProvider::GLTexture) { |
| 1483 EXPECT_NE(0u, returned_to_child[0].sync_point); | 1459 EXPECT_NE(0u, returned_to_child[0].sync_point); |
| 1484 } | 1460 } |
| 1485 EXPECT_TRUE(returned_to_child[0].lost); | 1461 EXPECT_TRUE(returned_to_child[0].lost); |
| 1486 } | 1462 } |
| 1487 } | 1463 } |
| 1488 | 1464 |
| 1489 TEST_P(ResourceProviderTest, DeleteTransferredResources) { | 1465 TEST_P(ResourceProviderTest, DeleteTransferredResources) { |
| 1490 gfx::Size size(1, 1); | 1466 gfx::Size size(1, 1); |
| 1491 ResourceFormat format = RGBA_8888; | 1467 ResourceFormat format = RGBA_8888; |
| 1492 size_t pixel_size = TextureSizeBytes(size, format); | 1468 size_t pixel_size = TextureSizeBytes(size, format); |
| 1493 ASSERT_EQ(4U, pixel_size); | 1469 ASSERT_EQ(4U, pixel_size); |
| 1494 | 1470 |
| 1495 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( | 1471 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( |
| 1496 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1472 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1497 uint8_t data[4] = { 1, 2, 3, 4 }; | 1473 uint8_t data[4] = { 1, 2, 3, 4 }; |
| 1498 child_resource_provider_->CopyToResource(id, data, size); | 1474 gfx::Rect rect(size); |
| 1475 child_resource_provider_->SetPixels(id, data, rect, rect, gfx::Vector2d()); |
| 1499 | 1476 |
| 1500 ReturnedResourceArray returned_to_child; | 1477 ReturnedResourceArray returned_to_child; |
| 1501 int child_id = | 1478 int child_id = |
| 1502 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1479 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 1503 { | 1480 { |
| 1504 // Transfer some resource to the parent. | 1481 // Transfer some resource to the parent. |
| 1505 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1482 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1506 resource_ids_to_transfer.push_back(id); | 1483 resource_ids_to_transfer.push_back(id); |
| 1507 TransferableResourceArray list; | 1484 TransferableResourceArray list; |
| 1508 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1485 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| 1509 &list); | 1486 &list); |
| 1510 ASSERT_EQ(1u, list.size()); | 1487 ASSERT_EQ(1u, list.size()); |
| 1511 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1488 if (GetParam() == ResourceProvider::GLTexture) |
| 1512 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); | 1489 EXPECT_NE(0u, list[0].mailbox_holder.sync_point); |
| 1513 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); | 1490 EXPECT_TRUE(child_resource_provider_->InUseByConsumer(id)); |
| 1514 resource_provider_->ReceiveFromChild(child_id, list); | 1491 resource_provider_->ReceiveFromChild(child_id, list); |
| 1515 resource_provider_->DeclareUsedResourcesFromChild(child_id, | 1492 resource_provider_->DeclareUsedResourcesFromChild(child_id, |
| 1516 resource_ids_to_transfer); | 1493 resource_ids_to_transfer); |
| 1517 } | 1494 } |
| 1518 | 1495 |
| 1519 // Delete textures in the child, while they are transfered. | 1496 // Delete textures in the child, while they are transfered. |
| 1520 child_resource_provider_->DeleteResource(id); | 1497 child_resource_provider_->DeleteResource(id); |
| 1521 EXPECT_EQ(1u, child_resource_provider_->num_resources()); | 1498 EXPECT_EQ(1u, child_resource_provider_->num_resources()); |
| 1522 { | 1499 { |
| 1523 EXPECT_EQ(0u, returned_to_child.size()); | 1500 EXPECT_EQ(0u, returned_to_child.size()); |
| 1524 | 1501 |
| 1525 // Transfer resources back from the parent to the child. Set no resources as | 1502 // Transfer resources back from the parent to the child. Set no resources as |
| 1526 // being in use. | 1503 // being in use. |
| 1527 ResourceProvider::ResourceIdArray no_resources; | 1504 ResourceProvider::ResourceIdArray no_resources; |
| 1528 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 1505 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 1529 | 1506 |
| 1530 ASSERT_EQ(1u, returned_to_child.size()); | 1507 ASSERT_EQ(1u, returned_to_child.size()); |
| 1531 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1508 if (GetParam() == ResourceProvider::GLTexture) |
| 1532 EXPECT_NE(0u, returned_to_child[0].sync_point); | 1509 EXPECT_NE(0u, returned_to_child[0].sync_point); |
| 1533 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 1510 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 1534 } | 1511 } |
| 1535 EXPECT_EQ(0u, child_resource_provider_->num_resources()); | 1512 EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
| 1536 } | 1513 } |
| 1537 | 1514 |
| 1538 TEST_P(ResourceProviderTest, UnuseTransferredResources) { | 1515 TEST_P(ResourceProviderTest, UnuseTransferredResources) { |
| 1539 gfx::Size size(1, 1); | 1516 gfx::Size size(1, 1); |
| 1540 ResourceFormat format = RGBA_8888; | 1517 ResourceFormat format = RGBA_8888; |
| 1541 size_t pixel_size = TextureSizeBytes(size, format); | 1518 size_t pixel_size = TextureSizeBytes(size, format); |
| 1542 ASSERT_EQ(4U, pixel_size); | 1519 ASSERT_EQ(4U, pixel_size); |
| 1543 | 1520 |
| 1544 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( | 1521 ResourceProvider::ResourceId id = child_resource_provider_->CreateResource( |
| 1545 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 1522 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1546 uint8_t data[4] = {1, 2, 3, 4}; | 1523 uint8_t data[4] = {1, 2, 3, 4}; |
| 1547 child_resource_provider_->CopyToResource(id, data, size); | 1524 gfx::Rect rect(size); |
| 1525 child_resource_provider_->SetPixels(id, data, rect, rect, gfx::Vector2d()); |
| 1548 | 1526 |
| 1549 ReturnedResourceArray returned_to_child; | 1527 ReturnedResourceArray returned_to_child; |
| 1550 int child_id = | 1528 int child_id = |
| 1551 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1529 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 1552 const ResourceProvider::ResourceIdMap& map = | 1530 const ResourceProvider::ResourceIdMap& map = |
| 1553 resource_provider_->GetChildToParentMap(child_id); | 1531 resource_provider_->GetChildToParentMap(child_id); |
| 1554 { | 1532 { |
| 1555 // Transfer some resource to the parent. | 1533 // Transfer some resource to the parent. |
| 1556 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1534 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1557 resource_ids_to_transfer.push_back(id); | 1535 resource_ids_to_transfer.push_back(id); |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1687 | 1665 |
| 1688 gfx::Size size(1, 1); | 1666 gfx::Size size(1, 1); |
| 1689 ResourceFormat format = RGBA_8888; | 1667 ResourceFormat format = RGBA_8888; |
| 1690 int child_texture_id = 1; | 1668 int child_texture_id = 1; |
| 1691 int parent_texture_id = 2; | 1669 int parent_texture_id = 2; |
| 1692 | 1670 |
| 1693 size_t pixel_size = TextureSizeBytes(size, format); | 1671 size_t pixel_size = TextureSizeBytes(size, format); |
| 1694 ASSERT_EQ(4U, pixel_size); | 1672 ASSERT_EQ(4U, pixel_size); |
| 1695 | 1673 |
| 1696 ResourceProvider::ResourceId id = child_resource_provider->CreateResource( | 1674 ResourceProvider::ResourceId id = child_resource_provider->CreateResource( |
| 1697 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 1675 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 1698 format); | |
| 1699 | 1676 |
| 1700 // The new texture is created with GL_LINEAR. | 1677 // The new texture is created with GL_LINEAR. |
| 1701 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)) | 1678 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)) |
| 1702 .Times(2); // Once to create and once to allocate. | 1679 .Times(2); // Once to create and once to allocate. |
| 1703 EXPECT_CALL(*child_context, | 1680 EXPECT_CALL(*child_context, |
| 1704 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 1681 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
| 1705 EXPECT_CALL(*child_context, | 1682 EXPECT_CALL(*child_context, |
| 1706 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 1683 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
| 1707 EXPECT_CALL( | 1684 EXPECT_CALL( |
| 1708 *child_context, | 1685 *child_context, |
| 1709 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); | 1686 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); |
| 1710 EXPECT_CALL( | 1687 EXPECT_CALL( |
| 1711 *child_context, | 1688 *child_context, |
| 1712 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); | 1689 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); |
| 1713 EXPECT_CALL(*child_context, | 1690 EXPECT_CALL(*child_context, |
| 1714 texParameteri(GL_TEXTURE_2D, | 1691 texParameteri(GL_TEXTURE_2D, |
| 1715 GL_TEXTURE_POOL_CHROMIUM, | 1692 GL_TEXTURE_POOL_CHROMIUM, |
| 1716 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); | 1693 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); |
| 1717 child_resource_provider->AllocateForTesting(id); | 1694 child_resource_provider->AllocateForTesting(id); |
| 1718 Mock::VerifyAndClearExpectations(child_context); | 1695 Mock::VerifyAndClearExpectations(child_context); |
| 1719 | 1696 |
| 1720 uint8_t data[4] = { 1, 2, 3, 4 }; | 1697 uint8_t data[4] = { 1, 2, 3, 4 }; |
| 1698 gfx::Rect rect(size); |
| 1721 | 1699 |
| 1722 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); | 1700 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); |
| 1723 child_resource_provider->CopyToResource(id, data, size); | 1701 child_resource_provider->SetPixels(id, data, rect, rect, gfx::Vector2d()); |
| 1724 Mock::VerifyAndClearExpectations(child_context); | 1702 Mock::VerifyAndClearExpectations(child_context); |
| 1725 | 1703 |
| 1726 // The texture is set to |child_filter| in the child. | 1704 // The texture is set to |child_filter| in the child. |
| 1727 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); | 1705 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); |
| 1728 if (child_filter != GL_LINEAR) { | 1706 if (child_filter != GL_LINEAR) { |
| 1729 EXPECT_CALL( | 1707 EXPECT_CALL( |
| 1730 *child_context, | 1708 *child_context, |
| 1731 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); | 1709 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, child_filter)); |
| 1732 EXPECT_CALL( | 1710 EXPECT_CALL( |
| 1733 *child_context, | 1711 *child_context, |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1813 } | 1791 } |
| 1814 | 1792 |
| 1815 // The child remembers the texture filter is set to |child_filter|. | 1793 // The child remembers the texture filter is set to |child_filter|. |
| 1816 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); | 1794 EXPECT_CALL(*child_context, bindTexture(GL_TEXTURE_2D, child_texture_id)); |
| 1817 SetResourceFilter(child_resource_provider.get(), id, child_filter); | 1795 SetResourceFilter(child_resource_provider.get(), id, child_filter); |
| 1818 Mock::VerifyAndClearExpectations(child_context); | 1796 Mock::VerifyAndClearExpectations(child_context); |
| 1819 } | 1797 } |
| 1820 }; | 1798 }; |
| 1821 | 1799 |
| 1822 TEST_P(ResourceProviderTest, TextureFilters_ChildNearestParentLinear) { | 1800 TEST_P(ResourceProviderTest, TextureFilters_ChildNearestParentLinear) { |
| 1823 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1801 if (GetParam() != ResourceProvider::GLTexture) |
| 1824 return; | 1802 return; |
| 1825 ResourceProviderTestTextureFilters::RunTest(GL_NEAREST, GL_LINEAR); | 1803 ResourceProviderTestTextureFilters::RunTest(GL_NEAREST, GL_LINEAR); |
| 1826 } | 1804 } |
| 1827 | 1805 |
| 1828 TEST_P(ResourceProviderTest, TextureFilters_ChildLinearParentNearest) { | 1806 TEST_P(ResourceProviderTest, TextureFilters_ChildLinearParentNearest) { |
| 1829 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1807 if (GetParam() != ResourceProvider::GLTexture) |
| 1830 return; | 1808 return; |
| 1831 ResourceProviderTestTextureFilters::RunTest(GL_LINEAR, GL_NEAREST); | 1809 ResourceProviderTestTextureFilters::RunTest(GL_LINEAR, GL_NEAREST); |
| 1832 } | 1810 } |
| 1833 | 1811 |
| 1834 TEST_P(ResourceProviderTest, TransferMailboxResources) { | 1812 TEST_P(ResourceProviderTest, TransferMailboxResources) { |
| 1835 // Other mailbox transfers tested elsewhere. | 1813 // Other mailbox transfers tested elsewhere. |
| 1836 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 1814 if (GetParam() != ResourceProvider::GLTexture) |
| 1837 return; | 1815 return; |
| 1838 unsigned texture = context()->createTexture(); | 1816 unsigned texture = context()->createTexture(); |
| 1839 context()->bindTexture(GL_TEXTURE_2D, texture); | 1817 context()->bindTexture(GL_TEXTURE_2D, texture); |
| 1840 uint8_t data[4] = { 1, 2, 3, 4 }; | 1818 uint8_t data[4] = { 1, 2, 3, 4 }; |
| 1841 context()->texImage2D( | 1819 context()->texImage2D( |
| 1842 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &data); | 1820 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &data); |
| 1843 gpu::Mailbox mailbox; | 1821 gpu::Mailbox mailbox; |
| 1844 context()->genMailboxCHROMIUM(mailbox.name); | 1822 context()->genMailboxCHROMIUM(mailbox.name); |
| 1845 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 1823 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 1846 uint32 sync_point = context()->insertSyncPoint(); | 1824 uint32 sync_point = context()->insertSyncPoint(); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1958 context()->bindTexture(GL_TEXTURE_2D, texture); | 1936 context()->bindTexture(GL_TEXTURE_2D, texture); |
| 1959 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 1937 context()->consumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 1960 context()->deleteTexture(texture); | 1938 context()->deleteTexture(texture); |
| 1961 } | 1939 } |
| 1962 | 1940 |
| 1963 TEST_P(ResourceProviderTest, LostResourceInParent) { | 1941 TEST_P(ResourceProviderTest, LostResourceInParent) { |
| 1964 gfx::Size size(1, 1); | 1942 gfx::Size size(1, 1); |
| 1965 ResourceFormat format = RGBA_8888; | 1943 ResourceFormat format = RGBA_8888; |
| 1966 ResourceProvider::ResourceId resource = | 1944 ResourceProvider::ResourceId resource = |
| 1967 child_resource_provider_->CreateResource( | 1945 child_resource_provider_->CreateResource( |
| 1968 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 1946 size, |
| 1947 GL_CLAMP_TO_EDGE, |
| 1948 ResourceProvider::TextureHintImmutable, |
| 1969 format); | 1949 format); |
| 1970 child_resource_provider_->AllocateForTesting(resource); | 1950 child_resource_provider_->AllocateForTesting(resource); |
| 1971 // Expect a GL resource to be lost. | 1951 // Expect a GL resource to be lost. |
| 1972 bool should_lose_resource = | 1952 bool should_lose_resource = GetParam() == ResourceProvider::GLTexture; |
| 1973 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE; | |
| 1974 | 1953 |
| 1975 ReturnedResourceArray returned_to_child; | 1954 ReturnedResourceArray returned_to_child; |
| 1976 int child_id = | 1955 int child_id = |
| 1977 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 1956 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 1978 { | 1957 { |
| 1979 // Transfer the resource to the parent. | 1958 // Transfer the resource to the parent. |
| 1980 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 1959 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 1981 resource_ids_to_transfer.push_back(resource); | 1960 resource_ids_to_transfer.push_back(resource); |
| 1982 TransferableResourceArray list; | 1961 TransferableResourceArray list; |
| 1983 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, | 1962 child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2013 // Lost resources stay in use in the parent forever. | 1992 // Lost resources stay in use in the parent forever. |
| 2014 EXPECT_EQ(should_lose_resource, | 1993 EXPECT_EQ(should_lose_resource, |
| 2015 child_resource_provider_->InUseByConsumer(resource)); | 1994 child_resource_provider_->InUseByConsumer(resource)); |
| 2016 } | 1995 } |
| 2017 | 1996 |
| 2018 TEST_P(ResourceProviderTest, LostResourceInGrandParent) { | 1997 TEST_P(ResourceProviderTest, LostResourceInGrandParent) { |
| 2019 gfx::Size size(1, 1); | 1998 gfx::Size size(1, 1); |
| 2020 ResourceFormat format = RGBA_8888; | 1999 ResourceFormat format = RGBA_8888; |
| 2021 ResourceProvider::ResourceId resource = | 2000 ResourceProvider::ResourceId resource = |
| 2022 child_resource_provider_->CreateResource( | 2001 child_resource_provider_->CreateResource( |
| 2023 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 2002 size, |
| 2003 GL_CLAMP_TO_EDGE, |
| 2004 ResourceProvider::TextureHintImmutable, |
| 2024 format); | 2005 format); |
| 2025 child_resource_provider_->AllocateForTesting(resource); | 2006 child_resource_provider_->AllocateForTesting(resource); |
| 2026 | 2007 |
| 2027 ReturnedResourceArray returned_to_child; | 2008 ReturnedResourceArray returned_to_child; |
| 2028 int child_id = | 2009 int child_id = |
| 2029 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); | 2010 resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
| 2030 { | 2011 { |
| 2031 // Transfer the resource to the parent. | 2012 // Transfer the resource to the parent. |
| 2032 ResourceProvider::ResourceIdArray resource_ids_to_transfer; | 2013 ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
| 2033 resource_ids_to_transfer.push_back(resource); | 2014 resource_ids_to_transfer.push_back(resource); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2124 EXPECT_EQ(0u, returned_to_child.size()); | 2105 EXPECT_EQ(0u, returned_to_child.size()); |
| 2125 | 2106 |
| 2126 // Transfer resources back from the parent to the child. Set no resources as | 2107 // Transfer resources back from the parent to the child. Set no resources as |
| 2127 // being in use. | 2108 // being in use. |
| 2128 ResourceProvider::ResourceIdArray no_resources; | 2109 ResourceProvider::ResourceIdArray no_resources; |
| 2129 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); | 2110 resource_provider_->DeclareUsedResourcesFromChild(child_id, no_resources); |
| 2130 | 2111 |
| 2131 ASSERT_EQ(1u, returned_to_child.size()); | 2112 ASSERT_EQ(1u, returned_to_child.size()); |
| 2132 // Losing an output surface only loses hardware resources. | 2113 // Losing an output surface only loses hardware resources. |
| 2133 EXPECT_EQ(returned_to_child[0].lost, | 2114 EXPECT_EQ(returned_to_child[0].lost, |
| 2134 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); | 2115 GetParam() == ResourceProvider::GLTexture); |
| 2135 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); | 2116 child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
| 2136 returned_to_child.clear(); | 2117 returned_to_child.clear(); |
| 2137 } | 2118 } |
| 2138 | 2119 |
| 2139 // Delete the resource in the child. Expect the resource to be lost if it's | 2120 // Delete the resource in the child. Expect the resource to be lost if it's |
| 2140 // a GL texture. | 2121 // a GL texture. |
| 2141 child_resource_provider_->DeleteResource(resource); | 2122 child_resource_provider_->DeleteResource(resource); |
| 2142 EXPECT_EQ(lost_resource, | 2123 EXPECT_EQ(lost_resource, GetParam() == ResourceProvider::GLTexture); |
| 2143 GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE); | |
| 2144 } | 2124 } |
| 2145 | 2125 |
| 2146 TEST_P(ResourceProviderTest, LostMailboxInGrandParent) { | 2126 TEST_P(ResourceProviderTest, LostMailboxInGrandParent) { |
| 2147 uint32 release_sync_point = 0; | 2127 uint32 release_sync_point = 0; |
| 2148 bool lost_resource = false; | 2128 bool lost_resource = false; |
| 2149 bool release_called = false; | 2129 bool release_called = false; |
| 2150 uint32 sync_point = 0; | 2130 uint32 sync_point = 0; |
| 2151 ResourceProvider::ResourceId resource = CreateChildMailbox( | 2131 ResourceProvider::ResourceId resource = CreateChildMailbox( |
| 2152 &release_sync_point, &lost_resource, &release_called, &sync_point); | 2132 &release_sync_point, &lost_resource, &release_called, &sync_point); |
| 2153 | 2133 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2217 bool release_called = false; | 2197 bool release_called = false; |
| 2218 uint32 sync_point = 0; | 2198 uint32 sync_point = 0; |
| 2219 CreateChildMailbox( | 2199 CreateChildMailbox( |
| 2220 &release_sync_point, &lost_resource, &release_called, &sync_point); | 2200 &release_sync_point, &lost_resource, &release_called, &sync_point); |
| 2221 | 2201 |
| 2222 EXPECT_EQ(0u, release_sync_point); | 2202 EXPECT_EQ(0u, release_sync_point); |
| 2223 EXPECT_FALSE(lost_resource); | 2203 EXPECT_FALSE(lost_resource); |
| 2224 | 2204 |
| 2225 child_resource_provider_ = nullptr; | 2205 child_resource_provider_ = nullptr; |
| 2226 | 2206 |
| 2227 if (GetParam() == ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) { | 2207 if (GetParam() == ResourceProvider::GLTexture) { |
| 2228 EXPECT_LE(sync_point, release_sync_point); | 2208 EXPECT_LE(sync_point, release_sync_point); |
| 2229 } | 2209 } |
| 2230 EXPECT_TRUE(release_called); | 2210 EXPECT_TRUE(release_called); |
| 2231 EXPECT_FALSE(lost_resource); | 2211 EXPECT_FALSE(lost_resource); |
| 2232 } | 2212 } |
| 2233 | 2213 |
| 2234 TEST_P(ResourceProviderTest, ShutdownWithExportedResource) { | 2214 TEST_P(ResourceProviderTest, ShutdownWithExportedResource) { |
| 2235 uint32 release_sync_point = 0; | 2215 uint32 release_sync_point = 0; |
| 2236 bool lost_resource = false; | 2216 bool lost_resource = false; |
| 2237 bool release_called = false; | 2217 bool release_called = false; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2251 | 2231 |
| 2252 child_resource_provider_ = nullptr; | 2232 child_resource_provider_ = nullptr; |
| 2253 | 2233 |
| 2254 // Since the resource is in the parent, the child considers it lost. | 2234 // Since the resource is in the parent, the child considers it lost. |
| 2255 EXPECT_EQ(0u, release_sync_point); | 2235 EXPECT_EQ(0u, release_sync_point); |
| 2256 EXPECT_TRUE(lost_resource); | 2236 EXPECT_TRUE(lost_resource); |
| 2257 } | 2237 } |
| 2258 | 2238 |
| 2259 TEST_P(ResourceProviderTest, LostContext) { | 2239 TEST_P(ResourceProviderTest, LostContext) { |
| 2260 // TextureMailbox callbacks only exist for GL textures for now. | 2240 // TextureMailbox callbacks only exist for GL textures for now. |
| 2261 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2241 if (GetParam() != ResourceProvider::GLTexture) |
| 2262 return; | 2242 return; |
| 2263 unsigned texture = context()->createTexture(); | 2243 unsigned texture = context()->createTexture(); |
| 2264 context()->bindTexture(GL_TEXTURE_2D, texture); | 2244 context()->bindTexture(GL_TEXTURE_2D, texture); |
| 2265 gpu::Mailbox mailbox; | 2245 gpu::Mailbox mailbox; |
| 2266 context()->genMailboxCHROMIUM(mailbox.name); | 2246 context()->genMailboxCHROMIUM(mailbox.name); |
| 2267 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); | 2247 context()->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
| 2268 uint32 sync_point = context()->insertSyncPoint(); | 2248 uint32 sync_point = context()->insertSyncPoint(); |
| 2269 | 2249 |
| 2270 EXPECT_LT(0u, sync_point); | 2250 EXPECT_LT(0u, sync_point); |
| 2271 | 2251 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2287 resource_provider_->DidLoseOutputSurface(); | 2267 resource_provider_->DidLoseOutputSurface(); |
| 2288 resource_provider_ = nullptr; | 2268 resource_provider_ = nullptr; |
| 2289 | 2269 |
| 2290 EXPECT_LE(sync_point, release_sync_point); | 2270 EXPECT_LE(sync_point, release_sync_point); |
| 2291 EXPECT_TRUE(lost_resource); | 2271 EXPECT_TRUE(lost_resource); |
| 2292 EXPECT_EQ(main_thread_task_runner_.get(), main_thread_task_runner); | 2272 EXPECT_EQ(main_thread_task_runner_.get(), main_thread_task_runner); |
| 2293 } | 2273 } |
| 2294 | 2274 |
| 2295 TEST_P(ResourceProviderTest, ScopedSampler) { | 2275 TEST_P(ResourceProviderTest, ScopedSampler) { |
| 2296 // Sampling is only supported for GL textures. | 2276 // Sampling is only supported for GL textures. |
| 2297 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2277 if (GetParam() != ResourceProvider::GLTexture) |
| 2298 return; | 2278 return; |
| 2299 | 2279 |
| 2300 scoped_ptr<TextureStateTrackingContext> context_owned( | 2280 scoped_ptr<TextureStateTrackingContext> context_owned( |
| 2301 new TextureStateTrackingContext); | 2281 new TextureStateTrackingContext); |
| 2302 TextureStateTrackingContext* context = context_owned.get(); | 2282 TextureStateTrackingContext* context = context_owned.get(); |
| 2303 | 2283 |
| 2304 FakeOutputSurfaceClient output_surface_client; | 2284 FakeOutputSurfaceClient output_surface_client; |
| 2305 scoped_ptr<OutputSurface> output_surface( | 2285 scoped_ptr<OutputSurface> output_surface( |
| 2306 FakeOutputSurface::Create3d(context_owned.Pass())); | 2286 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 2307 CHECK(output_surface->BindToClient(&output_surface_client)); | 2287 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 2308 | 2288 |
| 2309 scoped_ptr<ResourceProvider> resource_provider( | 2289 scoped_ptr<ResourceProvider> resource_provider( |
| 2310 ResourceProvider::Create(output_surface.get(), | 2290 ResourceProvider::Create(output_surface.get(), |
| 2311 shared_bitmap_manager_.get(), | 2291 shared_bitmap_manager_.get(), |
| 2312 gpu_memory_buffer_manager_.get(), | 2292 gpu_memory_buffer_manager_.get(), |
| 2313 NULL, | 2293 NULL, |
| 2314 0, | 2294 0, |
| 2315 false, | 2295 false, |
| 2316 1)); | 2296 1)); |
| 2317 | 2297 |
| 2318 gfx::Size size(1, 1); | 2298 gfx::Size size(1, 1); |
| 2319 ResourceFormat format = RGBA_8888; | 2299 ResourceFormat format = RGBA_8888; |
| 2320 int texture_id = 1; | 2300 int texture_id = 1; |
| 2321 | 2301 |
| 2322 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 2302 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 2323 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2303 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 2324 | 2304 |
| 2325 // Check that the texture gets created with the right sampler settings. | 2305 // Check that the texture gets created with the right sampler settings. |
| 2326 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)) | 2306 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)) |
| 2327 .Times(2); // Once to create and once to allocate. | 2307 .Times(2); // Once to create and once to allocate. |
| 2328 EXPECT_CALL(*context, | 2308 EXPECT_CALL(*context, |
| 2329 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2309 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
| 2330 EXPECT_CALL(*context, | 2310 EXPECT_CALL(*context, |
| 2331 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2311 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
| 2332 EXPECT_CALL( | 2312 EXPECT_CALL( |
| 2333 *context, | 2313 *context, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2374 EXPECT_CALL(*context, | 2354 EXPECT_CALL(*context, |
| 2375 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2355 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
| 2376 ResourceProvider::ScopedSamplerGL sampler( | 2356 ResourceProvider::ScopedSamplerGL sampler( |
| 2377 resource_provider.get(), id, GL_TEXTURE_2D, GL_LINEAR); | 2357 resource_provider.get(), id, GL_TEXTURE_2D, GL_LINEAR); |
| 2378 Mock::VerifyAndClearExpectations(context); | 2358 Mock::VerifyAndClearExpectations(context); |
| 2379 } | 2359 } |
| 2380 } | 2360 } |
| 2381 | 2361 |
| 2382 TEST_P(ResourceProviderTest, ManagedResource) { | 2362 TEST_P(ResourceProviderTest, ManagedResource) { |
| 2383 // Sampling is only supported for GL textures. | 2363 // Sampling is only supported for GL textures. |
| 2384 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2364 if (GetParam() != ResourceProvider::GLTexture) |
| 2385 return; | 2365 return; |
| 2386 | 2366 |
| 2387 scoped_ptr<TextureStateTrackingContext> context_owned( | 2367 scoped_ptr<TextureStateTrackingContext> context_owned( |
| 2388 new TextureStateTrackingContext); | 2368 new TextureStateTrackingContext); |
| 2389 TextureStateTrackingContext* context = context_owned.get(); | 2369 TextureStateTrackingContext* context = context_owned.get(); |
| 2390 | 2370 |
| 2391 FakeOutputSurfaceClient output_surface_client; | 2371 FakeOutputSurfaceClient output_surface_client; |
| 2392 scoped_ptr<OutputSurface> output_surface( | 2372 scoped_ptr<OutputSurface> output_surface( |
| 2393 FakeOutputSurface::Create3d(context_owned.Pass())); | 2373 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 2394 CHECK(output_surface->BindToClient(&output_surface_client)); | 2374 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 2395 | 2375 |
| 2396 scoped_ptr<ResourceProvider> resource_provider( | 2376 scoped_ptr<ResourceProvider> resource_provider( |
| 2397 ResourceProvider::Create(output_surface.get(), | 2377 ResourceProvider::Create(output_surface.get(), |
| 2398 shared_bitmap_manager_.get(), | 2378 shared_bitmap_manager_.get(), |
| 2399 gpu_memory_buffer_manager_.get(), | 2379 gpu_memory_buffer_manager_.get(), |
| 2400 NULL, | 2380 NULL, |
| 2401 0, | 2381 0, |
| 2402 false, | 2382 false, |
| 2403 1)); | 2383 1)); |
| 2404 | 2384 |
| 2405 gfx::Size size(1, 1); | 2385 gfx::Size size(1, 1); |
| 2406 ResourceFormat format = RGBA_8888; | 2386 ResourceFormat format = RGBA_8888; |
| 2407 int texture_id = 1; | 2387 int texture_id = 1; |
| 2408 | 2388 |
| 2409 // Check that the texture gets created with the right sampler settings. | 2389 // Check that the texture gets created with the right sampler settings. |
| 2410 ResourceProvider::ResourceId id = resource_provider->CreateManagedResource( | 2390 ResourceProvider::ResourceId id = resource_provider->CreateManagedResource( |
| 2411 size, GL_TEXTURE_2D, GL_CLAMP_TO_EDGE, | 2391 size, |
| 2412 ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2392 GL_TEXTURE_2D, |
| 2393 GL_CLAMP_TO_EDGE, |
| 2394 ResourceProvider::TextureHintImmutable, |
| 2395 format); |
| 2413 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); | 2396 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); |
| 2414 EXPECT_CALL(*context, | 2397 EXPECT_CALL(*context, |
| 2415 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2398 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
| 2416 EXPECT_CALL(*context, | 2399 EXPECT_CALL(*context, |
| 2417 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2400 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
| 2418 EXPECT_CALL( | 2401 EXPECT_CALL( |
| 2419 *context, | 2402 *context, |
| 2420 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); | 2403 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); |
| 2421 EXPECT_CALL( | 2404 EXPECT_CALL( |
| 2422 *context, | 2405 *context, |
| 2423 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); | 2406 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); |
| 2424 EXPECT_CALL(*context, | 2407 EXPECT_CALL(*context, |
| 2425 texParameteri(GL_TEXTURE_2D, | 2408 texParameteri(GL_TEXTURE_2D, |
| 2426 GL_TEXTURE_POOL_CHROMIUM, | 2409 GL_TEXTURE_POOL_CHROMIUM, |
| 2427 GL_TEXTURE_POOL_MANAGED_CHROMIUM)); | 2410 GL_TEXTURE_POOL_MANAGED_CHROMIUM)); |
| 2428 resource_provider->CreateForTesting(id); | 2411 resource_provider->CreateForTesting(id); |
| 2429 EXPECT_NE(0u, id); | 2412 EXPECT_NE(0u, id); |
| 2430 | 2413 |
| 2431 Mock::VerifyAndClearExpectations(context); | 2414 Mock::VerifyAndClearExpectations(context); |
| 2432 } | 2415 } |
| 2433 | 2416 |
| 2434 TEST_P(ResourceProviderTest, TextureWrapMode) { | 2417 TEST_P(ResourceProviderTest, TextureWrapMode) { |
| 2435 // Sampling is only supported for GL textures. | 2418 // Sampling is only supported for GL textures. |
| 2436 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2419 if (GetParam() != ResourceProvider::GLTexture) |
| 2437 return; | 2420 return; |
| 2438 | 2421 |
| 2439 scoped_ptr<TextureStateTrackingContext> context_owned( | 2422 scoped_ptr<TextureStateTrackingContext> context_owned( |
| 2440 new TextureStateTrackingContext); | 2423 new TextureStateTrackingContext); |
| 2441 TextureStateTrackingContext* context = context_owned.get(); | 2424 TextureStateTrackingContext* context = context_owned.get(); |
| 2442 | 2425 |
| 2443 FakeOutputSurfaceClient output_surface_client; | 2426 FakeOutputSurfaceClient output_surface_client; |
| 2444 scoped_ptr<OutputSurface> output_surface( | 2427 scoped_ptr<OutputSurface> output_surface( |
| 2445 FakeOutputSurface::Create3d(context_owned.Pass())); | 2428 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 2446 CHECK(output_surface->BindToClient(&output_surface_client)); | 2429 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 2447 | 2430 |
| 2448 scoped_ptr<ResourceProvider> resource_provider( | 2431 scoped_ptr<ResourceProvider> resource_provider( |
| 2449 ResourceProvider::Create(output_surface.get(), | 2432 ResourceProvider::Create(output_surface.get(), |
| 2450 shared_bitmap_manager_.get(), | 2433 shared_bitmap_manager_.get(), |
| 2451 gpu_memory_buffer_manager_.get(), | 2434 gpu_memory_buffer_manager_.get(), |
| 2452 NULL, | 2435 NULL, |
| 2453 0, | 2436 0, |
| 2454 false, | 2437 false, |
| 2455 1)); | 2438 1)); |
| 2456 | 2439 |
| 2457 gfx::Size size(1, 1); | 2440 gfx::Size size(1, 1); |
| 2458 ResourceFormat format = RGBA_8888; | 2441 ResourceFormat format = RGBA_8888; |
| 2459 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; | 2442 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; |
| 2460 | 2443 |
| 2461 for (int texture_id = 1; texture_id <= 2; ++texture_id) { | 2444 for (int texture_id = 1; texture_id <= 2; ++texture_id) { |
| 2462 GLint wrap_mode = texture_id == 1 ? GL_CLAMP_TO_EDGE : GL_REPEAT; | 2445 GLint wrap_mode = texture_id == 1 ? GL_CLAMP_TO_EDGE : GL_REPEAT; |
| 2463 // Check that the texture gets created with the right sampler settings. | 2446 // Check that the texture gets created with the right sampler settings. |
| 2464 ResourceProvider::ResourceId id = resource_provider->CreateGLTexture( | 2447 ResourceProvider::ResourceId id = resource_provider->CreateGLTexture( |
| 2465 size, GL_TEXTURE_2D, texture_pool, wrap_mode, | 2448 size, |
| 2466 ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 2449 GL_TEXTURE_2D, |
| 2450 texture_pool, |
| 2451 wrap_mode, |
| 2452 ResourceProvider::TextureHintImmutable, |
| 2453 format); |
| 2467 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); | 2454 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); |
| 2468 EXPECT_CALL(*context, | 2455 EXPECT_CALL(*context, |
| 2469 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2456 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
| 2470 EXPECT_CALL(*context, | 2457 EXPECT_CALL(*context, |
| 2471 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2458 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
| 2472 EXPECT_CALL(*context, | 2459 EXPECT_CALL(*context, |
| 2473 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_mode)); | 2460 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_mode)); |
| 2474 EXPECT_CALL(*context, | 2461 EXPECT_CALL(*context, |
| 2475 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_mode)); | 2462 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_mode)); |
| 2476 EXPECT_CALL(*context, | 2463 EXPECT_CALL(*context, |
| 2477 texParameteri(GL_TEXTURE_2D, | 2464 texParameteri(GL_TEXTURE_2D, |
| 2478 GL_TEXTURE_POOL_CHROMIUM, | 2465 GL_TEXTURE_POOL_CHROMIUM, |
| 2479 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); | 2466 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); |
| 2480 resource_provider->CreateForTesting(id); | 2467 resource_provider->CreateForTesting(id); |
| 2481 EXPECT_NE(0u, id); | 2468 EXPECT_NE(0u, id); |
| 2482 | 2469 |
| 2483 Mock::VerifyAndClearExpectations(context); | 2470 Mock::VerifyAndClearExpectations(context); |
| 2484 } | 2471 } |
| 2485 } | 2472 } |
| 2486 | 2473 |
| 2487 TEST_P(ResourceProviderTest, TextureHint) { | 2474 TEST_P(ResourceProviderTest, TextureHint) { |
| 2488 // Sampling is only supported for GL textures. | 2475 // Sampling is only supported for GL textures. |
| 2489 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2476 if (GetParam() != ResourceProvider::GLTexture) |
| 2490 return; | 2477 return; |
| 2491 | 2478 |
| 2492 scoped_ptr<TextureStateTrackingContext> context_owned( | 2479 scoped_ptr<TextureStateTrackingContext> context_owned( |
| 2493 new TextureStateTrackingContext); | 2480 new TextureStateTrackingContext); |
| 2494 TextureStateTrackingContext* context = context_owned.get(); | 2481 TextureStateTrackingContext* context = context_owned.get(); |
| 2495 context->set_support_texture_storage(true); | 2482 context->set_support_texture_storage(true); |
| 2496 context->set_support_texture_usage(true); | 2483 context->set_support_texture_usage(true); |
| 2497 | 2484 |
| 2498 FakeOutputSurfaceClient output_surface_client; | 2485 FakeOutputSurfaceClient output_surface_client; |
| 2499 scoped_ptr<OutputSurface> output_surface( | 2486 scoped_ptr<OutputSurface> output_surface( |
| 2500 FakeOutputSurface::Create3d(context_owned.Pass())); | 2487 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 2501 CHECK(output_surface->BindToClient(&output_surface_client)); | 2488 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 2502 | 2489 |
| 2503 scoped_ptr<ResourceProvider> resource_provider( | 2490 scoped_ptr<ResourceProvider> resource_provider( |
| 2504 ResourceProvider::Create(output_surface.get(), | 2491 ResourceProvider::Create(output_surface.get(), |
| 2505 shared_bitmap_manager_.get(), | 2492 shared_bitmap_manager_.get(), |
| 2506 gpu_memory_buffer_manager_.get(), | 2493 gpu_memory_buffer_manager_.get(), |
| 2507 NULL, | 2494 NULL, |
| 2508 0, | 2495 0, |
| 2509 false, | 2496 false, |
| 2510 1)); | 2497 1)); |
| 2511 | 2498 |
| 2512 gfx::Size size(1, 1); | 2499 gfx::Size size(1, 1); |
| 2513 ResourceFormat format = RGBA_8888; | 2500 ResourceFormat format = RGBA_8888; |
| 2514 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; | 2501 GLenum texture_pool = GL_TEXTURE_POOL_UNMANAGED_CHROMIUM; |
| 2515 | 2502 |
| 2516 const ResourceProvider::TextureHint hints[4] = { | 2503 const ResourceProvider::TextureHint hints[4] = { |
| 2517 ResourceProvider::TEXTURE_HINT_DEFAULT, | 2504 ResourceProvider::TextureHintDefault, |
| 2518 ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 2505 ResourceProvider::TextureHintImmutable, |
| 2519 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, | 2506 ResourceProvider::TextureHintFramebuffer, |
| 2520 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, | 2507 ResourceProvider::TextureHintImmutableFramebuffer, |
| 2521 }; | 2508 }; |
| 2522 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { | 2509 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { |
| 2523 // Check that the texture gets created with the right sampler settings. | 2510 // Check that the texture gets created with the right sampler settings. |
| 2524 ResourceProvider::ResourceId id = | 2511 ResourceProvider::ResourceId id = |
| 2525 resource_provider->CreateGLTexture(size, | 2512 resource_provider->CreateGLTexture(size, |
| 2526 GL_TEXTURE_2D, | 2513 GL_TEXTURE_2D, |
| 2527 texture_pool, | 2514 texture_pool, |
| 2528 GL_CLAMP_TO_EDGE, | 2515 GL_CLAMP_TO_EDGE, |
| 2529 hints[texture_id - 1], | 2516 hints[texture_id - 1], |
| 2530 format); | 2517 format); |
| 2531 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); | 2518 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)); |
| 2532 EXPECT_CALL(*context, | 2519 EXPECT_CALL(*context, |
| 2533 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); | 2520 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
| 2534 EXPECT_CALL(*context, | 2521 EXPECT_CALL(*context, |
| 2535 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); | 2522 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); |
| 2536 EXPECT_CALL( | 2523 EXPECT_CALL( |
| 2537 *context, | 2524 *context, |
| 2538 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); | 2525 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); |
| 2539 EXPECT_CALL( | 2526 EXPECT_CALL( |
| 2540 *context, | 2527 *context, |
| 2541 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); | 2528 texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); |
| 2542 EXPECT_CALL(*context, | 2529 EXPECT_CALL(*context, |
| 2543 texParameteri(GL_TEXTURE_2D, | 2530 texParameteri(GL_TEXTURE_2D, |
| 2544 GL_TEXTURE_POOL_CHROMIUM, | 2531 GL_TEXTURE_POOL_CHROMIUM, |
| 2545 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); | 2532 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM)); |
| 2546 // Check only TEXTURE_HINT_FRAMEBUFFER set GL_TEXTURE_USAGE_ANGLE. | 2533 // Check only TextureHintFramebuffer set GL_TEXTURE_USAGE_ANGLE. |
| 2547 bool is_framebuffer_hint = | 2534 bool is_framebuffer_hint = |
| 2548 hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_FRAMEBUFFER; | 2535 hints[texture_id - 1] & ResourceProvider::TextureHintFramebuffer; |
| 2549 EXPECT_CALL(*context, | 2536 EXPECT_CALL(*context, |
| 2550 texParameteri(GL_TEXTURE_2D, | 2537 texParameteri(GL_TEXTURE_2D, |
| 2551 GL_TEXTURE_USAGE_ANGLE, | 2538 GL_TEXTURE_USAGE_ANGLE, |
| 2552 GL_FRAMEBUFFER_ATTACHMENT_ANGLE)) | 2539 GL_FRAMEBUFFER_ATTACHMENT_ANGLE)) |
| 2553 .Times(is_framebuffer_hint ? 1 : 0); | 2540 .Times(is_framebuffer_hint ? 1 : 0); |
| 2554 resource_provider->CreateForTesting(id); | 2541 resource_provider->CreateForTesting(id); |
| 2555 EXPECT_NE(0u, id); | 2542 EXPECT_NE(0u, id); |
| 2556 | 2543 |
| 2557 Mock::VerifyAndClearExpectations(context); | 2544 Mock::VerifyAndClearExpectations(context); |
| 2558 } | 2545 } |
| 2559 } | 2546 } |
| 2560 | 2547 |
| 2561 TEST_P(ResourceProviderTest, TextureMailbox_SharedMemory) { | 2548 TEST_P(ResourceProviderTest, TextureMailbox_SharedMemory) { |
| 2562 if (GetParam() != ResourceProvider::RESOURCE_TYPE_BITMAP) | 2549 if (GetParam() != ResourceProvider::Bitmap) |
| 2563 return; | 2550 return; |
| 2564 | 2551 |
| 2565 gfx::Size size(64, 64); | 2552 gfx::Size size(64, 64); |
| 2566 const uint32_t kBadBeef = 0xbadbeef; | 2553 const uint32_t kBadBeef = 0xbadbeef; |
| 2567 scoped_ptr<SharedBitmap> shared_bitmap( | 2554 scoped_ptr<SharedBitmap> shared_bitmap( |
| 2568 CreateAndFillSharedBitmap(shared_bitmap_manager_.get(), size, kBadBeef)); | 2555 CreateAndFillSharedBitmap(shared_bitmap_manager_.get(), size, kBadBeef)); |
| 2569 | 2556 |
| 2570 FakeOutputSurfaceClient output_surface_client; | 2557 FakeOutputSurfaceClient output_surface_client; |
| 2571 scoped_ptr<OutputSurface> output_surface( | 2558 scoped_ptr<OutputSurface> output_surface( |
| 2572 FakeOutputSurface::CreateSoftware(make_scoped_ptr( | 2559 FakeOutputSurface::CreateSoftware(make_scoped_ptr( |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2706 | 2693 |
| 2707 resource_provider->DeleteResource(id); | 2694 resource_provider->DeleteResource(id); |
| 2708 EXPECT_EQ(0u, release_sync_point); | 2695 EXPECT_EQ(0u, release_sync_point); |
| 2709 EXPECT_FALSE(lost_resource); | 2696 EXPECT_FALSE(lost_resource); |
| 2710 EXPECT_EQ(main_thread_task_runner, mailbox_task_runner); | 2697 EXPECT_EQ(main_thread_task_runner, mailbox_task_runner); |
| 2711 } | 2698 } |
| 2712 }; | 2699 }; |
| 2713 | 2700 |
| 2714 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_LinearToLinear) { | 2701 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_LinearToLinear) { |
| 2715 // Mailboxing is only supported for GL textures. | 2702 // Mailboxing is only supported for GL textures. |
| 2716 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2703 if (GetParam() != ResourceProvider::GLTexture) |
| 2717 return; | 2704 return; |
| 2718 | 2705 |
| 2719 ResourceProviderTestTextureMailboxGLFilters::RunTest( | 2706 ResourceProviderTestTextureMailboxGLFilters::RunTest( |
| 2720 shared_bitmap_manager_.get(), | 2707 shared_bitmap_manager_.get(), |
| 2721 gpu_memory_buffer_manager_.get(), | 2708 gpu_memory_buffer_manager_.get(), |
| 2722 main_thread_task_runner_.get(), | 2709 main_thread_task_runner_.get(), |
| 2723 false, | 2710 false, |
| 2724 GL_LINEAR); | 2711 GL_LINEAR); |
| 2725 } | 2712 } |
| 2726 | 2713 |
| 2727 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_NearestToNearest) { | 2714 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_NearestToNearest) { |
| 2728 // Mailboxing is only supported for GL textures. | 2715 // Mailboxing is only supported for GL textures. |
| 2729 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2716 if (GetParam() != ResourceProvider::GLTexture) |
| 2730 return; | 2717 return; |
| 2731 | 2718 |
| 2732 ResourceProviderTestTextureMailboxGLFilters::RunTest( | 2719 ResourceProviderTestTextureMailboxGLFilters::RunTest( |
| 2733 shared_bitmap_manager_.get(), | 2720 shared_bitmap_manager_.get(), |
| 2734 gpu_memory_buffer_manager_.get(), | 2721 gpu_memory_buffer_manager_.get(), |
| 2735 main_thread_task_runner_.get(), | 2722 main_thread_task_runner_.get(), |
| 2736 true, | 2723 true, |
| 2737 GL_NEAREST); | 2724 GL_NEAREST); |
| 2738 } | 2725 } |
| 2739 | 2726 |
| 2740 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_NearestToLinear) { | 2727 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_NearestToLinear) { |
| 2741 // Mailboxing is only supported for GL textures. | 2728 // Mailboxing is only supported for GL textures. |
| 2742 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2729 if (GetParam() != ResourceProvider::GLTexture) |
| 2743 return; | 2730 return; |
| 2744 | 2731 |
| 2745 ResourceProviderTestTextureMailboxGLFilters::RunTest( | 2732 ResourceProviderTestTextureMailboxGLFilters::RunTest( |
| 2746 shared_bitmap_manager_.get(), | 2733 shared_bitmap_manager_.get(), |
| 2747 gpu_memory_buffer_manager_.get(), | 2734 gpu_memory_buffer_manager_.get(), |
| 2748 main_thread_task_runner_.get(), | 2735 main_thread_task_runner_.get(), |
| 2749 true, | 2736 true, |
| 2750 GL_LINEAR); | 2737 GL_LINEAR); |
| 2751 } | 2738 } |
| 2752 | 2739 |
| 2753 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_LinearToNearest) { | 2740 TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D_LinearToNearest) { |
| 2754 // Mailboxing is only supported for GL textures. | 2741 // Mailboxing is only supported for GL textures. |
| 2755 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2742 if (GetParam() != ResourceProvider::GLTexture) |
| 2756 return; | 2743 return; |
| 2757 | 2744 |
| 2758 ResourceProviderTestTextureMailboxGLFilters::RunTest( | 2745 ResourceProviderTestTextureMailboxGLFilters::RunTest( |
| 2759 shared_bitmap_manager_.get(), | 2746 shared_bitmap_manager_.get(), |
| 2760 gpu_memory_buffer_manager_.get(), | 2747 gpu_memory_buffer_manager_.get(), |
| 2761 main_thread_task_runner_.get(), | 2748 main_thread_task_runner_.get(), |
| 2762 false, | 2749 false, |
| 2763 GL_NEAREST); | 2750 GL_NEAREST); |
| 2764 } | 2751 } |
| 2765 | 2752 |
| 2766 TEST_P(ResourceProviderTest, TextureMailbox_GLTextureExternalOES) { | 2753 TEST_P(ResourceProviderTest, TextureMailbox_GLTextureExternalOES) { |
| 2767 // Mailboxing is only supported for GL textures. | 2754 // Mailboxing is only supported for GL textures. |
| 2768 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2755 if (GetParam() != ResourceProvider::GLTexture) |
| 2769 return; | 2756 return; |
| 2770 | 2757 |
| 2771 scoped_ptr<TextureStateTrackingContext> context_owned( | 2758 scoped_ptr<TextureStateTrackingContext> context_owned( |
| 2772 new TextureStateTrackingContext); | 2759 new TextureStateTrackingContext); |
| 2773 TextureStateTrackingContext* context = context_owned.get(); | 2760 TextureStateTrackingContext* context = context_owned.get(); |
| 2774 | 2761 |
| 2775 FakeOutputSurfaceClient output_surface_client; | 2762 FakeOutputSurfaceClient output_surface_client; |
| 2776 scoped_ptr<OutputSurface> output_surface( | 2763 scoped_ptr<OutputSurface> output_surface( |
| 2777 FakeOutputSurface::Create3d(context_owned.Pass())); | 2764 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 2778 CHECK(output_surface->BindToClient(&output_surface_client)); | 2765 CHECK(output_surface->BindToClient(&output_surface_client)); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2833 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); | 2820 EXPECT_CALL(*context, produceTextureCHROMIUM(_, _)).Times(0); |
| 2834 | 2821 |
| 2835 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); | 2822 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); |
| 2836 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); | 2823 EXPECT_CALL(*context, consumeTextureCHROMIUM(_, _)).Times(0); |
| 2837 } | 2824 } |
| 2838 } | 2825 } |
| 2839 | 2826 |
| 2840 TEST_P(ResourceProviderTest, | 2827 TEST_P(ResourceProviderTest, |
| 2841 TextureMailbox_WaitSyncPointIfNeeded_WithSyncPoint) { | 2828 TextureMailbox_WaitSyncPointIfNeeded_WithSyncPoint) { |
| 2842 // Mailboxing is only supported for GL textures. | 2829 // Mailboxing is only supported for GL textures. |
| 2843 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2830 if (GetParam() != ResourceProvider::GLTexture) |
| 2844 return; | 2831 return; |
| 2845 | 2832 |
| 2846 scoped_ptr<TextureStateTrackingContext> context_owned( | 2833 scoped_ptr<TextureStateTrackingContext> context_owned( |
| 2847 new TextureStateTrackingContext); | 2834 new TextureStateTrackingContext); |
| 2848 TextureStateTrackingContext* context = context_owned.get(); | 2835 TextureStateTrackingContext* context = context_owned.get(); |
| 2849 | 2836 |
| 2850 FakeOutputSurfaceClient output_surface_client; | 2837 FakeOutputSurfaceClient output_surface_client; |
| 2851 scoped_ptr<OutputSurface> output_surface( | 2838 scoped_ptr<OutputSurface> output_surface( |
| 2852 FakeOutputSurface::Create3d(context_owned.Pass())); | 2839 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 2853 CHECK(output_surface->BindToClient(&output_surface_client)); | 2840 CHECK(output_surface->BindToClient(&output_surface_client)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2892 | 2879 |
| 2893 // Subsequent calls to WaitSyncPointIfNeeded shouldn't call waitSyncPoint. | 2880 // Subsequent calls to WaitSyncPointIfNeeded shouldn't call waitSyncPoint. |
| 2894 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); | 2881 EXPECT_CALL(*context, waitSyncPoint(_)).Times(0); |
| 2895 resource_provider->WaitSyncPointIfNeeded(id); | 2882 resource_provider->WaitSyncPointIfNeeded(id); |
| 2896 Mock::VerifyAndClearExpectations(context); | 2883 Mock::VerifyAndClearExpectations(context); |
| 2897 } | 2884 } |
| 2898 } | 2885 } |
| 2899 | 2886 |
| 2900 TEST_P(ResourceProviderTest, TextureMailbox_WaitSyncPointIfNeeded_NoSyncPoint) { | 2887 TEST_P(ResourceProviderTest, TextureMailbox_WaitSyncPointIfNeeded_NoSyncPoint) { |
| 2901 // Mailboxing is only supported for GL textures. | 2888 // Mailboxing is only supported for GL textures. |
| 2902 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 2889 if (GetParam() != ResourceProvider::GLTexture) |
| 2903 return; | 2890 return; |
| 2904 | 2891 |
| 2905 scoped_ptr<TextureStateTrackingContext> context_owned( | 2892 scoped_ptr<TextureStateTrackingContext> context_owned( |
| 2906 new TextureStateTrackingContext); | 2893 new TextureStateTrackingContext); |
| 2907 TextureStateTrackingContext* context = context_owned.get(); | 2894 TextureStateTrackingContext* context = context_owned.get(); |
| 2908 | 2895 |
| 2909 FakeOutputSurfaceClient output_surface_client; | 2896 FakeOutputSurfaceClient output_surface_client; |
| 2910 scoped_ptr<OutputSurface> output_surface( | 2897 scoped_ptr<OutputSurface> output_surface( |
| 2911 FakeOutputSurface::Create3d(context_owned.Pass())); | 2898 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 2912 CHECK(output_surface->BindToClient(&output_surface_client)); | 2899 CHECK(output_surface->BindToClient(&output_surface_client)); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3019 MOCK_METHOD2(releaseTexImage2DCHROMIUM, void(GLenum, GLint)); | 3006 MOCK_METHOD2(releaseTexImage2DCHROMIUM, void(GLenum, GLint)); |
| 3020 | 3007 |
| 3021 // We're mocking bindTexture, so we override | 3008 // We're mocking bindTexture, so we override |
| 3022 // TestWebGraphicsContext3D::texParameteri to avoid assertions related to the | 3009 // TestWebGraphicsContext3D::texParameteri to avoid assertions related to the |
| 3023 // currently bound texture. | 3010 // currently bound texture. |
| 3024 virtual void texParameteri(GLenum target, GLenum pname, GLint param) {} | 3011 virtual void texParameteri(GLenum target, GLenum pname, GLint param) {} |
| 3025 }; | 3012 }; |
| 3026 | 3013 |
| 3027 TEST_P(ResourceProviderTest, TextureAllocation) { | 3014 TEST_P(ResourceProviderTest, TextureAllocation) { |
| 3028 // Only for GL textures. | 3015 // Only for GL textures. |
| 3029 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3016 if (GetParam() != ResourceProvider::GLTexture) |
| 3030 return; | 3017 return; |
| 3031 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3018 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3032 new StrictMock<AllocationTrackingContext3D>); | 3019 new StrictMock<AllocationTrackingContext3D>); |
| 3033 AllocationTrackingContext3D* context = context_owned.get(); | 3020 AllocationTrackingContext3D* context = context_owned.get(); |
| 3034 | 3021 |
| 3035 FakeOutputSurfaceClient output_surface_client; | 3022 FakeOutputSurfaceClient output_surface_client; |
| 3036 scoped_ptr<OutputSurface> output_surface( | 3023 scoped_ptr<OutputSurface> output_surface( |
| 3037 FakeOutputSurface::Create3d(context_owned.Pass())); | 3024 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3038 CHECK(output_surface->BindToClient(&output_surface_client)); | 3025 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3039 | 3026 |
| 3040 scoped_ptr<ResourceProvider> resource_provider( | 3027 scoped_ptr<ResourceProvider> resource_provider( |
| 3041 ResourceProvider::Create(output_surface.get(), | 3028 ResourceProvider::Create(output_surface.get(), |
| 3042 shared_bitmap_manager_.get(), | 3029 shared_bitmap_manager_.get(), |
| 3043 gpu_memory_buffer_manager_.get(), | 3030 gpu_memory_buffer_manager_.get(), |
| 3044 NULL, | 3031 NULL, |
| 3045 0, | 3032 0, |
| 3046 false, | 3033 false, |
| 3047 1)); | 3034 1)); |
| 3048 | 3035 |
| 3049 gfx::Size size(2, 2); | 3036 gfx::Size size(2, 2); |
| 3050 gfx::Vector2d offset(0, 0); | 3037 gfx::Vector2d offset(0, 0); |
| 3038 gfx::Rect rect(0, 0, 2, 2); |
| 3051 ResourceFormat format = RGBA_8888; | 3039 ResourceFormat format = RGBA_8888; |
| 3052 ResourceProvider::ResourceId id = 0; | 3040 ResourceProvider::ResourceId id = 0; |
| 3053 uint8_t pixels[16] = { 0 }; | 3041 uint8_t pixels[16] = { 0 }; |
| 3054 int texture_id = 123; | 3042 int texture_id = 123; |
| 3055 | 3043 |
| 3056 // Lazy allocation. Don't allocate when creating the resource. | 3044 // Lazy allocation. Don't allocate when creating the resource. |
| 3057 id = resource_provider->CreateResource( | 3045 id = resource_provider->CreateResource( |
| 3058 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3046 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3059 | 3047 |
| 3060 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3048 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3061 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); | 3049 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); |
| 3062 resource_provider->CreateForTesting(id); | 3050 resource_provider->CreateForTesting(id); |
| 3063 | 3051 |
| 3064 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3052 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3065 resource_provider->DeleteResource(id); | 3053 resource_provider->DeleteResource(id); |
| 3066 | 3054 |
| 3067 Mock::VerifyAndClearExpectations(context); | 3055 Mock::VerifyAndClearExpectations(context); |
| 3068 | 3056 |
| 3069 // Do allocate when we set the pixels. | 3057 // Do allocate when we set the pixels. |
| 3070 id = resource_provider->CreateResource( | 3058 id = resource_provider->CreateResource( |
| 3071 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3059 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3072 | 3060 |
| 3073 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3061 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3074 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); | 3062 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); |
| 3075 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)).Times(1); | 3063 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)).Times(1); |
| 3076 EXPECT_CALL(*context, texSubImage2D(_, _, _, _, 2, 2, _, _, _)).Times(1); | 3064 EXPECT_CALL(*context, texSubImage2D(_, _, _, _, 2, 2, _, _, _)).Times(1); |
| 3077 resource_provider->CopyToResource(id, pixels, size); | 3065 resource_provider->SetPixels(id, pixels, rect, rect, offset); |
| 3078 | 3066 |
| 3079 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3067 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3080 resource_provider->DeleteResource(id); | 3068 resource_provider->DeleteResource(id); |
| 3081 | 3069 |
| 3082 Mock::VerifyAndClearExpectations(context); | 3070 Mock::VerifyAndClearExpectations(context); |
| 3083 | 3071 |
| 3084 // Same for async version. | 3072 // Same for async version. |
| 3085 id = resource_provider->CreateResource( | 3073 id = resource_provider->CreateResource( |
| 3086 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3074 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3087 resource_provider->AcquirePixelBuffer(id); | 3075 resource_provider->AcquirePixelBuffer(id); |
| 3088 | 3076 |
| 3089 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3077 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3090 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3078 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
| 3091 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) | 3079 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) |
| 3092 .Times(1); | 3080 .Times(1); |
| 3093 resource_provider->BeginSetPixels(id); | 3081 resource_provider->BeginSetPixels(id); |
| 3094 ASSERT_TRUE(resource_provider->DidSetPixelsComplete(id)); | 3082 ASSERT_TRUE(resource_provider->DidSetPixelsComplete(id)); |
| 3095 | 3083 |
| 3096 resource_provider->ReleasePixelBuffer(id); | 3084 resource_provider->ReleasePixelBuffer(id); |
| 3097 | 3085 |
| 3098 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3086 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3099 resource_provider->DeleteResource(id); | 3087 resource_provider->DeleteResource(id); |
| 3100 | 3088 |
| 3101 Mock::VerifyAndClearExpectations(context); | 3089 Mock::VerifyAndClearExpectations(context); |
| 3102 } | 3090 } |
| 3103 | 3091 |
| 3104 TEST_P(ResourceProviderTest, TextureAllocationHint) { | 3092 TEST_P(ResourceProviderTest, TextureAllocationHint) { |
| 3105 // Only for GL textures. | 3093 // Only for GL textures. |
| 3106 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3094 if (GetParam() != ResourceProvider::GLTexture) |
| 3107 return; | 3095 return; |
| 3108 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3096 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3109 new StrictMock<AllocationTrackingContext3D>); | 3097 new StrictMock<AllocationTrackingContext3D>); |
| 3110 AllocationTrackingContext3D* context = context_owned.get(); | 3098 AllocationTrackingContext3D* context = context_owned.get(); |
| 3111 context->set_support_texture_storage(true); | 3099 context->set_support_texture_storage(true); |
| 3112 context->set_support_texture_usage(true); | 3100 context->set_support_texture_usage(true); |
| 3113 | 3101 |
| 3114 FakeOutputSurfaceClient output_surface_client; | 3102 FakeOutputSurfaceClient output_surface_client; |
| 3115 scoped_ptr<OutputSurface> output_surface( | 3103 scoped_ptr<OutputSurface> output_surface( |
| 3116 FakeOutputSurface::Create3d(context_owned.Pass())); | 3104 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3117 CHECK(output_surface->BindToClient(&output_surface_client)); | 3105 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3118 | 3106 |
| 3119 scoped_ptr<ResourceProvider> resource_provider( | 3107 scoped_ptr<ResourceProvider> resource_provider( |
| 3120 ResourceProvider::Create(output_surface.get(), | 3108 ResourceProvider::Create(output_surface.get(), |
| 3121 shared_bitmap_manager_.get(), | 3109 shared_bitmap_manager_.get(), |
| 3122 gpu_memory_buffer_manager_.get(), | 3110 gpu_memory_buffer_manager_.get(), |
| 3123 NULL, | 3111 NULL, |
| 3124 0, | 3112 0, |
| 3125 false, | 3113 false, |
| 3126 1)); | 3114 1)); |
| 3127 | 3115 |
| 3128 gfx::Size size(2, 2); | 3116 gfx::Size size(2, 2); |
| 3129 | 3117 |
| 3130 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; | 3118 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; |
| 3131 const ResourceProvider::TextureHint hints[4] = { | 3119 const ResourceProvider::TextureHint hints[4] = { |
| 3132 ResourceProvider::TEXTURE_HINT_DEFAULT, | 3120 ResourceProvider::TextureHintDefault, |
| 3133 ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3121 ResourceProvider::TextureHintImmutable, |
| 3134 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, | 3122 ResourceProvider::TextureHintFramebuffer, |
| 3135 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, | 3123 ResourceProvider::TextureHintImmutableFramebuffer, |
| 3136 }; | 3124 }; |
| 3137 for (size_t i = 0; i < arraysize(formats); ++i) { | 3125 for (size_t i = 0; i < arraysize(formats); ++i) { |
| 3138 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { | 3126 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { |
| 3139 // Lazy allocation. Don't allocate when creating the resource. | 3127 // Lazy allocation. Don't allocate when creating the resource. |
| 3140 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3128 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 3141 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); | 3129 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); |
| 3142 | 3130 |
| 3143 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3131 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3144 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3132 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
| 3145 bool is_immutable_hint = | 3133 bool is_immutable_hint = |
| 3146 hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_IMMUTABLE; | 3134 hints[texture_id - 1] & ResourceProvider::TextureHintImmutable; |
| 3147 bool support_immutable_texture = | 3135 bool support_immutable_texture = |
| 3148 is_immutable_hint && formats[i] == RGBA_8888; | 3136 is_immutable_hint && formats[i] == RGBA_8888; |
| 3149 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) | 3137 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) |
| 3150 .Times(support_immutable_texture ? 1 : 0); | 3138 .Times(support_immutable_texture ? 1 : 0); |
| 3151 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)) | 3139 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)) |
| 3152 .Times(support_immutable_texture ? 0 : 1); | 3140 .Times(support_immutable_texture ? 0 : 1); |
| 3153 resource_provider->AllocateForTesting(id); | 3141 resource_provider->AllocateForTesting(id); |
| 3154 | 3142 |
| 3155 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3143 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3156 resource_provider->DeleteResource(id); | 3144 resource_provider->DeleteResource(id); |
| 3157 | 3145 |
| 3158 Mock::VerifyAndClearExpectations(context); | 3146 Mock::VerifyAndClearExpectations(context); |
| 3159 } | 3147 } |
| 3160 } | 3148 } |
| 3161 } | 3149 } |
| 3162 | 3150 |
| 3163 TEST_P(ResourceProviderTest, TextureAllocationHint_BGRA) { | 3151 TEST_P(ResourceProviderTest, TextureAllocationHint_BGRA) { |
| 3164 // Only for GL textures. | 3152 // Only for GL textures. |
| 3165 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3153 if (GetParam() != ResourceProvider::GLTexture) |
| 3166 return; | 3154 return; |
| 3167 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3155 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3168 new StrictMock<AllocationTrackingContext3D>); | 3156 new StrictMock<AllocationTrackingContext3D>); |
| 3169 AllocationTrackingContext3D* context = context_owned.get(); | 3157 AllocationTrackingContext3D* context = context_owned.get(); |
| 3170 context->set_support_texture_format_bgra8888(true); | 3158 context->set_support_texture_format_bgra8888(true); |
| 3171 context->set_support_texture_storage(true); | 3159 context->set_support_texture_storage(true); |
| 3172 context->set_support_texture_usage(true); | 3160 context->set_support_texture_usage(true); |
| 3173 | 3161 |
| 3174 FakeOutputSurfaceClient output_surface_client; | 3162 FakeOutputSurfaceClient output_surface_client; |
| 3175 scoped_ptr<OutputSurface> output_surface( | 3163 scoped_ptr<OutputSurface> output_surface( |
| 3176 FakeOutputSurface::Create3d(context_owned.Pass())); | 3164 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3177 CHECK(output_surface->BindToClient(&output_surface_client)); | 3165 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3178 | 3166 |
| 3179 scoped_ptr<ResourceProvider> resource_provider( | 3167 scoped_ptr<ResourceProvider> resource_provider( |
| 3180 ResourceProvider::Create(output_surface.get(), | 3168 ResourceProvider::Create(output_surface.get(), |
| 3181 shared_bitmap_manager_.get(), | 3169 shared_bitmap_manager_.get(), |
| 3182 gpu_memory_buffer_manager_.get(), | 3170 gpu_memory_buffer_manager_.get(), |
| 3183 NULL, | 3171 NULL, |
| 3184 0, | 3172 0, |
| 3185 false, | 3173 false, |
| 3186 1)); | 3174 1)); |
| 3187 | 3175 |
| 3188 gfx::Size size(2, 2); | 3176 gfx::Size size(2, 2); |
| 3189 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; | 3177 const ResourceFormat formats[2] = {RGBA_8888, BGRA_8888}; |
| 3190 | 3178 |
| 3191 const ResourceProvider::TextureHint hints[4] = { | 3179 const ResourceProvider::TextureHint hints[4] = { |
| 3192 ResourceProvider::TEXTURE_HINT_DEFAULT, | 3180 ResourceProvider::TextureHintDefault, |
| 3193 ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3181 ResourceProvider::TextureHintImmutable, |
| 3194 ResourceProvider::TEXTURE_HINT_FRAMEBUFFER, | 3182 ResourceProvider::TextureHintFramebuffer, |
| 3195 ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER, | 3183 ResourceProvider::TextureHintImmutableFramebuffer, |
| 3196 }; | 3184 }; |
| 3197 for (size_t i = 0; i < arraysize(formats); ++i) { | 3185 for (size_t i = 0; i < arraysize(formats); ++i) { |
| 3198 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { | 3186 for (GLuint texture_id = 1; texture_id <= arraysize(hints); ++texture_id) { |
| 3199 // Lazy allocation. Don't allocate when creating the resource. | 3187 // Lazy allocation. Don't allocate when creating the resource. |
| 3200 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3188 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 3201 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); | 3189 size, GL_CLAMP_TO_EDGE, hints[texture_id - 1], formats[i]); |
| 3202 | 3190 |
| 3203 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3191 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3204 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3192 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
| 3205 bool is_immutable_hint = | 3193 bool is_immutable_hint = |
| 3206 hints[texture_id - 1] & ResourceProvider::TEXTURE_HINT_IMMUTABLE; | 3194 hints[texture_id - 1] & ResourceProvider::TextureHintImmutable; |
| 3207 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) | 3195 EXPECT_CALL(*context, texStorage2DEXT(_, _, _, 2, 2)) |
| 3208 .Times(is_immutable_hint ? 1 : 0); | 3196 .Times(is_immutable_hint ? 1 : 0); |
| 3209 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)) | 3197 EXPECT_CALL(*context, texImage2D(_, _, _, 2, 2, _, _, _, _)) |
| 3210 .Times(is_immutable_hint ? 0 : 1); | 3198 .Times(is_immutable_hint ? 0 : 1); |
| 3211 resource_provider->AllocateForTesting(id); | 3199 resource_provider->AllocateForTesting(id); |
| 3212 | 3200 |
| 3213 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3201 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3214 resource_provider->DeleteResource(id); | 3202 resource_provider->DeleteResource(id); |
| 3215 | 3203 |
| 3216 Mock::VerifyAndClearExpectations(context); | 3204 Mock::VerifyAndClearExpectations(context); |
| 3217 } | 3205 } |
| 3218 } | 3206 } |
| 3219 } | 3207 } |
| 3220 | 3208 |
| 3221 TEST_P(ResourceProviderTest, PixelBuffer_GLTexture) { | 3209 TEST_P(ResourceProviderTest, PixelBuffer_GLTexture) { |
| 3222 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3210 if (GetParam() != ResourceProvider::GLTexture) |
| 3223 return; | 3211 return; |
| 3224 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3212 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3225 new StrictMock<AllocationTrackingContext3D>); | 3213 new StrictMock<AllocationTrackingContext3D>); |
| 3226 AllocationTrackingContext3D* context = context_owned.get(); | 3214 AllocationTrackingContext3D* context = context_owned.get(); |
| 3227 | 3215 |
| 3228 FakeOutputSurfaceClient output_surface_client; | 3216 FakeOutputSurfaceClient output_surface_client; |
| 3229 scoped_ptr<OutputSurface> output_surface( | 3217 scoped_ptr<OutputSurface> output_surface( |
| 3230 FakeOutputSurface::Create3d(context_owned.Pass())); | 3218 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3231 CHECK(output_surface->BindToClient(&output_surface_client)); | 3219 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3232 | 3220 |
| 3233 gfx::Size size(2, 2); | 3221 gfx::Size size(2, 2); |
| 3234 ResourceFormat format = RGBA_8888; | 3222 ResourceFormat format = RGBA_8888; |
| 3235 ResourceProvider::ResourceId id = 0; | 3223 ResourceProvider::ResourceId id = 0; |
| 3236 int texture_id = 123; | 3224 int texture_id = 123; |
| 3237 | 3225 |
| 3238 scoped_ptr<ResourceProvider> resource_provider( | 3226 scoped_ptr<ResourceProvider> resource_provider( |
| 3239 ResourceProvider::Create(output_surface.get(), | 3227 ResourceProvider::Create(output_surface.get(), |
| 3240 shared_bitmap_manager_.get(), | 3228 shared_bitmap_manager_.get(), |
| 3241 gpu_memory_buffer_manager_.get(), | 3229 gpu_memory_buffer_manager_.get(), |
| 3242 NULL, | 3230 NULL, |
| 3243 0, | 3231 0, |
| 3244 false, | 3232 false, |
| 3245 1)); | 3233 1)); |
| 3246 | 3234 |
| 3247 id = resource_provider->CreateResource( | 3235 id = resource_provider->CreateResource( |
| 3248 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3236 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3249 resource_provider->AcquirePixelBuffer(id); | 3237 resource_provider->AcquirePixelBuffer(id); |
| 3250 | 3238 |
| 3251 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3239 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3252 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3240 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
| 3253 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) | 3241 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) |
| 3254 .Times(1); | 3242 .Times(1); |
| 3255 resource_provider->BeginSetPixels(id); | 3243 resource_provider->BeginSetPixels(id); |
| 3256 | 3244 |
| 3257 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id)); | 3245 EXPECT_TRUE(resource_provider->DidSetPixelsComplete(id)); |
| 3258 | 3246 |
| 3259 resource_provider->ReleasePixelBuffer(id); | 3247 resource_provider->ReleasePixelBuffer(id); |
| 3260 | 3248 |
| 3261 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3249 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3262 resource_provider->DeleteResource(id); | 3250 resource_provider->DeleteResource(id); |
| 3263 | 3251 |
| 3264 Mock::VerifyAndClearExpectations(context); | 3252 Mock::VerifyAndClearExpectations(context); |
| 3265 } | 3253 } |
| 3266 | 3254 |
| 3267 TEST_P(ResourceProviderTest, ForcingAsyncUploadToComplete) { | 3255 TEST_P(ResourceProviderTest, ForcingAsyncUploadToComplete) { |
| 3268 // Only for GL textures. | 3256 // Only for GL textures. |
| 3269 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3257 if (GetParam() != ResourceProvider::GLTexture) |
| 3270 return; | 3258 return; |
| 3271 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3259 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3272 new StrictMock<AllocationTrackingContext3D>); | 3260 new StrictMock<AllocationTrackingContext3D>); |
| 3273 AllocationTrackingContext3D* context = context_owned.get(); | 3261 AllocationTrackingContext3D* context = context_owned.get(); |
| 3274 | 3262 |
| 3275 FakeOutputSurfaceClient output_surface_client; | 3263 FakeOutputSurfaceClient output_surface_client; |
| 3276 scoped_ptr<OutputSurface> output_surface( | 3264 scoped_ptr<OutputSurface> output_surface( |
| 3277 FakeOutputSurface::Create3d(context_owned.Pass())); | 3265 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3278 CHECK(output_surface->BindToClient(&output_surface_client)); | 3266 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3279 | 3267 |
| 3280 gfx::Size size(2, 2); | 3268 gfx::Size size(2, 2); |
| 3281 ResourceFormat format = RGBA_8888; | 3269 ResourceFormat format = RGBA_8888; |
| 3282 ResourceProvider::ResourceId id = 0; | 3270 ResourceProvider::ResourceId id = 0; |
| 3283 int texture_id = 123; | 3271 int texture_id = 123; |
| 3284 | 3272 |
| 3285 scoped_ptr<ResourceProvider> resource_provider( | 3273 scoped_ptr<ResourceProvider> resource_provider( |
| 3286 ResourceProvider::Create(output_surface.get(), | 3274 ResourceProvider::Create(output_surface.get(), |
| 3287 shared_bitmap_manager_.get(), | 3275 shared_bitmap_manager_.get(), |
| 3288 gpu_memory_buffer_manager_.get(), | 3276 gpu_memory_buffer_manager_.get(), |
| 3289 NULL, | 3277 NULL, |
| 3290 0, | 3278 0, |
| 3291 false, | 3279 false, |
| 3292 1)); | 3280 1)); |
| 3293 | 3281 |
| 3294 id = resource_provider->CreateResource( | 3282 id = resource_provider->CreateResource( |
| 3295 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3283 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3296 resource_provider->AcquirePixelBuffer(id); | 3284 resource_provider->AcquirePixelBuffer(id); |
| 3297 | 3285 |
| 3298 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3286 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3299 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3287 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
| 3300 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) | 3288 EXPECT_CALL(*context, asyncTexImage2DCHROMIUM(_, _, _, 2, 2, _, _, _, _)) |
| 3301 .Times(1); | 3289 .Times(1); |
| 3302 resource_provider->BeginSetPixels(id); | 3290 resource_provider->BeginSetPixels(id); |
| 3303 | 3291 |
| 3304 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); | 3292 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(1); |
| 3305 EXPECT_CALL(*context, waitAsyncTexImage2DCHROMIUM(GL_TEXTURE_2D)).Times(1); | 3293 EXPECT_CALL(*context, waitAsyncTexImage2DCHROMIUM(GL_TEXTURE_2D)).Times(1); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 3334 shared_bitmap_manager_.get(), | 3322 shared_bitmap_manager_.get(), |
| 3335 gpu_memory_buffer_manager_.get(), | 3323 gpu_memory_buffer_manager_.get(), |
| 3336 NULL, | 3324 NULL, |
| 3337 0, | 3325 0, |
| 3338 false, | 3326 false, |
| 3339 1)); | 3327 1)); |
| 3340 | 3328 |
| 3341 EXPECT_CALL(*context, NextTextureId()).WillRepeatedly(Return(texture_id)); | 3329 EXPECT_CALL(*context, NextTextureId()).WillRepeatedly(Return(texture_id)); |
| 3342 | 3330 |
| 3343 id = resource_provider->CreateResource( | 3331 id = resource_provider->CreateResource( |
| 3344 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3332 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3345 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, | 3333 context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, |
| 3346 GL_INNOCENT_CONTEXT_RESET_ARB); | 3334 GL_INNOCENT_CONTEXT_RESET_ARB); |
| 3347 | 3335 |
| 3348 resource_provider->AcquirePixelBuffer(id); | 3336 resource_provider->AcquirePixelBuffer(id); |
| 3349 int stride; | 3337 int stride; |
| 3350 void* buffer = resource_provider->MapPixelBuffer(id, &stride); | 3338 void* buffer = resource_provider->MapPixelBuffer(id, &stride); |
| 3351 EXPECT_FALSE(buffer); | 3339 EXPECT_FALSE(buffer); |
| 3352 resource_provider->UnmapPixelBuffer(id); | 3340 resource_provider->UnmapPixelBuffer(id); |
| 3353 Mock::VerifyAndClearExpectations(context); | 3341 Mock::VerifyAndClearExpectations(context); |
| 3354 } | 3342 } |
| 3355 | 3343 |
| 3356 TEST_P(ResourceProviderTest, Image_GLTexture) { | 3344 TEST_P(ResourceProviderTest, Image_GLTexture) { |
| 3357 // Only for GL textures. | 3345 // Only for GL textures. |
| 3358 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3346 if (GetParam() != ResourceProvider::GLTexture) |
| 3359 return; | 3347 return; |
| 3360 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3348 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3361 new StrictMock<AllocationTrackingContext3D>); | 3349 new StrictMock<AllocationTrackingContext3D>); |
| 3362 AllocationTrackingContext3D* context = context_owned.get(); | 3350 AllocationTrackingContext3D* context = context_owned.get(); |
| 3363 | 3351 |
| 3364 FakeOutputSurfaceClient output_surface_client; | 3352 FakeOutputSurfaceClient output_surface_client; |
| 3365 scoped_ptr<OutputSurface> output_surface( | 3353 scoped_ptr<OutputSurface> output_surface( |
| 3366 FakeOutputSurface::Create3d(context_owned.Pass())); | 3354 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3367 CHECK(output_surface->BindToClient(&output_surface_client)); | 3355 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3368 | 3356 |
| 3369 const int kWidth = 2; | 3357 const int kWidth = 2; |
| 3370 const int kHeight = 2; | 3358 const int kHeight = 2; |
| 3371 gfx::Size size(kWidth, kHeight); | 3359 gfx::Size size(kWidth, kHeight); |
| 3372 ResourceFormat format = RGBA_8888; | 3360 ResourceFormat format = RGBA_8888; |
| 3373 ResourceProvider::ResourceId id = 0; | 3361 ResourceProvider::ResourceId id = 0; |
| 3374 const unsigned kTextureId = 123u; | 3362 const unsigned kTextureId = 123u; |
| 3375 const unsigned kImageId = 234u; | 3363 const unsigned kImageId = 234u; |
| 3376 | 3364 |
| 3377 scoped_ptr<ResourceProvider> resource_provider( | 3365 scoped_ptr<ResourceProvider> resource_provider( |
| 3378 ResourceProvider::Create(output_surface.get(), | 3366 ResourceProvider::Create(output_surface.get(), |
| 3379 shared_bitmap_manager_.get(), | 3367 shared_bitmap_manager_.get(), |
| 3380 gpu_memory_buffer_manager_.get(), | 3368 gpu_memory_buffer_manager_.get(), |
| 3381 NULL, | 3369 NULL, |
| 3382 0, | 3370 0, |
| 3383 false, | 3371 false, |
| 3384 1)); | 3372 1)); |
| 3385 | 3373 |
| 3386 id = resource_provider->CreateResource( | 3374 id = resource_provider->CreateResource( |
| 3387 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3375 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3388 | 3376 |
| 3389 EXPECT_CALL(*context, createImageCHROMIUM(_, kWidth, kHeight, GL_RGBA)) | 3377 EXPECT_CALL(*context, createImageCHROMIUM(_, kWidth, kHeight, GL_RGBA)) |
| 3390 .WillOnce(Return(kImageId)) | 3378 .WillOnce(Return(kImageId)) |
| 3391 .RetiresOnSaturation(); | 3379 .RetiresOnSaturation(); |
| 3392 { | 3380 { |
| 3393 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( | 3381 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
| 3394 resource_provider.get(), id); | 3382 resource_provider.get(), id); |
| 3395 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); | 3383 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); |
| 3396 } | 3384 } |
| 3397 | 3385 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3432 resource_provider.get(), id, GL_TEXTURE_2D, GL_LINEAR); | 3420 resource_provider.get(), id, GL_TEXTURE_2D, GL_LINEAR); |
| 3433 EXPECT_EQ(kTextureId, lock_gl.texture_id()); | 3421 EXPECT_EQ(kTextureId, lock_gl.texture_id()); |
| 3434 } | 3422 } |
| 3435 | 3423 |
| 3436 EXPECT_CALL(*context, destroyImageCHROMIUM(kImageId)) | 3424 EXPECT_CALL(*context, destroyImageCHROMIUM(kImageId)) |
| 3437 .Times(1) | 3425 .Times(1) |
| 3438 .RetiresOnSaturation(); | 3426 .RetiresOnSaturation(); |
| 3439 } | 3427 } |
| 3440 | 3428 |
| 3441 TEST_P(ResourceProviderTest, CopyResource_GLTexture) { | 3429 TEST_P(ResourceProviderTest, CopyResource_GLTexture) { |
| 3442 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3430 if (GetParam() != ResourceProvider::GLTexture) |
| 3443 return; | 3431 return; |
| 3444 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3432 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3445 new StrictMock<AllocationTrackingContext3D>); | 3433 new StrictMock<AllocationTrackingContext3D>); |
| 3446 AllocationTrackingContext3D* context = context_owned.get(); | 3434 AllocationTrackingContext3D* context = context_owned.get(); |
| 3447 context_owned->set_support_sync_query(true); | 3435 context_owned->set_support_sync_query(true); |
| 3448 | 3436 |
| 3449 FakeOutputSurfaceClient output_surface_client; | 3437 FakeOutputSurfaceClient output_surface_client; |
| 3450 scoped_ptr<OutputSurface> output_surface( | 3438 scoped_ptr<OutputSurface> output_surface( |
| 3451 FakeOutputSurface::Create3d(context_owned.Pass())); | 3439 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3452 ASSERT_TRUE(output_surface->BindToClient(&output_surface_client)); | 3440 ASSERT_TRUE(output_surface->BindToClient(&output_surface_client)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3464 scoped_ptr<ResourceProvider> resource_provider( | 3452 scoped_ptr<ResourceProvider> resource_provider( |
| 3465 ResourceProvider::Create(output_surface.get(), | 3453 ResourceProvider::Create(output_surface.get(), |
| 3466 shared_bitmap_manager_.get(), | 3454 shared_bitmap_manager_.get(), |
| 3467 gpu_memory_buffer_manager_.get(), | 3455 gpu_memory_buffer_manager_.get(), |
| 3468 NULL, | 3456 NULL, |
| 3469 0, | 3457 0, |
| 3470 false, | 3458 false, |
| 3471 1)); | 3459 1)); |
| 3472 | 3460 |
| 3473 source_id = resource_provider->CreateResource( | 3461 source_id = resource_provider->CreateResource( |
| 3474 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3462 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3475 | 3463 |
| 3476 EXPECT_CALL(*context, createImageCHROMIUM(_, kWidth, kHeight, GL_RGBA)) | 3464 EXPECT_CALL(*context, createImageCHROMIUM(_, kWidth, kHeight, GL_RGBA)) |
| 3477 .WillOnce(Return(kImageId)) | 3465 .WillOnce(Return(kImageId)) |
| 3478 .RetiresOnSaturation(); | 3466 .RetiresOnSaturation(); |
| 3479 { | 3467 { |
| 3480 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( | 3468 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock( |
| 3481 resource_provider.get(), source_id); | 3469 resource_provider.get(), source_id); |
| 3482 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); | 3470 EXPECT_TRUE(!!lock.GetGpuMemoryBuffer()); |
| 3483 } | 3471 } |
| 3484 Mock::VerifyAndClearExpectations(context); | 3472 Mock::VerifyAndClearExpectations(context); |
| 3485 | 3473 |
| 3486 dest_id = resource_provider->CreateResource( | 3474 dest_id = resource_provider->CreateResource( |
| 3487 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); | 3475 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3488 | 3476 |
| 3489 EXPECT_CALL(*context, NextTextureId()) | 3477 EXPECT_CALL(*context, NextTextureId()) |
| 3490 .WillOnce(Return(kDestTextureId)) | 3478 .WillOnce(Return(kDestTextureId)) |
| 3491 .RetiresOnSaturation(); | 3479 .RetiresOnSaturation(); |
| 3492 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, kDestTextureId)) | 3480 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, kDestTextureId)) |
| 3493 .Times(2) | 3481 .Times(2) |
| 3494 .RetiresOnSaturation(); | 3482 .RetiresOnSaturation(); |
| 3495 EXPECT_CALL(*context, texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, | 3483 EXPECT_CALL(*context, texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, |
| 3496 GL_UNSIGNED_BYTE, nullptr)) | 3484 GL_UNSIGNED_BYTE, nullptr)) |
| 3497 .Times(1) | 3485 .Times(1) |
| (...skipping 28 matching lines...) Expand all Loading... |
| 3526 FakeOutputSurface* output_surface) { | 3514 FakeOutputSurface* output_surface) { |
| 3527 scoped_ptr<ResourceProviderContext> context_owned = | 3515 scoped_ptr<ResourceProviderContext> context_owned = |
| 3528 ResourceProviderContext::Create(shared_data); | 3516 ResourceProviderContext::Create(shared_data); |
| 3529 ResourceProviderContext* context = context_owned.get(); | 3517 ResourceProviderContext* context = context_owned.get(); |
| 3530 | 3518 |
| 3531 scoped_refptr<TestContextProvider> context_provider = | 3519 scoped_refptr<TestContextProvider> context_provider = |
| 3532 TestContextProvider::Create(context_owned.Pass()); | 3520 TestContextProvider::Create(context_owned.Pass()); |
| 3533 output_surface->InitializeAndSetContext3d(context_provider, nullptr); | 3521 output_surface->InitializeAndSetContext3d(context_provider, nullptr); |
| 3534 resource_provider->InitializeGL(); | 3522 resource_provider->InitializeGL(); |
| 3535 | 3523 |
| 3536 CheckCreateResource(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, | 3524 CheckCreateResource(ResourceProvider::GLTexture, resource_provider, context); |
| 3537 resource_provider, context); | |
| 3538 } | 3525 } |
| 3539 | 3526 |
| 3540 TEST(ResourceProviderTest, BasicInitializeGLSoftware) { | 3527 TEST(ResourceProviderTest, BasicInitializeGLSoftware) { |
| 3541 scoped_ptr<ContextSharedData> shared_data = ContextSharedData::Create(); | 3528 scoped_ptr<ContextSharedData> shared_data = ContextSharedData::Create(); |
| 3542 bool delegated_rendering = false; | 3529 bool delegated_rendering = false; |
| 3543 scoped_ptr<FakeOutputSurface> output_surface( | 3530 scoped_ptr<FakeOutputSurface> output_surface( |
| 3544 FakeOutputSurface::CreateDeferredGL( | 3531 FakeOutputSurface::CreateDeferredGL( |
| 3545 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice), | 3532 scoped_ptr<SoftwareOutputDevice>(new SoftwareOutputDevice), |
| 3546 delegated_rendering)); | 3533 delegated_rendering)); |
| 3547 FakeOutputSurfaceClient client(output_surface.get()); | 3534 FakeOutputSurfaceClient client(output_surface.get()); |
| 3548 EXPECT_TRUE(output_surface->BindToClient(&client)); | 3535 EXPECT_TRUE(output_surface->BindToClient(&client)); |
| 3549 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 3536 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 3550 new TestSharedBitmapManager()); | 3537 new TestSharedBitmapManager()); |
| 3551 scoped_ptr<ResourceProvider> resource_provider( | 3538 scoped_ptr<ResourceProvider> resource_provider( |
| 3552 ResourceProvider::Create(output_surface.get(), | 3539 ResourceProvider::Create(output_surface.get(), |
| 3553 shared_bitmap_manager.get(), | 3540 shared_bitmap_manager.get(), |
| 3554 NULL, | 3541 NULL, |
| 3555 NULL, | 3542 NULL, |
| 3556 0, | 3543 0, |
| 3557 false, | 3544 false, |
| 3558 1)); | 3545 1)); |
| 3559 | 3546 |
| 3560 CheckCreateResource(ResourceProvider::RESOURCE_TYPE_BITMAP, | 3547 CheckCreateResource(ResourceProvider::Bitmap, resource_provider.get(), NULL); |
| 3561 resource_provider.get(), NULL); | |
| 3562 | 3548 |
| 3563 InitializeGLAndCheck(shared_data.get(), | 3549 InitializeGLAndCheck(shared_data.get(), |
| 3564 resource_provider.get(), | 3550 resource_provider.get(), |
| 3565 output_surface.get()); | 3551 output_surface.get()); |
| 3566 | 3552 |
| 3567 resource_provider->InitializeSoftware(); | 3553 resource_provider->InitializeSoftware(); |
| 3568 output_surface->ReleaseGL(); | 3554 output_surface->ReleaseGL(); |
| 3569 CheckCreateResource(ResourceProvider::RESOURCE_TYPE_BITMAP, | 3555 CheckCreateResource(ResourceProvider::Bitmap, resource_provider.get(), NULL); |
| 3570 resource_provider.get(), NULL); | |
| 3571 | 3556 |
| 3572 InitializeGLAndCheck(shared_data.get(), | 3557 InitializeGLAndCheck(shared_data.get(), |
| 3573 resource_provider.get(), | 3558 resource_provider.get(), |
| 3574 output_surface.get()); | 3559 output_surface.get()); |
| 3575 } | 3560 } |
| 3576 | 3561 |
| 3577 TEST_P(ResourceProviderTest, CompressedTextureETC1Allocate) { | 3562 TEST_P(ResourceProviderTest, CompressedTextureETC1Allocate) { |
| 3578 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3563 if (GetParam() != ResourceProvider::GLTexture) |
| 3579 return; | 3564 return; |
| 3580 | 3565 |
| 3581 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3566 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3582 new AllocationTrackingContext3D); | 3567 new AllocationTrackingContext3D); |
| 3583 AllocationTrackingContext3D* context = context_owned.get(); | 3568 AllocationTrackingContext3D* context = context_owned.get(); |
| 3584 context_owned->set_support_compressed_texture_etc1(true); | 3569 context_owned->set_support_compressed_texture_etc1(true); |
| 3585 | 3570 |
| 3586 FakeOutputSurfaceClient output_surface_client; | 3571 FakeOutputSurfaceClient output_surface_client; |
| 3587 scoped_ptr<OutputSurface> output_surface( | 3572 scoped_ptr<OutputSurface> output_surface( |
| 3588 FakeOutputSurface::Create3d(context_owned.Pass())); | 3573 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3589 CHECK(output_surface->BindToClient(&output_surface_client)); | 3574 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3590 | 3575 |
| 3591 gfx::Size size(4, 4); | 3576 gfx::Size size(4, 4); |
| 3592 scoped_ptr<ResourceProvider> resource_provider( | 3577 scoped_ptr<ResourceProvider> resource_provider( |
| 3593 ResourceProvider::Create(output_surface.get(), | 3578 ResourceProvider::Create(output_surface.get(), |
| 3594 shared_bitmap_manager_.get(), | 3579 shared_bitmap_manager_.get(), |
| 3595 gpu_memory_buffer_manager_.get(), | 3580 gpu_memory_buffer_manager_.get(), |
| 3596 NULL, | 3581 NULL, |
| 3597 0, | 3582 0, |
| 3598 false, | 3583 false, |
| 3599 1)); | 3584 1)); |
| 3600 int texture_id = 123; | 3585 int texture_id = 123; |
| 3601 | 3586 |
| 3602 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3587 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 3603 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); | 3588 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, ETC1); |
| 3604 EXPECT_NE(0u, id); | 3589 EXPECT_NE(0u, id); |
| 3605 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3590 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3606 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); | 3591 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(2); |
| 3607 resource_provider->AllocateForTesting(id); | 3592 resource_provider->AllocateForTesting(id); |
| 3608 | 3593 |
| 3609 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3594 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3610 resource_provider->DeleteResource(id); | 3595 resource_provider->DeleteResource(id); |
| 3611 } | 3596 } |
| 3612 | 3597 |
| 3613 TEST_P(ResourceProviderTest, CompressedTextureETC1Upload) { | 3598 TEST_P(ResourceProviderTest, CompressedTextureETC1SetPixels) { |
| 3614 if (GetParam() != ResourceProvider::RESOURCE_TYPE_GL_TEXTURE) | 3599 if (GetParam() != ResourceProvider::GLTexture) |
| 3615 return; | 3600 return; |
| 3616 | 3601 |
| 3617 scoped_ptr<AllocationTrackingContext3D> context_owned( | 3602 scoped_ptr<AllocationTrackingContext3D> context_owned( |
| 3618 new AllocationTrackingContext3D); | 3603 new AllocationTrackingContext3D); |
| 3619 AllocationTrackingContext3D* context = context_owned.get(); | 3604 AllocationTrackingContext3D* context = context_owned.get(); |
| 3620 context_owned->set_support_compressed_texture_etc1(true); | 3605 context_owned->set_support_compressed_texture_etc1(true); |
| 3621 | 3606 |
| 3622 FakeOutputSurfaceClient output_surface_client; | 3607 FakeOutputSurfaceClient output_surface_client; |
| 3623 scoped_ptr<OutputSurface> output_surface( | 3608 scoped_ptr<OutputSurface> output_surface( |
| 3624 FakeOutputSurface::Create3d(context_owned.Pass())); | 3609 FakeOutputSurface::Create3d(context_owned.Pass())); |
| 3625 CHECK(output_surface->BindToClient(&output_surface_client)); | 3610 CHECK(output_surface->BindToClient(&output_surface_client)); |
| 3626 | 3611 |
| 3627 gfx::Size size(4, 4); | 3612 gfx::Size size(4, 4); |
| 3628 scoped_ptr<ResourceProvider> resource_provider( | 3613 scoped_ptr<ResourceProvider> resource_provider( |
| 3629 ResourceProvider::Create(output_surface.get(), | 3614 ResourceProvider::Create(output_surface.get(), |
| 3630 shared_bitmap_manager_.get(), | 3615 shared_bitmap_manager_.get(), |
| 3631 gpu_memory_buffer_manager_.get(), | 3616 gpu_memory_buffer_manager_.get(), |
| 3632 NULL, | 3617 NULL, |
| 3633 0, | 3618 0, |
| 3634 false, | 3619 false, |
| 3635 1)); | 3620 1)); |
| 3636 int texture_id = 123; | 3621 int texture_id = 123; |
| 3637 uint8_t pixels[8]; | 3622 uint8_t pixels[8]; |
| 3638 | 3623 |
| 3639 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3624 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 3640 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, ETC1); | 3625 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, ETC1); |
| 3641 EXPECT_NE(0u, id); | 3626 EXPECT_NE(0u, id); |
| 3642 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); | 3627 EXPECT_CALL(*context, NextTextureId()).WillOnce(Return(texture_id)); |
| 3643 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); | 3628 EXPECT_CALL(*context, bindTexture(GL_TEXTURE_2D, texture_id)).Times(3); |
| 3644 EXPECT_CALL(*context, | 3629 EXPECT_CALL(*context, |
| 3645 compressedTexImage2D( | 3630 compressedTexImage2D( |
| 3646 _, 0, _, size.width(), size.height(), _, _, _)).Times(1); | 3631 _, 0, _, size.width(), size.height(), _, _, _)).Times(1); |
| 3647 resource_provider->CopyToResource(id, pixels, size); | 3632 resource_provider->SetPixels( |
| 3633 id, pixels, gfx::Rect(size), gfx::Rect(size), gfx::Vector2d(0, 0)); |
| 3648 | 3634 |
| 3649 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); | 3635 EXPECT_CALL(*context, RetireTextureId(texture_id)).Times(1); |
| 3650 resource_provider->DeleteResource(id); | 3636 resource_provider->DeleteResource(id); |
| 3651 } | 3637 } |
| 3652 | 3638 |
| 3653 INSTANTIATE_TEST_CASE_P( | 3639 INSTANTIATE_TEST_CASE_P( |
| 3654 ResourceProviderTests, | 3640 ResourceProviderTests, |
| 3655 ResourceProviderTest, | 3641 ResourceProviderTest, |
| 3656 ::testing::Values(ResourceProvider::RESOURCE_TYPE_GL_TEXTURE, | 3642 ::testing::Values(ResourceProvider::GLTexture, ResourceProvider::Bitmap)); |
| 3657 ResourceProvider::RESOURCE_TYPE_BITMAP)); | |
| 3658 | 3643 |
| 3659 class TextureIdAllocationTrackingContext : public TestWebGraphicsContext3D { | 3644 class TextureIdAllocationTrackingContext : public TestWebGraphicsContext3D { |
| 3660 public: | 3645 public: |
| 3661 GLuint NextTextureId() override { | 3646 GLuint NextTextureId() override { |
| 3662 base::AutoLock lock(namespace_->lock); | 3647 base::AutoLock lock(namespace_->lock); |
| 3663 return namespace_->next_texture_id++; | 3648 return namespace_->next_texture_id++; |
| 3664 } | 3649 } |
| 3665 void RetireTextureId(GLuint) override {} | 3650 void RetireTextureId(GLuint) override {} |
| 3666 GLuint PeekTextureId() { | 3651 GLuint PeekTextureId() { |
| 3667 base::AutoLock lock(namespace_->lock); | 3652 base::AutoLock lock(namespace_->lock); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3689 scoped_ptr<ResourceProvider> resource_provider( | 3674 scoped_ptr<ResourceProvider> resource_provider( |
| 3690 ResourceProvider::Create(output_surface.get(), | 3675 ResourceProvider::Create(output_surface.get(), |
| 3691 shared_bitmap_manager.get(), | 3676 shared_bitmap_manager.get(), |
| 3692 NULL, | 3677 NULL, |
| 3693 NULL, | 3678 NULL, |
| 3694 0, | 3679 0, |
| 3695 false, | 3680 false, |
| 3696 kTextureAllocationChunkSize)); | 3681 kTextureAllocationChunkSize)); |
| 3697 | 3682 |
| 3698 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3683 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 3699 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3684 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3700 format); | |
| 3701 resource_provider->AllocateForTesting(id); | 3685 resource_provider->AllocateForTesting(id); |
| 3702 Mock::VerifyAndClearExpectations(context); | 3686 Mock::VerifyAndClearExpectations(context); |
| 3703 | 3687 |
| 3704 DCHECK_EQ(2u, context->PeekTextureId()); | 3688 DCHECK_EQ(2u, context->PeekTextureId()); |
| 3705 resource_provider->DeleteResource(id); | 3689 resource_provider->DeleteResource(id); |
| 3706 } | 3690 } |
| 3707 | 3691 |
| 3708 { | 3692 { |
| 3709 size_t kTextureAllocationChunkSize = 8; | 3693 size_t kTextureAllocationChunkSize = 8; |
| 3710 scoped_ptr<ResourceProvider> resource_provider( | 3694 scoped_ptr<ResourceProvider> resource_provider( |
| 3711 ResourceProvider::Create(output_surface.get(), | 3695 ResourceProvider::Create(output_surface.get(), |
| 3712 shared_bitmap_manager.get(), | 3696 shared_bitmap_manager.get(), |
| 3713 NULL, | 3697 NULL, |
| 3714 NULL, | 3698 NULL, |
| 3715 0, | 3699 0, |
| 3716 false, | 3700 false, |
| 3717 kTextureAllocationChunkSize)); | 3701 kTextureAllocationChunkSize)); |
| 3718 | 3702 |
| 3719 ResourceProvider::ResourceId id = resource_provider->CreateResource( | 3703 ResourceProvider::ResourceId id = resource_provider->CreateResource( |
| 3720 size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 3704 size, GL_CLAMP_TO_EDGE, ResourceProvider::TextureHintImmutable, format); |
| 3721 format); | |
| 3722 resource_provider->AllocateForTesting(id); | 3705 resource_provider->AllocateForTesting(id); |
| 3723 Mock::VerifyAndClearExpectations(context); | 3706 Mock::VerifyAndClearExpectations(context); |
| 3724 | 3707 |
| 3725 DCHECK_EQ(10u, context->PeekTextureId()); | 3708 DCHECK_EQ(10u, context->PeekTextureId()); |
| 3726 resource_provider->DeleteResource(id); | 3709 resource_provider->DeleteResource(id); |
| 3727 } | 3710 } |
| 3728 } | 3711 } |
| 3729 | 3712 |
| 3730 } // namespace | 3713 } // namespace |
| 3731 } // namespace cc | 3714 } // namespace cc |
| OLD | NEW |