Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Side by Side Diff: gpu/command_buffer/service/texture_manager_unittest.cc

Issue 1630263002: Revert of Updating texture validation to account for sampler objects in ES3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698