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

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

Issue 1605323004: Check if internal_format is valid for GenerateMipmap(). (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 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 703 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
704 // Set them back. 704 // Set them back.
705 SetParameter(texture_ref_.get(), 705 SetParameter(texture_ref_.get(),
706 GL_TEXTURE_MIN_FILTER, 706 GL_TEXTURE_MIN_FILTER,
707 GL_LINEAR_MIPMAP_LINEAR, 707 GL_LINEAR_MIPMAP_LINEAR,
708 GL_NO_ERROR); 708 GL_NO_ERROR);
709 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 709 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
710 710
711 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 711 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
712 // Make mips. 712 // Make mips.
713 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 713 manager_->MarkMipmapsGenerated(texture_ref_.get());
714 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 714 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
715 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 715 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
716 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 716 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
717 // Change a mip. 717 // Change a mip.
718 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,
719 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 719 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
720 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 720 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
721 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 721 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
722 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 722 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
723 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 723 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
724 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 724 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
725 // 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.
726 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,
727 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 727 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
728 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 728 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
729 // Make mips. 729 // Make mips.
730 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 730 manager_->MarkMipmapsGenerated(texture_ref_.get());
731 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 731 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
732 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 732 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
733 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 733 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
734 } 734 }
735 735
736 TEST_F(TextureTest, BaseLevel) { 736 TEST_F(TextureTest, BaseLevel) {
737 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 737 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
738 Texture* texture = texture_ref_->texture(); 738 Texture* texture = texture_ref_->texture();
739 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 739 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
740 // Check Setting level 1 to POT 740 // Check Setting level 1 to POT
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 782 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
783 } 783 }
784 784
785 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) { 785 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) {
786 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 786 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
787 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64); 787 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64);
788 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,
789 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 789 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
790 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0); 790 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0);
791 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84); 791 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84);
792 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 792 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
793 manager_->MarkMipmapsGenerated(texture_ref_.get());
793 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0); 794 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0);
794 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); 795 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0);
795 } 796 }
796 797
797 TEST_F(TextureTest, UnusedMips) { 798 TEST_F(TextureTest, UnusedMips) {
798 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 799 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
799 Texture* texture = texture_ref_->texture(); 800 Texture* texture = texture_ref_->texture();
800 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 801 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
801 // Set level zero to large size. 802 // Set level zero to large size.
802 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,
803 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 804 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
804 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 805 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
806 manager_->MarkMipmapsGenerated(texture_ref_.get());
805 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 807 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
806 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 808 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
807 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 809 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
808 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 810 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
809 // Set level zero to large smaller (levels unused mips) 811 // Set level zero to large smaller (levels unused mips)
810 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,
811 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); 813 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2));
812 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 814 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
815 manager_->MarkMipmapsGenerated(texture_ref_.get());
813 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 816 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
814 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 817 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
815 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 818 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
816 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 819 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
817 // Set an unused level to some size 820 // Set an unused level to some size
818 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,
819 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(16, 16)); 822 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(16, 16));
820 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 823 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
821 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 824 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
822 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 825 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 879 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
877 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 880 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
878 // Check Setting level 0 to NPOT 881 // Check Setting level 0 to NPOT
879 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,
880 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); 883 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5));
881 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); 884 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture));
882 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 885 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
883 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref)); 886 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref));
884 EXPECT_FALSE(manager.CanRender(texture_ref)); 887 EXPECT_FALSE(manager.CanRender(texture_ref));
885 EXPECT_TRUE(manager.HaveUnrenderableTextures()); 888 EXPECT_TRUE(manager.HaveUnrenderableTextures());
886 EXPECT_TRUE(manager.MarkMipmapsGenerated(texture_ref)); 889 manager.MarkMipmapsGenerated(texture_ref);
887 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 890 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
888 EXPECT_TRUE(manager.CanRender(texture_ref)); 891 EXPECT_TRUE(manager.CanRender(texture_ref));
889 EXPECT_FALSE(manager.HaveUnrenderableTextures()); 892 EXPECT_FALSE(manager.HaveUnrenderableTextures());
890 manager.Destroy(false); 893 manager.Destroy(false);
891 } 894 }
892 895
893 TEST_F(TextureTest, POTCubeMap) { 896 TEST_F(TextureTest, POTCubeMap) {
894 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); 897 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP);
895 Texture* texture = texture_ref_->texture(); 898 Texture* texture = texture_ref_->texture();
896 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); 899 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 947 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
945 gfx::Rect(4, 4)); 948 gfx::Rect(4, 4));
946 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 949 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
947 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 950 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
948 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 951 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
949 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 952 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
950 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 953 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
951 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 954 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
952 955
953 // Make mips. 956 // Make mips.
954 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 957 manager_->MarkMipmapsGenerated(texture_ref_.get());
955 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 958 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
956 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 959 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
957 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 960 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
958 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 961 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
959 962
960 // Change a mip. 963 // Change a mip.
961 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,
962 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 965 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
963 gfx::Rect(4, 4)); 966 gfx::Rect(4, 4));
964 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 967 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
965 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 968 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
966 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 969 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
967 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 970 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
968 // 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.
969 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 3, 972 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 3,
970 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 973 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
971 gfx::Rect(4, 4)); 974 gfx::Rect(4, 4));
972 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 975 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
973 // Make mips. 976 // Make mips.
974 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 977 manager_->MarkMipmapsGenerated(texture_ref_.get());
975 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 978 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
976 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 979 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
977 } 980 }
978 981
979 TEST_F(TextureTest, POTCubeMapWithoutMipmap) { 982 TEST_F(TextureTest, POTCubeMapWithoutMipmap) {
980 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); 983 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP);
981 SetParameter( 984 SetParameter(
982 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR); 985 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR);
983 SetParameter( 986 SetParameter(
984 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 987 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 EXPECT_TRUE(texture->SafeToRenderFrom()); 1333 EXPECT_TRUE(texture->SafeToRenderFrom());
1331 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1334 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1332 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1335 EXPECT_FALSE(manager_->HaveUnclearedMips());
1333 EXPECT_EQ(0, texture->num_uncleared_mips()); 1336 EXPECT_EQ(0, texture->num_uncleared_mips());
1334 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 1337 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1,
1335 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); 1338 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect());
1336 EXPECT_FALSE(texture->SafeToRenderFrom()); 1339 EXPECT_FALSE(texture->SafeToRenderFrom());
1337 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1340 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1338 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1341 EXPECT_TRUE(manager_->HaveUnclearedMips());
1339 EXPECT_EQ(1, texture->num_uncleared_mips()); 1342 EXPECT_EQ(1, texture->num_uncleared_mips());
1343 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
1340 manager_->MarkMipmapsGenerated(texture_ref_.get()); 1344 manager_->MarkMipmapsGenerated(texture_ref_.get());
1341 EXPECT_TRUE(texture->SafeToRenderFrom()); 1345 EXPECT_TRUE(texture->SafeToRenderFrom());
1342 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1346 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1343 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1347 EXPECT_FALSE(manager_->HaveUnclearedMips());
1344 EXPECT_EQ(0, texture->num_uncleared_mips()); 1348 EXPECT_EQ(0, texture->num_uncleared_mips());
1345 1349
1346 manager_->CreateTexture(kClient2Id, kService2Id); 1350 manager_->CreateTexture(kClient2Id, kService2Id);
1347 scoped_refptr<TextureRef> texture_ref2( 1351 scoped_refptr<TextureRef> texture_ref2(
1348 manager_->GetTexture(kClient2Id)); 1352 manager_->GetTexture(kClient2Id));
1349 ASSERT_TRUE(texture_ref2.get() != NULL); 1353 ASSERT_TRUE(texture_ref2.get() != NULL);
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
1740 const GLuint ProduceConsumeTextureTest::kClient2Id = 2; 1744 const GLuint ProduceConsumeTextureTest::kClient2Id = 2;
1741 const GLuint ProduceConsumeTextureTest::kService2Id = 12; 1745 const GLuint ProduceConsumeTextureTest::kService2Id = 12;
1742 1746
1743 TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) { 1747 TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) {
1744 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 1748 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1745 Texture* texture = texture_ref_->texture(); 1749 Texture* texture = texture_ref_->texture();
1746 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1750 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1747 LevelInfo level0(GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, 1751 LevelInfo level0(GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE,
1748 gfx::Rect(4, 4)); 1752 gfx::Rect(4, 4));
1749 SetLevelInfo(texture_ref_.get(), 0, level0); 1753 SetLevelInfo(texture_ref_.get(), 0, level0);
1750 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 1754 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
1755 manager_->MarkMipmapsGenerated(texture_ref_.get());
1751 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1756 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1752 LevelInfo level1 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1); 1757 LevelInfo level1 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1);
1753 LevelInfo level2 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2); 1758 LevelInfo level2 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2);
1754 Texture* produced_texture = Produce(texture_ref_.get()); 1759 Texture* produced_texture = Produce(texture_ref_.get());
1755 EXPECT_EQ(produced_texture, texture); 1760 EXPECT_EQ(produced_texture, texture);
1756 1761
1757 // Make this texture bigger with more levels, and make sure they get 1762 // Make this texture bigger with more levels, and make sure they get
1758 // clobbered correctly during Consume(). 1763 // clobbered correctly during Consume().
1759 manager_->SetTarget(texture2_.get(), GL_TEXTURE_2D); 1764 manager_->SetTarget(texture2_.get(), GL_TEXTURE_2D);
1760 SetLevelInfo(texture2_.get(), 0, LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, 1765 SetLevelInfo(texture2_.get(), 0, LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1,
1761 0, GL_UNSIGNED_BYTE, gfx::Rect())); 1766 0, GL_UNSIGNED_BYTE, gfx::Rect()));
1762 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_.get())); 1767 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
1768 manager_->MarkMipmapsGenerated(texture2_.get());
1763 texture = texture2_->texture(); 1769 texture = texture2_->texture();
1764 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1770 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1765 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size()); 1771 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size());
1766 1772
1767 GLuint client_id = texture2_->client_id(); 1773 GLuint client_id = texture2_->client_id();
1768 manager_->RemoveTexture(client_id); 1774 manager_->RemoveTexture(client_id);
1769 Consume(client_id, produced_texture); 1775 Consume(client_id, produced_texture);
1770 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); 1776 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id);
1771 EXPECT_EQ(produced_texture, restored_texture->texture()); 1777 EXPECT_EQ(produced_texture, restored_texture->texture());
1772 EXPECT_EQ(level0, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 0)); 1778 EXPECT_EQ(level0, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 0));
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
2427 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); 2433 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F);
2428 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);
2429 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,
2430 GL_DEPTH32F_STENCIL8); 2436 GL_DEPTH32F_STENCIL8);
2431 2437
2432 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); 2438 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8);
2433 } 2439 }
2434 2440
2435 } // namespace gles2 2441 } // namespace gles2
2436 } // 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