| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "gpu/command_buffer/service/texture_manager.h" | 5 #include "gpu/command_buffer/service/texture_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 const GLint TextureManagerTest::kMaxExternalTextureSize; | 133 const GLint TextureManagerTest::kMaxExternalTextureSize; |
| 134 const GLint TextureManagerTest::kMax2dLevels; | 134 const GLint TextureManagerTest::kMax2dLevels; |
| 135 const GLint TextureManagerTest::kMaxCubeMapLevels; | 135 const GLint TextureManagerTest::kMaxCubeMapLevels; |
| 136 const GLint TextureManagerTest::kMaxExternalLevels; | 136 const GLint TextureManagerTest::kMaxExternalLevels; |
| 137 #endif | 137 #endif |
| 138 | 138 |
| 139 TEST_F(TextureManagerTest, Basic) { | 139 TEST_F(TextureManagerTest, Basic) { |
| 140 const GLuint kClient1Id = 1; | 140 const GLuint kClient1Id = 1; |
| 141 const GLuint kService1Id = 11; | 141 const GLuint kService1Id = 11; |
| 142 const GLuint kClient2Id = 2; | 142 const GLuint kClient2Id = 2; |
| 143 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 144 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 143 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
| 145 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 144 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
| 146 // Check we can create texture. | 145 // Check we can create texture. |
| 147 manager_->CreateTexture(kClient1Id, kService1Id); | 146 manager_->CreateTexture(kClient1Id, kService1Id); |
| 148 // Check texture got created. | 147 // Check texture got created. |
| 149 scoped_refptr<TextureRef> texture = manager_->GetTexture(kClient1Id); | 148 scoped_refptr<TextureRef> texture = manager_->GetTexture(kClient1Id); |
| 150 ASSERT_TRUE(texture.get() != NULL); | 149 ASSERT_TRUE(texture.get() != NULL); |
| 151 EXPECT_EQ(kService1Id, texture->service_id()); | 150 EXPECT_EQ(kService1Id, texture->service_id()); |
| 152 EXPECT_EQ(kClient1Id, texture->client_id()); | 151 EXPECT_EQ(kClient1Id, texture->client_id()); |
| 153 EXPECT_EQ(texture->texture(), manager_->GetTextureForServiceId( | 152 EXPECT_EQ(texture->texture(), manager_->GetTextureForServiceId( |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 612 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 614 EXPECT_EQ(0, texture->num_uncleared_mips()); | 613 EXPECT_EQ(0, texture->num_uncleared_mips()); |
| 615 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 614 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 616 EXPECT_TRUE(texture->SafeToRenderFrom()); | 615 EXPECT_TRUE(texture->SafeToRenderFrom()); |
| 617 EXPECT_FALSE(texture->IsImmutable()); | 616 EXPECT_FALSE(texture->IsImmutable()); |
| 618 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR), | 617 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR), |
| 619 texture->min_filter()); | 618 texture->min_filter()); |
| 620 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture->mag_filter()); | 619 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture->mag_filter()); |
| 621 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_s()); | 620 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_s()); |
| 622 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_t()); | 621 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_t()); |
| 623 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 624 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 622 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
| 625 EXPECT_EQ(0u, texture->estimated_size()); | 623 EXPECT_EQ(0u, texture->estimated_size()); |
| 626 } | 624 } |
| 627 | 625 |
| 628 TEST_F(TextureTest, SetTargetTexture2D) { | 626 TEST_F(TextureTest, SetTargetTexture2D) { |
| 629 Texture* texture = texture_ref_->texture(); | 627 Texture* texture = texture_ref_->texture(); |
| 630 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 628 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 631 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 629 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 632 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 630 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 633 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 631 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 686 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 689 Texture* texture = texture_ref_->texture(); | 687 Texture* texture = texture_ref_->texture(); |
| 690 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 688 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 691 // Check Setting level 0 to POT | 689 // Check Setting level 0 to POT |
| 692 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, | 690 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, |
| 693 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 691 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 694 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 692 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 695 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 693 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 696 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 694 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 697 EXPECT_TRUE(texture->SafeToRenderFrom()); | 695 EXPECT_TRUE(texture->SafeToRenderFrom()); |
| 698 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 699 // Set filters to something that will work with a single mip. | 696 // Set filters to something that will work with a single mip. |
| 700 SetParameter( | 697 SetParameter( |
| 701 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); | 698 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); |
| 702 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 699 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 703 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 704 // Set them back. | 700 // Set them back. |
| 705 SetParameter(texture_ref_.get(), | 701 SetParameter(texture_ref_.get(), |
| 706 GL_TEXTURE_MIN_FILTER, | 702 GL_TEXTURE_MIN_FILTER, |
| 707 GL_LINEAR_MIPMAP_LINEAR, | 703 GL_LINEAR_MIPMAP_LINEAR, |
| 708 GL_NO_ERROR); | 704 GL_NO_ERROR); |
| 709 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 710 | 705 |
| 711 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 706 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 712 // Make mips. | 707 // Make mips. |
| 713 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 708 manager_->MarkMipmapsGenerated(texture_ref_.get()); |
| 714 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 709 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 715 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 710 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 716 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 717 // Change a mip. | 711 // Change a mip. |
| 718 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, | 712 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, |
| 719 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 713 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 720 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 714 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 721 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 715 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 722 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 716 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 723 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 717 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 724 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 725 // Set a level past the number of mips that would get generated. | 718 // Set a level past the number of mips that would get generated. |
| 726 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, | 719 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, |
| 727 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 720 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 728 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 721 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 729 // Make mips. | 722 // Make mips. |
| 730 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 723 manager_->MarkMipmapsGenerated(texture_ref_.get()); |
| 731 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 724 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 732 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 725 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 733 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 734 } | 726 } |
| 735 | 727 |
| 736 TEST_F(TextureTest, BaseLevel) { | 728 TEST_F(TextureTest, BaseLevel) { |
| 737 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 729 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 738 Texture* texture = texture_ref_->texture(); | 730 Texture* texture = texture_ref_->texture(); |
| 739 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 731 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 740 // Check Setting level 1 to POT | 732 // Check Setting level 1 to POT |
| 741 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, | 733 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, |
| 742 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 734 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 743 SetParameter( | 735 SetParameter( |
| 744 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); | 736 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); |
| 745 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 737 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 746 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 747 SetParameter( | 738 SetParameter( |
| 748 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 1, GL_NO_ERROR); | 739 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 1, GL_NO_ERROR); |
| 749 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 740 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 750 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 751 } | 741 } |
| 752 | 742 |
| 753 TEST_F(TextureTest, BaseLevelMaxLevel) { | 743 TEST_F(TextureTest, BaseLevelMaxLevel) { |
| 754 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 744 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 755 Texture* texture = texture_ref_->texture(); | 745 Texture* texture = texture_ref_->texture(); |
| 756 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 746 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 757 // Set up level 2, 3, 4. | 747 // Set up level 2, 3, 4. |
| 758 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2, GL_RGBA, 8, 8, 1, | 748 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2, GL_RGBA, 8, 8, 1, |
| 759 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(8, 8)); | 749 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(8, 8)); |
| 760 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, | 750 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, |
| 761 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 751 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 762 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 2, 2, 1, | 752 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 2, 2, 1, |
| 763 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); | 753 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); |
| 764 SetParameter( | 754 SetParameter( |
| 765 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR, | 755 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR, |
| 766 GL_NO_ERROR); | 756 GL_NO_ERROR); |
| 767 SetParameter( | 757 SetParameter( |
| 768 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR); | 758 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR); |
| 769 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 759 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 770 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 771 SetParameter( | 760 SetParameter( |
| 772 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 2, GL_NO_ERROR); | 761 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 2, GL_NO_ERROR); |
| 773 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 762 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 774 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 775 SetParameter( | 763 SetParameter( |
| 776 texture_ref_.get(), GL_TEXTURE_MAX_LEVEL, 4, GL_NO_ERROR); | 764 texture_ref_.get(), GL_TEXTURE_MAX_LEVEL, 4, GL_NO_ERROR); |
| 777 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 765 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 778 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 779 SetParameter( | 766 SetParameter( |
| 780 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 0, GL_NO_ERROR); | 767 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 0, GL_NO_ERROR); |
| 781 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 768 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 782 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 783 } | 769 } |
| 784 | 770 |
| 785 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) { | 771 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) { |
| 786 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 772 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 787 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64); | 773 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64); |
| 788 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, | 774 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, |
| 789 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 775 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 790 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0); | 776 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0); |
| 791 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84); | 777 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84); |
| 792 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 778 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 793 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 779 manager_->MarkMipmapsGenerated(texture_ref_.get()); |
| 794 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0); | 780 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0); |
| 795 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); | 781 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); |
| 796 } | 782 } |
| 797 | 783 |
| 798 TEST_F(TextureTest, UnusedMips) { | 784 TEST_F(TextureTest, UnusedMips) { |
| 799 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 785 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 800 Texture* texture = texture_ref_->texture(); | 786 Texture* texture = texture_ref_->texture(); |
| 801 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 787 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 802 // Set level zero to large size. | 788 // Set level zero to large size. |
| 803 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, | 789 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, |
| 804 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 790 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 805 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 791 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 806 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 792 manager_->MarkMipmapsGenerated(texture_ref_.get()); |
| 807 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 793 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 808 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 794 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 809 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 795 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 810 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 811 // Set level zero to large smaller (levels unused mips) | 796 // Set level zero to large smaller (levels unused mips) |
| 812 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, | 797 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, |
| 813 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); | 798 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); |
| 814 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 799 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 815 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 800 manager_->MarkMipmapsGenerated(texture_ref_.get()); |
| 816 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 801 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 817 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 802 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 818 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 803 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 819 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 820 // Set an unused level to some size | 804 // Set an unused level to some size |
| 821 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, | 805 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, |
| 822 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(16, 16)); | 806 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(16, 16)); |
| 823 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 807 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 824 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 808 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 825 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 809 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 826 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 827 } | 810 } |
| 828 | 811 |
| 829 TEST_F(TextureTest, NPOT2D) { | 812 TEST_F(TextureTest, NPOT2D) { |
| 830 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 813 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 831 Texture* texture = texture_ref_->texture(); | 814 Texture* texture = texture_ref_->texture(); |
| 832 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 815 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 833 // Check Setting level 0 to NPOT | 816 // Check Setting level 0 to NPOT |
| 834 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, | 817 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, |
| 835 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); | 818 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); |
| 836 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); | 819 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); |
| 837 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 820 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 838 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 821 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 839 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 822 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 840 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 841 SetParameter( | 823 SetParameter( |
| 842 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); | 824 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); |
| 843 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 825 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 844 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 845 SetParameter( | 826 SetParameter( |
| 846 texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); | 827 texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
| 847 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 828 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 848 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 849 SetParameter( | 829 SetParameter( |
| 850 texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); | 830 texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
| 851 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 831 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 852 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 853 // Change it to POT. | 832 // Change it to POT. |
| 854 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, | 833 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, |
| 855 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); | 834 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 856 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 835 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 857 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 836 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 858 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 837 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 859 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 860 } | 838 } |
| 861 | 839 |
| 862 TEST_F(TextureTest, NPOT2DNPOTOK) { | 840 TEST_F(TextureTest, NPOT2DNPOTOK) { |
| 863 TestHelper::SetupFeatureInfoInitExpectations( | 841 TestHelper::SetupFeatureInfoInitExpectations( |
| 864 gl_.get(), "GL_OES_texture_npot"); | 842 gl_.get(), "GL_OES_texture_npot"); |
| 865 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 843 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 866 feature_info->InitializeForTesting(); | 844 feature_info->InitializeForTesting(); |
| 867 TextureManager manager(NULL, | 845 TextureManager manager(NULL, |
| 868 feature_info.get(), | 846 feature_info.get(), |
| 869 kMaxTextureSize, | 847 kMaxTextureSize, |
| 870 kMaxCubeMapTextureSize, | 848 kMaxCubeMapTextureSize, |
| 871 kMaxRectangleTextureSize, | 849 kMaxRectangleTextureSize, |
| 872 kMax3DTextureSize, | 850 kMax3DTextureSize, |
| 873 kUseDefaultTextures); | 851 kUseDefaultTextures); |
| 874 manager.CreateTexture(kClient1Id, kService1Id); | 852 manager.CreateTexture(kClient1Id, kService1Id); |
| 875 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 853 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 876 ASSERT_TRUE(texture_ref != NULL); | 854 ASSERT_TRUE(texture_ref != NULL); |
| 877 Texture* texture = texture_ref->texture(); | 855 Texture* texture = texture_ref->texture(); |
| 878 | 856 |
| 879 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 857 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 880 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 858 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 881 // Check Setting level 0 to NPOT | 859 // Check Setting level 0 to NPOT |
| 882 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, | 860 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, |
| 883 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); | 861 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); |
| 884 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); | 862 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); |
| 885 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 863 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 886 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref)); | 864 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref)); |
| 887 EXPECT_FALSE(manager.CanRender(texture_ref)); | 865 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| 888 EXPECT_TRUE(manager.HaveUnrenderableTextures()); | |
| 889 manager.MarkMipmapsGenerated(texture_ref); | 866 manager.MarkMipmapsGenerated(texture_ref); |
| 890 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 867 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 891 EXPECT_TRUE(manager.CanRender(texture_ref)); | 868 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 892 EXPECT_FALSE(manager.HaveUnrenderableTextures()); | |
| 893 manager.Destroy(false); | 869 manager.Destroy(false); |
| 894 } | 870 } |
| 895 | 871 |
| 896 TEST_F(TextureTest, POTCubeMap) { | 872 TEST_F(TextureTest, POTCubeMap) { |
| 897 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); | 873 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); |
| 898 Texture* texture = texture_ref_->texture(); | 874 Texture* texture = texture_ref_->texture(); |
| 899 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); | 875 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); |
| 900 // Check Setting level 0 each face to POT | 876 // Check Setting level 0 each face to POT |
| 901 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, | 877 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, |
| 902 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 878 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 903 gfx::Rect(4, 4)); | 879 gfx::Rect(4, 4)); |
| 904 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 880 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 905 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 881 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 906 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 882 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 907 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 883 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 908 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 884 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 909 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 910 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, | 885 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, |
| 911 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 886 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 912 gfx::Rect(4, 4)); | 887 gfx::Rect(4, 4)); |
| 913 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 888 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 914 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 889 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 915 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 890 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 916 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 891 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 917 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 892 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 918 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 919 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, | 893 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, |
| 920 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 894 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 921 gfx::Rect(4, 4)); | 895 gfx::Rect(4, 4)); |
| 922 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 896 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 923 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 897 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 924 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 898 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 925 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 899 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 926 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 900 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 927 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 928 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, | 901 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, |
| 929 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 902 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 930 gfx::Rect(4, 4)); | 903 gfx::Rect(4, 4)); |
| 931 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 904 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 932 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 905 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 933 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 906 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 934 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 907 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 935 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 908 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 936 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 937 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, | 909 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, |
| 938 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 910 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 939 gfx::Rect(4, 4)); | 911 gfx::Rect(4, 4)); |
| 940 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 912 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 941 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 913 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 942 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 914 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 943 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 915 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 944 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 916 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 945 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 946 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, | 917 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, |
| 947 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 918 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 948 gfx::Rect(4, 4)); | 919 gfx::Rect(4, 4)); |
| 949 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 920 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 950 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 921 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 951 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 922 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 952 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 923 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 953 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 924 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 954 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 955 | 925 |
| 956 // Make mips. | 926 // Make mips. |
| 957 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 927 manager_->MarkMipmapsGenerated(texture_ref_.get()); |
| 958 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 928 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 959 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 929 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 960 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 930 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 961 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 962 | 931 |
| 963 // Change a mip. | 932 // Change a mip. |
| 964 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 1, | 933 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 1, |
| 965 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 934 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 966 gfx::Rect(4, 4)); | 935 gfx::Rect(4, 4)); |
| 967 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 936 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 968 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 937 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 969 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 938 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 970 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 939 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 971 // Set a level past the number of mips that would get generated. | 940 // Set a level past the number of mips that would get generated. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 994 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); | 963 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); |
| 995 // Check Setting level 0 each face to POT | 964 // Check Setting level 0 each face to POT |
| 996 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, | 965 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, |
| 997 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 966 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 998 gfx::Rect(4, 4)); | 967 gfx::Rect(4, 4)); |
| 999 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 968 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 1000 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 969 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 1001 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 970 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 1002 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 971 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 1003 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 972 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 1004 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 1005 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, | 973 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, |
| 1006 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 974 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 1007 gfx::Rect(4, 4)); | 975 gfx::Rect(4, 4)); |
| 1008 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 976 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 1009 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 977 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 1010 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 978 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 1011 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 979 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 1012 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 980 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 1013 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 1014 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, | 981 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, |
| 1015 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 982 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 1016 gfx::Rect(4, 4)); | 983 gfx::Rect(4, 4)); |
| 1017 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 984 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 1018 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 985 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 1019 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 986 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 1020 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 987 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 1021 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 988 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 1022 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 1023 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, | 989 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, |
| 1024 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 990 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 1025 gfx::Rect(4, 4)); | 991 gfx::Rect(4, 4)); |
| 1026 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 992 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 1027 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 993 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 1028 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 994 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 1029 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 995 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 1030 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 996 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 1031 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 1032 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, | 997 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, |
| 1033 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 998 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 1034 gfx::Rect(4, 4)); | 999 gfx::Rect(4, 4)); |
| 1035 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 1000 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 1036 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1001 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 1037 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 1002 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 1038 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 1003 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 1039 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 1004 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 1040 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 1041 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, | 1005 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, |
| 1042 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 1006 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 1043 gfx::Rect(4, 4)); | 1007 gfx::Rect(4, 4)); |
| 1044 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 1008 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 1045 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1009 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 1046 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 1010 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 1047 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 1011 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 1048 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 1012 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 1049 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 1050 } | 1013 } |
| 1051 | 1014 |
| 1052 TEST_F(TextureTest, GetLevelSize) { | 1015 TEST_F(TextureTest, GetLevelSize) { |
| 1053 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_3D); | 1016 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_3D); |
| 1054 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_3D, 1, GL_RGBA, 4, 5, 6, | 1017 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_3D, 1, GL_RGBA, 4, 5, 6, |
| 1055 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); | 1018 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); |
| 1056 GLsizei width = -1; | 1019 GLsizei width = -1; |
| 1057 GLsizei height = -1; | 1020 GLsizei height = -1; |
| 1058 GLsizei depth = -1; | 1021 GLsizei depth = -1; |
| 1059 Texture* texture = texture_ref_->texture(); | 1022 Texture* texture = texture_ref_->texture(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1142 kMax3DTextureSize, | 1105 kMax3DTextureSize, |
| 1143 kUseDefaultTextures); | 1106 kUseDefaultTextures); |
| 1144 manager.CreateTexture(kClient1Id, kService1Id); | 1107 manager.CreateTexture(kClient1Id, kService1Id); |
| 1145 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1108 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1146 ASSERT_TRUE(texture_ref != NULL); | 1109 ASSERT_TRUE(texture_ref != NULL); |
| 1147 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1110 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1148 Texture* texture = texture_ref->texture(); | 1111 Texture* texture = texture_ref->texture(); |
| 1149 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1112 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1150 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1113 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1151 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); | 1114 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); |
| 1152 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1115 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| 1153 TestHelper::SetTexParameteriWithExpectations( | 1116 TestHelper::SetTexParameteriWithExpectations( |
| 1154 gl_.get(), error_state_.get(), &manager, | 1117 gl_.get(), error_state_.get(), &manager, |
| 1155 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); | 1118 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); |
| 1156 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1119 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| 1157 TestHelper::SetTexParameteriWithExpectations( | 1120 TestHelper::SetTexParameteriWithExpectations( |
| 1158 gl_.get(), error_state_.get(), &manager, texture_ref, | 1121 gl_.get(), error_state_.get(), &manager, texture_ref, |
| 1159 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); | 1122 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); |
| 1160 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1123 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 1161 manager.Destroy(false); | 1124 manager.Destroy(false); |
| 1162 } | 1125 } |
| 1163 | 1126 |
| 1164 TEST_F(TextureTest, FloatLinear) { | 1127 TEST_F(TextureTest, FloatLinear) { |
| 1165 TestHelper::SetupFeatureInfoInitExpectations( | 1128 TestHelper::SetupFeatureInfoInitExpectations( |
| 1166 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); | 1129 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); |
| 1167 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1130 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1168 feature_info->InitializeForTesting(); | 1131 feature_info->InitializeForTesting(); |
| 1169 TextureManager manager(NULL, | 1132 TextureManager manager(NULL, |
| 1170 feature_info.get(), | 1133 feature_info.get(), |
| 1171 kMaxTextureSize, | 1134 kMaxTextureSize, |
| 1172 kMaxCubeMapTextureSize, | 1135 kMaxCubeMapTextureSize, |
| 1173 kMaxRectangleTextureSize, | 1136 kMaxRectangleTextureSize, |
| 1174 kMax3DTextureSize, | 1137 kMax3DTextureSize, |
| 1175 kUseDefaultTextures); | 1138 kUseDefaultTextures); |
| 1176 manager.CreateTexture(kClient1Id, kService1Id); | 1139 manager.CreateTexture(kClient1Id, kService1Id); |
| 1177 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1140 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1178 ASSERT_TRUE(texture_ref != NULL); | 1141 ASSERT_TRUE(texture_ref != NULL); |
| 1179 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1142 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1180 Texture* texture = texture_ref->texture(); | 1143 Texture* texture = texture_ref->texture(); |
| 1181 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1144 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1182 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1145 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1183 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); | 1146 GL_RGBA, GL_FLOAT, gfx::Rect(1, 1)); |
| 1184 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1147 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 1185 manager.Destroy(false); | 1148 manager.Destroy(false); |
| 1186 } | 1149 } |
| 1187 | 1150 |
| 1188 TEST_F(TextureTest, HalfFloatNotLinear) { | 1151 TEST_F(TextureTest, HalfFloatNotLinear) { |
| 1189 TestHelper::SetupFeatureInfoInitExpectations( | 1152 TestHelper::SetupFeatureInfoInitExpectations( |
| 1190 gl_.get(), "GL_OES_texture_half_float"); | 1153 gl_.get(), "GL_OES_texture_half_float"); |
| 1191 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1154 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1192 feature_info->InitializeForTesting(); | 1155 feature_info->InitializeForTesting(); |
| 1193 TextureManager manager(NULL, | 1156 TextureManager manager(NULL, |
| 1194 feature_info.get(), | 1157 feature_info.get(), |
| 1195 kMaxTextureSize, | 1158 kMaxTextureSize, |
| 1196 kMaxCubeMapTextureSize, | 1159 kMaxCubeMapTextureSize, |
| 1197 kMaxRectangleTextureSize, | 1160 kMaxRectangleTextureSize, |
| 1198 kMax3DTextureSize, | 1161 kMax3DTextureSize, |
| 1199 kUseDefaultTextures); | 1162 kUseDefaultTextures); |
| 1200 manager.CreateTexture(kClient1Id, kService1Id); | 1163 manager.CreateTexture(kClient1Id, kService1Id); |
| 1201 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1164 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1202 ASSERT_TRUE(texture_ref != NULL); | 1165 ASSERT_TRUE(texture_ref != NULL); |
| 1203 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1166 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1204 Texture* texture = texture_ref->texture(); | 1167 Texture* texture = texture_ref->texture(); |
| 1205 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1168 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1206 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1169 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1207 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); | 1170 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); |
| 1208 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1171 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| 1209 TestHelper::SetTexParameteriWithExpectations( | 1172 TestHelper::SetTexParameteriWithExpectations( |
| 1210 gl_.get(), error_state_.get(), &manager, | 1173 gl_.get(), error_state_.get(), &manager, |
| 1211 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); | 1174 texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); |
| 1212 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 1175 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| 1213 TestHelper::SetTexParameteriWithExpectations( | 1176 TestHelper::SetTexParameteriWithExpectations( |
| 1214 gl_.get(), error_state_.get(), &manager, texture_ref, | 1177 gl_.get(), error_state_.get(), &manager, texture_ref, |
| 1215 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); | 1178 GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR); |
| 1216 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1179 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 1217 manager.Destroy(false); | 1180 manager.Destroy(false); |
| 1218 } | 1181 } |
| 1219 | 1182 |
| 1220 TEST_F(TextureTest, HalfFloatLinear) { | 1183 TEST_F(TextureTest, HalfFloatLinear) { |
| 1221 TestHelper::SetupFeatureInfoInitExpectations( | 1184 TestHelper::SetupFeatureInfoInitExpectations( |
| 1222 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); | 1185 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); |
| 1223 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1186 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1224 feature_info->InitializeForTesting(); | 1187 feature_info->InitializeForTesting(); |
| 1225 TextureManager manager(NULL, | 1188 TextureManager manager(NULL, |
| 1226 feature_info.get(), | 1189 feature_info.get(), |
| 1227 kMaxTextureSize, | 1190 kMaxTextureSize, |
| 1228 kMaxCubeMapTextureSize, | 1191 kMaxCubeMapTextureSize, |
| 1229 kMaxRectangleTextureSize, | 1192 kMaxRectangleTextureSize, |
| 1230 kMax3DTextureSize, | 1193 kMax3DTextureSize, |
| 1231 kUseDefaultTextures); | 1194 kUseDefaultTextures); |
| 1232 manager.CreateTexture(kClient1Id, kService1Id); | 1195 manager.CreateTexture(kClient1Id, kService1Id); |
| 1233 TextureRef* texture_ref = manager.GetTexture(kClient1Id); | 1196 TextureRef* texture_ref = manager.GetTexture(kClient1Id); |
| 1234 ASSERT_TRUE(texture_ref != NULL); | 1197 ASSERT_TRUE(texture_ref != NULL); |
| 1235 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 1198 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 1236 Texture* texture = texture_ref->texture(); | 1199 Texture* texture = texture_ref->texture(); |
| 1237 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1200 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1238 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, | 1201 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
| 1239 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); | 1202 GL_RGBA, GL_HALF_FLOAT_OES, gfx::Rect(1, 1)); |
| 1240 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1203 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 1241 manager.Destroy(false); | 1204 manager.Destroy(false); |
| 1242 } | 1205 } |
| 1243 | 1206 |
| 1244 TEST_F(TextureTest, EGLImageExternal) { | 1207 TEST_F(TextureTest, EGLImageExternal) { |
| 1245 TestHelper::SetupFeatureInfoInitExpectations( | 1208 TestHelper::SetupFeatureInfoInitExpectations( |
| 1246 gl_.get(), "GL_OES_EGL_image_external"); | 1209 gl_.get(), "GL_OES_EGL_image_external"); |
| 1247 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); | 1210 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
| 1248 feature_info->InitializeForTesting(); | 1211 feature_info->InitializeForTesting(); |
| 1249 TextureManager manager(NULL, | 1212 TextureManager manager(NULL, |
| 1250 feature_info.get(), | 1213 feature_info.get(), |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1455 EXPECT_EQ(0, texture->num_uncleared_mips()); | 1418 EXPECT_EQ(0, texture->num_uncleared_mips()); |
| 1456 } | 1419 } |
| 1457 | 1420 |
| 1458 TEST_F(TextureTest, UseDeletedTexture) { | 1421 TEST_F(TextureTest, UseDeletedTexture) { |
| 1459 static const GLuint kClient2Id = 2; | 1422 static const GLuint kClient2Id = 2; |
| 1460 static const GLuint kService2Id = 12; | 1423 static const GLuint kService2Id = 12; |
| 1461 // Make the default texture renderable | 1424 // Make the default texture renderable |
| 1462 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 1425 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 1463 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, | 1426 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, |
| 1464 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); | 1427 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); |
| 1465 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 1466 // Make a new texture | 1428 // Make a new texture |
| 1467 manager_->CreateTexture(kClient2Id, kService2Id); | 1429 manager_->CreateTexture(kClient2Id, kService2Id); |
| 1468 scoped_refptr<TextureRef> texture_ref( | 1430 scoped_refptr<TextureRef> texture_ref( |
| 1469 manager_->GetTexture(kClient2Id)); | 1431 manager_->GetTexture(kClient2Id)); |
| 1470 manager_->SetTarget(texture_ref.get(), GL_TEXTURE_2D); | 1432 manager_->SetTarget(texture_ref.get(), GL_TEXTURE_2D); |
| 1471 EXPECT_FALSE(manager_->CanRender(texture_ref.get())); | 1433 EXPECT_FALSE(manager_->CanRender(texture_ref.get())); |
| 1472 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 1473 // Remove it. | 1434 // Remove it. |
| 1474 manager_->RemoveTexture(kClient2Id); | 1435 manager_->RemoveTexture(kClient2Id); |
| 1475 EXPECT_FALSE(manager_->CanRender(texture_ref.get())); | 1436 EXPECT_FALSE(manager_->CanRender(texture_ref.get())); |
| 1476 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | |
| 1477 // Check that we can still manipulate it and it effects the manager. | 1437 // Check that we can still manipulate it and it effects the manager. |
| 1478 manager_->SetLevelInfo(texture_ref.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, | 1438 manager_->SetLevelInfo(texture_ref.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, |
| 1479 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); | 1439 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); |
| 1480 EXPECT_TRUE(manager_->CanRender(texture_ref.get())); | 1440 EXPECT_TRUE(manager_->CanRender(texture_ref.get())); |
| 1481 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | |
| 1482 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) | 1441 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) |
| 1483 .Times(1) | 1442 .Times(1) |
| 1484 .RetiresOnSaturation(); | 1443 .RetiresOnSaturation(); |
| 1485 texture_ref = NULL; | 1444 texture_ref = NULL; |
| 1486 } | 1445 } |
| 1487 | 1446 |
| 1488 TEST_F(TextureTest, GetLevelImage) { | 1447 TEST_F(TextureTest, GetLevelImage) { |
| 1489 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 1448 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 1490 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, | 1449 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, |
| 1491 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); | 1450 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1986 | 1945 |
| 1987 EXPECT_CALL(*gl_, DeleteTextures(1, _)) | 1946 EXPECT_CALL(*gl_, DeleteTextures(1, _)) |
| 1988 .Times(1) | 1947 .Times(1) |
| 1989 .RetiresOnSaturation(); | 1948 .RetiresOnSaturation(); |
| 1990 ref2 = NULL; | 1949 ref2 = NULL; |
| 1991 texture_manager2_->RemoveTexture(20); | 1950 texture_manager2_->RemoveTexture(20); |
| 1992 testing::Mock::VerifyAndClearExpectations(gl_.get()); | 1951 testing::Mock::VerifyAndClearExpectations(gl_.get()); |
| 1993 } | 1952 } |
| 1994 | 1953 |
| 1995 TEST_F(SharedTextureTest, TextureSafetyAccounting) { | 1954 TEST_F(SharedTextureTest, TextureSafetyAccounting) { |
| 1996 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures()); | |
| 1997 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); | 1955 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); |
| 1998 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); | 1956 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); |
| 1999 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures()); | |
| 2000 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); | 1957 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); |
| 2001 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); | 1958 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); |
| 2002 | 1959 |
| 2003 // Newly created texture is renderable. | 1960 // Newly created texture is renderable. |
| 2004 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); | 1961 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); |
| 2005 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures()); | |
| 2006 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); | 1962 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); |
| 2007 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); | 1963 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); |
| 2008 | 1964 |
| 2009 // Associate new texture ref to other texture manager, should account for it | 1965 // Associate new texture ref to other texture manager, should account for it |
| 2010 // too. | 1966 // too. |
| 2011 scoped_refptr<TextureRef> ref2 = | 1967 scoped_refptr<TextureRef> ref2 = |
| 2012 texture_manager2_->Consume(20, ref1->texture()); | 1968 texture_manager2_->Consume(20, ref1->texture()); |
| 2013 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures()); | |
| 2014 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); | 1969 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); |
| 2015 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); | 1970 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); |
| 2016 | 1971 |
| 2017 // Make texture renderable but uncleared on one texture manager, should affect | 1972 // Make texture renderable but uncleared on one texture manager, should affect |
| 2018 // other one. | 1973 // other one. |
| 2019 texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D); | 1974 texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D); |
| 2020 EXPECT_TRUE(texture_manager1_->HaveUnrenderableTextures()); | |
| 2021 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); | 1975 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); |
| 2022 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); | 1976 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); |
| 2023 EXPECT_TRUE(texture_manager2_->HaveUnrenderableTextures()); | |
| 2024 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); | 1977 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); |
| 2025 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); | 1978 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); |
| 2026 | 1979 |
| 2027 texture_manager1_->SetLevelInfo(ref1.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, | 1980 texture_manager1_->SetLevelInfo(ref1.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, |
| 2028 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); | 1981 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); |
| 2029 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures()); | |
| 2030 EXPECT_TRUE(texture_manager1_->HaveUnsafeTextures()); | 1982 EXPECT_TRUE(texture_manager1_->HaveUnsafeTextures()); |
| 2031 EXPECT_TRUE(texture_manager1_->HaveUnclearedMips()); | 1983 EXPECT_TRUE(texture_manager1_->HaveUnclearedMips()); |
| 2032 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures()); | |
| 2033 EXPECT_TRUE(texture_manager2_->HaveUnsafeTextures()); | 1984 EXPECT_TRUE(texture_manager2_->HaveUnsafeTextures()); |
| 2034 EXPECT_TRUE(texture_manager2_->HaveUnclearedMips()); | 1985 EXPECT_TRUE(texture_manager2_->HaveUnclearedMips()); |
| 2035 | 1986 |
| 2036 // Make texture cleared on one texture manager, should affect other one. | 1987 // Make texture cleared on one texture manager, should affect other one. |
| 2037 texture_manager1_->SetLevelCleared(ref1.get(), GL_TEXTURE_2D, 0, true); | 1988 texture_manager1_->SetLevelCleared(ref1.get(), GL_TEXTURE_2D, 0, true); |
| 2038 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); | 1989 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); |
| 2039 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); | 1990 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); |
| 2040 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); | 1991 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); |
| 2041 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); | 1992 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); |
| 2042 | 1993 |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2433 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); | 2384 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); |
| 2434 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); | 2385 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); |
| 2435 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, | 2386 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, |
| 2436 GL_DEPTH32F_STENCIL8); | 2387 GL_DEPTH32F_STENCIL8); |
| 2437 | 2388 |
| 2438 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); | 2389 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); |
| 2439 } | 2390 } |
| 2440 | 2391 |
| 2441 } // namespace gles2 | 2392 } // namespace gles2 |
| 2442 } // namespace gpu | 2393 } // namespace gpu |
| OLD | NEW |