| 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 "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "gpu/command_buffer/common/gl_mock.h" | 8 #include "gpu/command_buffer/common/gl_mock.h" |
| 9 #include "gpu/command_buffer/service/feature_info.h" | 9 #include "gpu/command_buffer/service/feature_info.h" |
| 10 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | 10 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 public: | 22 public: |
| 23 static const GLint kMaxTextureSize = 16; | 23 static const GLint kMaxTextureSize = 16; |
| 24 static const GLint kMaxCubeMapTextureSize = 8; | 24 static const GLint kMaxCubeMapTextureSize = 8; |
| 25 static const GLint kMaxExternalTextureSize = 16; | 25 static const GLint kMaxExternalTextureSize = 16; |
| 26 static const GLint kMax2dLevels = 5; | 26 static const GLint kMax2dLevels = 5; |
| 27 static const GLint kMaxCubeMapLevels = 4; | 27 static const GLint kMaxCubeMapLevels = 4; |
| 28 static const GLint kMaxExternalLevels = 1; | 28 static const GLint kMaxExternalLevels = 1; |
| 29 | 29 |
| 30 TextureManagerTest() | 30 TextureManagerTest() |
| 31 : feature_info_(new FeatureInfo()), | 31 : feature_info_(new FeatureInfo()), |
| 32 manager_(feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize) { | 32 manager_( |
| 33 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize) { |
| 33 } | 34 } |
| 34 | 35 |
| 35 ~TextureManagerTest() { | 36 ~TextureManagerTest() { |
| 36 manager_.Destroy(false); | 37 manager_.Destroy(false); |
| 37 } | 38 } |
| 38 | 39 |
| 39 protected: | 40 protected: |
| 40 virtual void SetUp() { | 41 virtual void SetUp() { |
| 41 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); | 42 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); |
| 42 ::gfx::GLInterface::SetGLInterface(gl_.get()); | 43 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 EXPECT_FALSE(manager_.SetParameter(info, GL_TEXTURE_WRAP_S, GL_NEAREST)); | 121 EXPECT_FALSE(manager_.SetParameter(info, GL_TEXTURE_WRAP_S, GL_NEAREST)); |
| 121 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_s()); | 122 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_s()); |
| 122 EXPECT_FALSE(manager_.SetParameter(info, GL_TEXTURE_WRAP_T, GL_NEAREST)); | 123 EXPECT_FALSE(manager_.SetParameter(info, GL_TEXTURE_WRAP_T, GL_NEAREST)); |
| 123 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_t()); | 124 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_t()); |
| 124 } | 125 } |
| 125 | 126 |
| 126 TEST_F(TextureManagerTest, TextureUsageExt) { | 127 TEST_F(TextureManagerTest, TextureUsageExt) { |
| 127 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 128 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
| 128 "GL_ANGLE_texture_usage"); | 129 "GL_ANGLE_texture_usage"); |
| 129 TextureManager manager( | 130 TextureManager manager( |
| 130 feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 131 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 131 manager.Initialize(); | 132 manager.Initialize(); |
| 132 const GLuint kClient1Id = 1; | 133 const GLuint kClient1Id = 1; |
| 133 const GLuint kService1Id = 11; | 134 const GLuint kService1Id = 11; |
| 134 // Check we can create texture. | 135 // Check we can create texture. |
| 135 manager.CreateTextureInfo(kClient1Id, kService1Id); | 136 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 136 // Check texture got created. | 137 // Check texture got created. |
| 137 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 138 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 138 ASSERT_TRUE(info != NULL); | 139 ASSERT_TRUE(info != NULL); |
| 139 EXPECT_TRUE(manager.SetParameter( | 140 EXPECT_TRUE(manager.SetParameter( |
| 140 info, GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE)); | 141 info, GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE)); |
| 141 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), | 142 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), |
| 142 info->usage()); | 143 info->usage()); |
| 143 manager.Destroy(false); | 144 manager.Destroy(false); |
| 144 } | 145 } |
| 145 | 146 |
| 146 TEST_F(TextureManagerTest, Destroy) { | 147 TEST_F(TextureManagerTest, Destroy) { |
| 147 const GLuint kClient1Id = 1; | 148 const GLuint kClient1Id = 1; |
| 148 const GLuint kService1Id = 11; | 149 const GLuint kService1Id = 11; |
| 149 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); | 150 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); |
| 150 TextureManager manager( | 151 TextureManager manager( |
| 151 feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 152 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 152 manager.Initialize(); | 153 manager.Initialize(); |
| 153 // Check we can create texture. | 154 // Check we can create texture. |
| 154 manager.CreateTextureInfo(kClient1Id, kService1Id); | 155 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 155 // Check texture got created. | 156 // Check texture got created. |
| 156 TextureManager::TextureInfo* info1 = manager.GetTextureInfo(kClient1Id); | 157 TextureManager::TextureInfo* info1 = manager.GetTextureInfo(kClient1Id); |
| 157 ASSERT_TRUE(info1 != NULL); | 158 ASSERT_TRUE(info1 != NULL); |
| 158 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 159 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
| 159 .Times(1) | 160 .Times(1) |
| 160 .RetiresOnSaturation(); | 161 .RetiresOnSaturation(); |
| 161 TestHelper::SetupTextureManagerDestructionExpectations(gl_.get(), ""); | 162 TestHelper::SetupTextureManagerDestructionExpectations(gl_.get(), ""); |
| 162 manager.Destroy(true); | 163 manager.Destroy(true); |
| 163 // Check that resources got freed. | 164 // Check that resources got freed. |
| 164 info1 = manager.GetTextureInfo(kClient1Id); | 165 info1 = manager.GetTextureInfo(kClient1Id); |
| 165 ASSERT_TRUE(info1 == NULL); | 166 ASSERT_TRUE(info1 == NULL); |
| 166 } | 167 } |
| 167 | 168 |
| 168 TEST_F(TextureManagerTest, DestroyUnowned) { | 169 TEST_F(TextureManagerTest, DestroyUnowned) { |
| 169 const GLuint kClient1Id = 1; | 170 const GLuint kClient1Id = 1; |
| 170 const GLuint kService1Id = 11; | 171 const GLuint kService1Id = 11; |
| 171 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); | 172 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); |
| 172 TextureManager manager( | 173 TextureManager manager( |
| 173 feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 174 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 174 manager.Initialize(); | 175 manager.Initialize(); |
| 175 // Check we can create texture. | 176 // Check we can create texture. |
| 176 TextureManager::TextureInfo* created_info = | 177 TextureManager::TextureInfo* created_info = |
| 177 manager.CreateTextureInfo(kClient1Id, kService1Id); | 178 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 178 created_info->SetNotOwned(); | 179 created_info->SetNotOwned(); |
| 179 | 180 |
| 180 // Check texture got created. | 181 // Check texture got created. |
| 181 TextureManager::TextureInfo* info1 = manager.GetTextureInfo(kClient1Id); | 182 TextureManager::TextureInfo* info1 = manager.GetTextureInfo(kClient1Id); |
| 182 ASSERT_TRUE(info1 != NULL); | 183 ASSERT_TRUE(info1 != NULL); |
| 183 | 184 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels, | 272 GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels, |
| 272 kMaxCubeMapTextureSize, 1, 2)); | 273 kMaxCubeMapTextureSize, 1, 2)); |
| 273 } | 274 } |
| 274 | 275 |
| 275 TEST_F(TextureManagerTest, ValidForTargetNPOT) { | 276 TEST_F(TextureManagerTest, ValidForTargetNPOT) { |
| 276 TestHelper::SetupFeatureInfoInitExpectations( | 277 TestHelper::SetupFeatureInfoInitExpectations( |
| 277 gl_.get(), "GL_OES_texture_npot"); | 278 gl_.get(), "GL_OES_texture_npot"); |
| 278 FeatureInfo::Ref feature_info(new FeatureInfo()); | 279 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 279 feature_info->Initialize(NULL); | 280 feature_info->Initialize(NULL); |
| 280 TextureManager manager( | 281 TextureManager manager( |
| 281 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 282 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 282 // Check NPOT width on level 0 | 283 // Check NPOT width on level 0 |
| 283 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); | 284 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); |
| 284 // Check NPOT height on level 0 | 285 // Check NPOT height on level 0 |
| 285 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); | 286 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); |
| 286 // Check NPOT width on level 1 | 287 // Check NPOT width on level 1 |
| 287 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); | 288 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); |
| 288 // Check NPOT height on level 1 | 289 // Check NPOT height on level 1 |
| 289 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); | 290 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 2, 5, 1)); |
| 290 manager.Destroy(false); | 291 manager.Destroy(false); |
| 291 } | 292 } |
| 292 | 293 |
| 293 class TextureInfoTest : public testing::Test { | 294 class TextureInfoTest : public testing::Test { |
| 294 public: | 295 public: |
| 295 static const GLint kMaxTextureSize = 16; | 296 static const GLint kMaxTextureSize = 16; |
| 296 static const GLint kMaxCubeMapTextureSize = 8; | 297 static const GLint kMaxCubeMapTextureSize = 8; |
| 297 static const GLint kMax2dLevels = 5; | 298 static const GLint kMax2dLevels = 5; |
| 298 static const GLint kMaxCubeMapLevels = 4; | 299 static const GLint kMaxCubeMapLevels = 4; |
| 299 static const GLuint kClient1Id = 1; | 300 static const GLuint kClient1Id = 1; |
| 300 static const GLuint kService1Id = 11; | 301 static const GLuint kService1Id = 11; |
| 301 | 302 |
| 302 TextureInfoTest() | 303 TextureInfoTest() |
| 303 : feature_info_(new FeatureInfo()), | 304 : feature_info_(new FeatureInfo()), |
| 304 manager_(feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize) { | 305 manager_( |
| 306 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize) { |
| 305 } | 307 } |
| 306 ~TextureInfoTest() { | 308 ~TextureInfoTest() { |
| 307 info_ = NULL; | 309 info_ = NULL; |
| 308 manager_.Destroy(false); | 310 manager_.Destroy(false); |
| 309 } | 311 } |
| 310 | 312 |
| 311 protected: | 313 protected: |
| 312 virtual void SetUp() { | 314 virtual void SetUp() { |
| 313 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); | 315 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); |
| 314 ::gfx::GLInterface::SetGLInterface(gl_.get()); | 316 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 EXPECT_TRUE(manager_.CanGenerateMipmaps(info_)); | 473 EXPECT_TRUE(manager_.CanGenerateMipmaps(info_)); |
| 472 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); | 474 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); |
| 473 } | 475 } |
| 474 | 476 |
| 475 TEST_F(TextureInfoTest, NPOT2DNPOTOK) { | 477 TEST_F(TextureInfoTest, NPOT2DNPOTOK) { |
| 476 TestHelper::SetupFeatureInfoInitExpectations( | 478 TestHelper::SetupFeatureInfoInitExpectations( |
| 477 gl_.get(), "GL_OES_texture_npot"); | 479 gl_.get(), "GL_OES_texture_npot"); |
| 478 FeatureInfo::Ref feature_info(new FeatureInfo()); | 480 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 479 feature_info->Initialize(NULL); | 481 feature_info->Initialize(NULL); |
| 480 TextureManager manager( | 482 TextureManager manager( |
| 481 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 483 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 482 manager.CreateTextureInfo(kClient1Id, kService1Id); | 484 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 483 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 485 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 484 ASSERT_TRUE(info_ != NULL); | 486 ASSERT_TRUE(info_ != NULL); |
| 485 | 487 |
| 486 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 488 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
| 487 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 489 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
| 488 // Check Setting level 0 to NPOT | 490 // Check Setting level 0 to NPOT |
| 489 manager.SetLevelInfo(info, | 491 manager.SetLevelInfo(info, |
| 490 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); | 492 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
| 491 EXPECT_TRUE(info->npot()); | 493 EXPECT_TRUE(info->npot()); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 666 EXPECT_TRUE(info_->ValidForTexture( | 668 EXPECT_TRUE(info_->ValidForTexture( |
| 667 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); | 669 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); |
| 668 } | 670 } |
| 669 | 671 |
| 670 TEST_F(TextureInfoTest, FloatNotLinear) { | 672 TEST_F(TextureInfoTest, FloatNotLinear) { |
| 671 TestHelper::SetupFeatureInfoInitExpectations( | 673 TestHelper::SetupFeatureInfoInitExpectations( |
| 672 gl_.get(), "GL_OES_texture_float"); | 674 gl_.get(), "GL_OES_texture_float"); |
| 673 FeatureInfo::Ref feature_info(new FeatureInfo()); | 675 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 674 feature_info->Initialize(NULL); | 676 feature_info->Initialize(NULL); |
| 675 TextureManager manager( | 677 TextureManager manager( |
| 676 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 678 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 677 manager.CreateTextureInfo(kClient1Id, kService1Id); | 679 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 678 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 680 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 679 ASSERT_TRUE(info != NULL); | 681 ASSERT_TRUE(info != NULL); |
| 680 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 682 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
| 681 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 683 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
| 682 manager.SetLevelInfo(info, | 684 manager.SetLevelInfo(info, |
| 683 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); | 685 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); |
| 684 EXPECT_FALSE(info->texture_complete()); | 686 EXPECT_FALSE(info->texture_complete()); |
| 685 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 687 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 686 EXPECT_FALSE(info->texture_complete()); | 688 EXPECT_FALSE(info->texture_complete()); |
| 687 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); | 689 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); |
| 688 EXPECT_TRUE(info->texture_complete()); | 690 EXPECT_TRUE(info->texture_complete()); |
| 689 manager.Destroy(false); | 691 manager.Destroy(false); |
| 690 } | 692 } |
| 691 | 693 |
| 692 TEST_F(TextureInfoTest, FloatLinear) { | 694 TEST_F(TextureInfoTest, FloatLinear) { |
| 693 TestHelper::SetupFeatureInfoInitExpectations( | 695 TestHelper::SetupFeatureInfoInitExpectations( |
| 694 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); | 696 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); |
| 695 FeatureInfo::Ref feature_info(new FeatureInfo()); | 697 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 696 feature_info->Initialize(NULL); | 698 feature_info->Initialize(NULL); |
| 697 TextureManager manager( | 699 TextureManager manager( |
| 698 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 700 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 699 manager.CreateTextureInfo(kClient1Id, kService1Id); | 701 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 700 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 702 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 701 ASSERT_TRUE(info != NULL); | 703 ASSERT_TRUE(info != NULL); |
| 702 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 704 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
| 703 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 705 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
| 704 manager.SetLevelInfo(info, | 706 manager.SetLevelInfo(info, |
| 705 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); | 707 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); |
| 706 EXPECT_TRUE(info->texture_complete()); | 708 EXPECT_TRUE(info->texture_complete()); |
| 707 manager.Destroy(false); | 709 manager.Destroy(false); |
| 708 } | 710 } |
| 709 | 711 |
| 710 TEST_F(TextureInfoTest, HalfFloatNotLinear) { | 712 TEST_F(TextureInfoTest, HalfFloatNotLinear) { |
| 711 TestHelper::SetupFeatureInfoInitExpectations( | 713 TestHelper::SetupFeatureInfoInitExpectations( |
| 712 gl_.get(), "GL_OES_texture_half_float"); | 714 gl_.get(), "GL_OES_texture_half_float"); |
| 713 FeatureInfo::Ref feature_info(new FeatureInfo()); | 715 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 714 feature_info->Initialize(NULL); | 716 feature_info->Initialize(NULL); |
| 715 TextureManager manager( | 717 TextureManager manager( |
| 716 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 718 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 717 manager.CreateTextureInfo(kClient1Id, kService1Id); | 719 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 718 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 720 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 719 ASSERT_TRUE(info != NULL); | 721 ASSERT_TRUE(info != NULL); |
| 720 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 722 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
| 721 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 723 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
| 722 manager.SetLevelInfo(info, | 724 manager.SetLevelInfo(info, |
| 723 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); | 725 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); |
| 724 EXPECT_FALSE(info->texture_complete()); | 726 EXPECT_FALSE(info->texture_complete()); |
| 725 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 727 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 726 EXPECT_FALSE(info->texture_complete()); | 728 EXPECT_FALSE(info->texture_complete()); |
| 727 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); | 729 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); |
| 728 EXPECT_TRUE(info->texture_complete()); | 730 EXPECT_TRUE(info->texture_complete()); |
| 729 manager.Destroy(false); | 731 manager.Destroy(false); |
| 730 } | 732 } |
| 731 | 733 |
| 732 TEST_F(TextureInfoTest, HalfFloatLinear) { | 734 TEST_F(TextureInfoTest, HalfFloatLinear) { |
| 733 TestHelper::SetupFeatureInfoInitExpectations( | 735 TestHelper::SetupFeatureInfoInitExpectations( |
| 734 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); | 736 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); |
| 735 FeatureInfo::Ref feature_info(new FeatureInfo()); | 737 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 736 feature_info->Initialize(NULL); | 738 feature_info->Initialize(NULL); |
| 737 TextureManager manager( | 739 TextureManager manager( |
| 738 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 740 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 739 manager.CreateTextureInfo(kClient1Id, kService1Id); | 741 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 740 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 742 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 741 ASSERT_TRUE(info != NULL); | 743 ASSERT_TRUE(info != NULL); |
| 742 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 744 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
| 743 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 745 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
| 744 manager.SetLevelInfo(info, | 746 manager.SetLevelInfo(info, |
| 745 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); | 747 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); |
| 746 EXPECT_TRUE(info->texture_complete()); | 748 EXPECT_TRUE(info->texture_complete()); |
| 747 manager.Destroy(false); | 749 manager.Destroy(false); |
| 748 } | 750 } |
| 749 | 751 |
| 750 TEST_F(TextureInfoTest, EGLImageExternal) { | 752 TEST_F(TextureInfoTest, EGLImageExternal) { |
| 751 TestHelper::SetupFeatureInfoInitExpectations( | 753 TestHelper::SetupFeatureInfoInitExpectations( |
| 752 gl_.get(), "GL_OES_EGL_image_external"); | 754 gl_.get(), "GL_OES_EGL_image_external"); |
| 753 FeatureInfo::Ref feature_info(new FeatureInfo()); | 755 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 754 feature_info->Initialize(NULL); | 756 feature_info->Initialize(NULL); |
| 755 TextureManager manager( | 757 TextureManager manager( |
| 756 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 758 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 757 manager.CreateTextureInfo(kClient1Id, kService1Id); | 759 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 758 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 760 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 759 ASSERT_TRUE(info != NULL); | 761 ASSERT_TRUE(info != NULL); |
| 760 manager.SetInfoTarget(info, GL_TEXTURE_EXTERNAL_OES); | 762 manager.SetInfoTarget(info, GL_TEXTURE_EXTERNAL_OES); |
| 761 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), info->target()); | 763 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), info->target()); |
| 762 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); | 764 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); |
| 763 manager.Destroy(false); | 765 manager.Destroy(false); |
| 764 } | 766 } |
| 765 | 767 |
| 766 TEST_F(TextureInfoTest, DepthTexture) { | 768 TEST_F(TextureInfoTest, DepthTexture) { |
| 767 TestHelper::SetupFeatureInfoInitExpectations( | 769 TestHelper::SetupFeatureInfoInitExpectations( |
| 768 gl_.get(), "GL_ANGLE_depth_texture"); | 770 gl_.get(), "GL_ANGLE_depth_texture"); |
| 769 FeatureInfo::Ref feature_info(new FeatureInfo()); | 771 FeatureInfo::Ref feature_info(new FeatureInfo()); |
| 770 feature_info->Initialize(NULL); | 772 feature_info->Initialize(NULL); |
| 771 TextureManager manager( | 773 TextureManager manager( |
| 772 feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 774 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
| 773 manager.CreateTextureInfo(kClient1Id, kService1Id); | 775 manager.CreateTextureInfo(kClient1Id, kService1Id); |
| 774 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 776 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); |
| 775 ASSERT_TRUE(info != NULL); | 777 ASSERT_TRUE(info != NULL); |
| 776 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 778 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
| 777 manager.SetLevelInfo( | 779 manager.SetLevelInfo( |
| 778 info, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0, | 780 info, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0, |
| 779 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false); | 781 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false); |
| 780 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); | 782 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); |
| 781 manager.Destroy(false); | 783 manager.Destroy(false); |
| 782 } | 784 } |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 969 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) | 971 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) |
| 970 .Times(1) | 972 .Times(1) |
| 971 .RetiresOnSaturation(); | 973 .RetiresOnSaturation(); |
| 972 info = NULL; | 974 info = NULL; |
| 973 } | 975 } |
| 974 | 976 |
| 975 } // namespace gles2 | 977 } // namespace gles2 |
| 976 } // namespace gpu | 978 } // namespace gpu |
| 977 | 979 |
| 978 | 980 |
| OLD | NEW |