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