| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/texture_manager.h" | 5 #include "gpu/command_buffer/service/texture_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 713 EXPECT_TRUE(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 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 730 EXPECT_TRUE(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 Loading... |
| 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_->CanGenerateMipmaps(texture_ref_.get())); | 792 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
| 793 manager_->MarkMipmapsGenerated(texture_ref_.get()); | |
| 794 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0); | 793 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0); |
| 795 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); | 794 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); |
| 796 } | 795 } |
| 797 | 796 |
| 798 TEST_F(TextureTest, UnusedMips) { | 797 TEST_F(TextureTest, UnusedMips) { |
| 799 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 798 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 800 Texture* texture = texture_ref_->texture(); | 799 Texture* texture = texture_ref_->texture(); |
| 801 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 800 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 802 // Set level zero to large size. | 801 // Set level zero to large size. |
| 803 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, | 802 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)); | 803 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); |
| 805 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 804 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
| 806 manager_->MarkMipmapsGenerated(texture_ref_.get()); | |
| 807 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 805 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 808 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 806 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 809 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 807 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 810 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | 808 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
| 811 // Set level zero to large smaller (levels unused mips) | 809 // Set level zero to large smaller (levels unused mips) |
| 812 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, | 810 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)); | 811 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); |
| 814 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 812 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
| 815 manager_->MarkMipmapsGenerated(texture_ref_.get()); | |
| 816 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 813 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 817 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 814 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 818 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 815 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 819 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | 816 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
| 820 // Set an unused level to some size | 817 // Set an unused level to some size |
| 821 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, | 818 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)); | 819 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(16, 16)); |
| 823 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 820 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 824 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 821 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 825 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 822 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 879 manager.SetTarget(texture_ref, GL_TEXTURE_2D); | 876 manager.SetTarget(texture_ref, GL_TEXTURE_2D); |
| 880 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 877 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 881 // Check Setting level 0 to NPOT | 878 // Check Setting level 0 to NPOT |
| 882 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, | 879 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, |
| 883 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); | 880 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); |
| 884 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); | 881 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); |
| 885 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 882 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 886 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref)); | 883 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref)); |
| 887 EXPECT_FALSE(manager.CanRender(texture_ref)); | 884 EXPECT_FALSE(manager.CanRender(texture_ref)); |
| 888 EXPECT_TRUE(manager.HaveUnrenderableTextures()); | 885 EXPECT_TRUE(manager.HaveUnrenderableTextures()); |
| 889 manager.MarkMipmapsGenerated(texture_ref); | 886 EXPECT_TRUE(manager.MarkMipmapsGenerated(texture_ref)); |
| 890 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 887 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 891 EXPECT_TRUE(manager.CanRender(texture_ref)); | 888 EXPECT_TRUE(manager.CanRender(texture_ref)); |
| 892 EXPECT_FALSE(manager.HaveUnrenderableTextures()); | 889 EXPECT_FALSE(manager.HaveUnrenderableTextures()); |
| 893 manager.Destroy(false); | 890 manager.Destroy(false); |
| 894 } | 891 } |
| 895 | 892 |
| 896 TEST_F(TextureTest, POTCubeMap) { | 893 TEST_F(TextureTest, POTCubeMap) { |
| 897 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); | 894 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); |
| 898 Texture* texture = texture_ref_->texture(); | 895 Texture* texture = texture_ref_->texture(); |
| 899 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); | 896 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 944 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 948 gfx::Rect(4, 4)); | 945 gfx::Rect(4, 4)); |
| 949 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 946 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 950 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 947 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 951 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 948 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 952 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 949 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 953 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 950 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 954 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | 951 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
| 955 | 952 |
| 956 // Make mips. | 953 // Make mips. |
| 957 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 954 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
| 958 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 955 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 959 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 956 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 960 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 957 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 961 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | 958 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
| 962 | 959 |
| 963 // Change a mip. | 960 // Change a mip. |
| 964 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 1, | 961 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 1, |
| 965 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 962 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 966 gfx::Rect(4, 4)); | 963 gfx::Rect(4, 4)); |
| 967 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); | 964 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
| 968 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 965 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 969 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 966 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 970 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 967 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 971 // Set a level past the number of mips that would get generated. | 968 // Set a level past the number of mips that would get generated. |
| 972 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 3, | 969 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 3, |
| 973 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 970 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 974 gfx::Rect(4, 4)); | 971 gfx::Rect(4, 4)); |
| 975 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 972 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 976 // Make mips. | 973 // Make mips. |
| 977 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 974 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
| 978 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 975 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 979 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); | 976 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
| 980 } | 977 } |
| 981 | 978 |
| 982 TEST_F(TextureTest, POTCubeMapWithoutMipmap) { | 979 TEST_F(TextureTest, POTCubeMapWithoutMipmap) { |
| 983 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); | 980 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); |
| 984 SetParameter( | 981 SetParameter( |
| 985 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR); | 982 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR); |
| 986 SetParameter( | 983 SetParameter( |
| 987 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); | 984 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1333 EXPECT_TRUE(texture->SafeToRenderFrom()); | 1330 EXPECT_TRUE(texture->SafeToRenderFrom()); |
| 1334 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 1331 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
| 1335 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 1332 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
| 1336 EXPECT_EQ(0, texture->num_uncleared_mips()); | 1333 EXPECT_EQ(0, texture->num_uncleared_mips()); |
| 1337 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, | 1334 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, |
| 1338 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); | 1335 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); |
| 1339 EXPECT_FALSE(texture->SafeToRenderFrom()); | 1336 EXPECT_FALSE(texture->SafeToRenderFrom()); |
| 1340 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 1337 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
| 1341 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 1338 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
| 1342 EXPECT_EQ(1, texture->num_uncleared_mips()); | 1339 EXPECT_EQ(1, texture->num_uncleared_mips()); |
| 1343 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | |
| 1344 manager_->MarkMipmapsGenerated(texture_ref_.get()); | 1340 manager_->MarkMipmapsGenerated(texture_ref_.get()); |
| 1345 EXPECT_TRUE(texture->SafeToRenderFrom()); | 1341 EXPECT_TRUE(texture->SafeToRenderFrom()); |
| 1346 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 1342 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
| 1347 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 1343 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
| 1348 EXPECT_EQ(0, texture->num_uncleared_mips()); | 1344 EXPECT_EQ(0, texture->num_uncleared_mips()); |
| 1349 | 1345 |
| 1350 manager_->CreateTexture(kClient2Id, kService2Id); | 1346 manager_->CreateTexture(kClient2Id, kService2Id); |
| 1351 scoped_refptr<TextureRef> texture_ref2( | 1347 scoped_refptr<TextureRef> texture_ref2( |
| 1352 manager_->GetTexture(kClient2Id)); | 1348 manager_->GetTexture(kClient2Id)); |
| 1353 ASSERT_TRUE(texture_ref2.get() != NULL); | 1349 ASSERT_TRUE(texture_ref2.get() != NULL); |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1744 const GLuint ProduceConsumeTextureTest::kClient2Id = 2; | 1740 const GLuint ProduceConsumeTextureTest::kClient2Id = 2; |
| 1745 const GLuint ProduceConsumeTextureTest::kService2Id = 12; | 1741 const GLuint ProduceConsumeTextureTest::kService2Id = 12; |
| 1746 | 1742 |
| 1747 TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) { | 1743 TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) { |
| 1748 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 1744 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 1749 Texture* texture = texture_ref_->texture(); | 1745 Texture* texture = texture_ref_->texture(); |
| 1750 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); | 1746 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
| 1751 LevelInfo level0(GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, | 1747 LevelInfo level0(GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, |
| 1752 gfx::Rect(4, 4)); | 1748 gfx::Rect(4, 4)); |
| 1753 SetLevelInfo(texture_ref_.get(), 0, level0); | 1749 SetLevelInfo(texture_ref_.get(), 0, level0); |
| 1754 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 1750 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
| 1755 manager_->MarkMipmapsGenerated(texture_ref_.get()); | |
| 1756 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1751 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 1757 LevelInfo level1 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1); | 1752 LevelInfo level1 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1); |
| 1758 LevelInfo level2 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2); | 1753 LevelInfo level2 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2); |
| 1759 Texture* produced_texture = Produce(texture_ref_.get()); | 1754 Texture* produced_texture = Produce(texture_ref_.get()); |
| 1760 EXPECT_EQ(produced_texture, texture); | 1755 EXPECT_EQ(produced_texture, texture); |
| 1761 | 1756 |
| 1762 // Make this texture bigger with more levels, and make sure they get | 1757 // Make this texture bigger with more levels, and make sure they get |
| 1763 // clobbered correctly during Consume(). | 1758 // clobbered correctly during Consume(). |
| 1764 manager_->SetTarget(texture2_.get(), GL_TEXTURE_2D); | 1759 manager_->SetTarget(texture2_.get(), GL_TEXTURE_2D); |
| 1765 SetLevelInfo(texture2_.get(), 0, LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, | 1760 SetLevelInfo(texture2_.get(), 0, LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, |
| 1766 0, GL_UNSIGNED_BYTE, gfx::Rect())); | 1761 0, GL_UNSIGNED_BYTE, gfx::Rect())); |
| 1767 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 1762 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_.get())); |
| 1768 manager_->MarkMipmapsGenerated(texture2_.get()); | |
| 1769 texture = texture2_->texture(); | 1763 texture = texture2_->texture(); |
| 1770 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); | 1764 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
| 1771 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size()); | 1765 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size()); |
| 1772 | 1766 |
| 1773 GLuint client_id = texture2_->client_id(); | 1767 GLuint client_id = texture2_->client_id(); |
| 1774 manager_->RemoveTexture(client_id); | 1768 manager_->RemoveTexture(client_id); |
| 1775 Consume(client_id, produced_texture); | 1769 Consume(client_id, produced_texture); |
| 1776 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); | 1770 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); |
| 1777 EXPECT_EQ(produced_texture, restored_texture->texture()); | 1771 EXPECT_EQ(produced_texture, restored_texture->texture()); |
| 1778 EXPECT_EQ(level0, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 0)); | 1772 EXPECT_EQ(level0, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 0)); |
| (...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2433 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); | 2427 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); |
| 2434 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); | 2428 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, | 2429 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, |
| 2436 GL_DEPTH32F_STENCIL8); | 2430 GL_DEPTH32F_STENCIL8); |
| 2437 | 2431 |
| 2438 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); | 2432 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); |
| 2439 } | 2433 } |
| 2440 | 2434 |
| 2441 } // namespace gles2 | 2435 } // namespace gles2 |
| 2442 } // namespace gpu | 2436 } // namespace gpu |
| OLD | NEW |