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 |