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

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

Issue 1505343003: Updating texture validation to account for sampler objects in ES3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed issue on devices without TEXTURE_FLOAT_LINEAR Created 4 years, 10 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());
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
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
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
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
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
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
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
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
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