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