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 |