| 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 <memory> | 10 #include <memory> |
| (...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 699 static const bool kUseDefaultTextures = false; | 699 static const bool kUseDefaultTextures = false; |
| 700 | 700 |
| 701 TextureTestBase() | 701 TextureTestBase() |
| 702 : feature_info_(new FeatureInfo()) { | 702 : feature_info_(new FeatureInfo()) { |
| 703 } | 703 } |
| 704 ~TextureTestBase() override { texture_ref_ = NULL; } | 704 ~TextureTestBase() override { texture_ref_ = NULL; } |
| 705 | 705 |
| 706 protected: | 706 protected: |
| 707 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { | 707 void SetUpBase(MemoryTracker* memory_tracker, const std::string& extensions) { |
| 708 GpuServiceTest::SetUp(); | 708 GpuServiceTest::SetUp(); |
| 709 if (!extensions.empty()) { | 709 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), |
| 710 TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), | 710 extensions.c_str()); |
| 711 extensions.c_str()); | 711 feature_info_->InitializeForTesting(); |
| 712 feature_info_->InitializeForTesting(); | |
| 713 } | |
| 714 | 712 |
| 715 manager_.reset(new TextureManager(memory_tracker, | 713 manager_.reset(new TextureManager(memory_tracker, |
| 716 feature_info_.get(), | 714 feature_info_.get(), |
| 717 kMaxTextureSize, | 715 kMaxTextureSize, |
| 718 kMaxCubeMapTextureSize, | 716 kMaxCubeMapTextureSize, |
| 719 kMaxRectangleTextureSize, | 717 kMaxRectangleTextureSize, |
| 720 kMax3DTextureSize, | 718 kMax3DTextureSize, |
| 721 kMaxArrayTextureLayers, | 719 kMaxArrayTextureLayers, |
| 722 kUseDefaultTextures)); | 720 kUseDefaultTextures)); |
| 723 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); | 721 decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>()); |
| (...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1617 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 1615 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 1618 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, | 1616 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, |
| 1619 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); | 1617 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); |
| 1620 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, | 1618 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, |
| 1621 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); | 1619 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); |
| 1622 Texture* texture = texture_ref_->texture(); | 1620 Texture* texture = texture_ref_->texture(); |
| 1623 EXPECT_FALSE(texture->SafeToRenderFrom()); | 1621 EXPECT_FALSE(texture->SafeToRenderFrom()); |
| 1624 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 1622 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
| 1625 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 1623 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
| 1626 EXPECT_EQ(2, texture->num_uncleared_mips()); | 1624 EXPECT_EQ(2, texture->num_uncleared_mips()); |
| 1625 EXPECT_CALL(*decoder_.get(), GetFeatureInfo()) |
| 1626 .WillRepeatedly(Return(feature_info_.get())); |
| 1627 manager_->ClearRenderableLevels(decoder_.get(), texture_ref_.get()); | 1627 manager_->ClearRenderableLevels(decoder_.get(), texture_ref_.get()); |
| 1628 EXPECT_TRUE(texture->SafeToRenderFrom()); | 1628 EXPECT_TRUE(texture->SafeToRenderFrom()); |
| 1629 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 1629 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
| 1630 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 1630 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
| 1631 EXPECT_EQ(0, texture->num_uncleared_mips()); | 1631 EXPECT_EQ(0, texture->num_uncleared_mips()); |
| 1632 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, | 1632 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, |
| 1633 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); | 1633 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); |
| 1634 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, | 1634 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, |
| 1635 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 3)); | 1635 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 3)); |
| 1636 EXPECT_FALSE(texture->SafeToRenderFrom()); | 1636 EXPECT_FALSE(texture->SafeToRenderFrom()); |
| (...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2103 | 2103 |
| 2104 // See if we can clear the previously uncleared level now. | 2104 // See if we can clear the previously uncleared level now. |
| 2105 EXPECT_EQ(level0, | 2105 EXPECT_EQ(level0, |
| 2106 GetLevelInfo(restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); | 2106 GetLevelInfo(restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); |
| 2107 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) | 2107 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) |
| 2108 .WillRepeatedly(Return(true)); | 2108 .WillRepeatedly(Return(true)); |
| 2109 // The code path taken when IsCompressedTextureFormat returns true | 2109 // The code path taken when IsCompressedTextureFormat returns true |
| 2110 // is covered best by the WebGL 2.0 conformance tests. | 2110 // is covered best by the WebGL 2.0 conformance tests. |
| 2111 EXPECT_CALL(*decoder_, IsCompressedTextureFormat(_)) | 2111 EXPECT_CALL(*decoder_, IsCompressedTextureFormat(_)) |
| 2112 .WillRepeatedly(Return(false)); | 2112 .WillRepeatedly(Return(false)); |
| 2113 EXPECT_CALL(*decoder_.get(), GetFeatureInfo()) |
| 2114 .WillRepeatedly(Return(feature_info_.get())); |
| 2113 EXPECT_TRUE(manager_->ClearTextureLevel( | 2115 EXPECT_TRUE(manager_->ClearTextureLevel( |
| 2114 decoder_.get(), restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); | 2116 decoder_.get(), restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); |
| 2115 } | 2117 } |
| 2116 | 2118 |
| 2117 TEST_F(ProduceConsumeTextureTest, ProduceConsumeExternal) { | 2119 TEST_F(ProduceConsumeTextureTest, ProduceConsumeExternal) { |
| 2118 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES); | 2120 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES); |
| 2119 Texture* texture = texture_ref_->texture(); | 2121 Texture* texture = texture_ref_->texture(); |
| 2120 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); | 2122 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); |
| 2121 LevelInfo level0(GL_TEXTURE_EXTERNAL_OES, GL_RGBA, 1, 1, 1, 0, | 2123 LevelInfo level0(GL_TEXTURE_EXTERNAL_OES, GL_RGBA, 1, 1, 1, 0, |
| 2122 GL_UNSIGNED_BYTE, gfx::Rect()); | 2124 GL_UNSIGNED_BYTE, gfx::Rect()); |
| (...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2747 ExpectValid( | 2749 ExpectValid( |
| 2748 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); | 2750 true, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); |
| 2749 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, | 2751 ExpectValid(true, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, |
| 2750 GL_DEPTH32F_STENCIL8); | 2752 GL_DEPTH32F_STENCIL8); |
| 2751 | 2753 |
| 2752 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); | 2754 ExpectInvalid(true, GL_RGB_INTEGER, GL_INT, GL_RGBA8); |
| 2753 } | 2755 } |
| 2754 | 2756 |
| 2755 } // namespace gles2 | 2757 } // namespace gles2 |
| 2756 } // namespace gpu | 2758 } // namespace gpu |
| OLD | NEW |