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/service/feature_info.h" | 8 #include "gpu/command_buffer/service/feature_info.h" |
9 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" |
10 #include "gpu/command_buffer/service/memory_tracking.h" | 10 #include "gpu/command_buffer/service/memory_tracking.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 virtual void TearDown() { | 52 virtual void TearDown() { |
53 manager_->Destroy(false); | 53 manager_->Destroy(false); |
54 manager_.reset(); | 54 manager_.reset(); |
55 ::gfx::GLInterface::SetGLInterface(NULL); | 55 ::gfx::GLInterface::SetGLInterface(NULL); |
56 gl_.reset(); | 56 gl_.reset(); |
57 } | 57 } |
58 | 58 |
59 // Use StrictMock to make 100% sure we know how GL will be called. | 59 // Use StrictMock to make 100% sure we know how GL will be called. |
60 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; | 60 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; |
61 FeatureInfo::Ref feature_info_; | 61 scoped_refptr<FeatureInfo> feature_info_; |
62 scoped_ptr<TextureManager> manager_; | 62 scoped_ptr<TextureManager> manager_; |
63 }; | 63 }; |
64 | 64 |
65 // GCC requires these declarations, but MSVC requires they not be present | 65 // GCC requires these declarations, but MSVC requires they not be present |
66 #ifndef COMPILER_MSVC | 66 #ifndef COMPILER_MSVC |
67 const GLint TextureManagerTest::kMaxTextureSize; | 67 const GLint TextureManagerTest::kMaxTextureSize; |
68 const GLint TextureManagerTest::kMaxCubeMapTextureSize; | 68 const GLint TextureManagerTest::kMaxCubeMapTextureSize; |
69 const GLint TextureManagerTest::kMaxExternalTextureSize; | 69 const GLint TextureManagerTest::kMaxExternalTextureSize; |
70 const GLint TextureManagerTest::kMax2dLevels; | 70 const GLint TextureManagerTest::kMax2dLevels; |
71 const GLint TextureManagerTest::kMaxCubeMapLevels; | 71 const GLint TextureManagerTest::kMaxCubeMapLevels; |
72 const GLint TextureManagerTest::kMaxExternalLevels; | 72 const GLint TextureManagerTest::kMaxExternalLevels; |
73 #endif | 73 #endif |
74 | 74 |
75 TEST_F(TextureManagerTest, Basic) { | 75 TEST_F(TextureManagerTest, Basic) { |
76 const GLuint kClient1Id = 1; | 76 const GLuint kClient1Id = 1; |
77 const GLuint kService1Id = 11; | 77 const GLuint kService1Id = 11; |
78 const GLuint kClient2Id = 2; | 78 const GLuint kClient2Id = 2; |
79 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | 79 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
80 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 80 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
81 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 81 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
82 // Check we can create texture. | 82 // Check we can create texture. |
83 manager_->CreateTextureInfo(kClient1Id, kService1Id); | 83 manager_->CreateTexture(kClient1Id, kService1Id); |
84 // Check texture got created. | 84 // Check texture got created. |
85 TextureManager::TextureInfo* info1 = manager_->GetTextureInfo(kClient1Id); | 85 Texture* info1 = manager_->GetTexture(kClient1Id); |
86 ASSERT_TRUE(info1 != NULL); | 86 ASSERT_TRUE(info1 != NULL); |
87 EXPECT_EQ(kService1Id, info1->service_id()); | 87 EXPECT_EQ(kService1Id, info1->service_id()); |
88 GLuint client_id = 0; | 88 GLuint client_id = 0; |
89 EXPECT_TRUE(manager_->GetClientId(info1->service_id(), &client_id)); | 89 EXPECT_TRUE(manager_->GetClientId(info1->service_id(), &client_id)); |
90 EXPECT_EQ(kClient1Id, client_id); | 90 EXPECT_EQ(kClient1Id, client_id); |
91 // Check we get nothing for a non-existent texture. | 91 // Check we get nothing for a non-existent texture. |
92 EXPECT_TRUE(manager_->GetTextureInfo(kClient2Id) == NULL); | 92 EXPECT_TRUE(manager_->GetTexture(kClient2Id) == NULL); |
93 // Check trying to a remove non-existent textures does not crash. | 93 // Check trying to a remove non-existent textures does not crash. |
94 manager_->RemoveTextureInfo(kClient2Id); | 94 manager_->RemoveTexture(kClient2Id); |
95 // Check that it gets deleted when the last reference is released. | 95 // Check that it gets deleted when the last reference is released. |
96 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 96 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
97 .Times(1) | 97 .Times(1) |
98 .RetiresOnSaturation(); | 98 .RetiresOnSaturation(); |
99 // Check we can't get the texture after we remove it. | 99 // Check we can't get the texture after we remove it. |
100 manager_->RemoveTextureInfo(kClient1Id); | 100 manager_->RemoveTexture(kClient1Id); |
101 EXPECT_TRUE(manager_->GetTextureInfo(kClient1Id) == NULL); | 101 EXPECT_TRUE(manager_->GetTexture(kClient1Id) == NULL); |
102 } | 102 } |
103 | 103 |
104 TEST_F(TextureManagerTest, SetParameter) { | 104 TEST_F(TextureManagerTest, SetParameter) { |
105 const GLuint kClient1Id = 1; | 105 const GLuint kClient1Id = 1; |
106 const GLuint kService1Id = 11; | 106 const GLuint kService1Id = 11; |
107 // Check we can create texture. | 107 // Check we can create texture. |
108 manager_->CreateTextureInfo(kClient1Id, kService1Id); | 108 manager_->CreateTexture(kClient1Id, kService1Id); |
109 // Check texture got created. | 109 // Check texture got created. |
110 TextureManager::TextureInfo* info = manager_->GetTextureInfo(kClient1Id); | 110 Texture* info = manager_->GetTexture(kClient1Id); |
111 ASSERT_TRUE(info != NULL); | 111 ASSERT_TRUE(info != NULL); |
112 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager_->SetParameter( | 112 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager_->SetParameter( |
113 info, GL_TEXTURE_MIN_FILTER, GL_NEAREST)); | 113 info, GL_TEXTURE_MIN_FILTER, GL_NEAREST)); |
114 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), info->min_filter()); | 114 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), info->min_filter()); |
115 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager_->SetParameter( | 115 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager_->SetParameter( |
116 info, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); | 116 info, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); |
117 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), info->mag_filter()); | 117 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), info->mag_filter()); |
118 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager_->SetParameter( | 118 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager_->SetParameter( |
119 info, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); | 119 info, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); |
120 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_s()); | 120 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_s()); |
(...skipping 22 matching lines...) Expand all Loading... |
143 | 143 |
144 TEST_F(TextureManagerTest, TextureUsageExt) { | 144 TEST_F(TextureManagerTest, TextureUsageExt) { |
145 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), | 145 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), |
146 "GL_ANGLE_texture_usage"); | 146 "GL_ANGLE_texture_usage"); |
147 TextureManager manager( | 147 TextureManager manager( |
148 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 148 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
149 manager.Initialize(); | 149 manager.Initialize(); |
150 const GLuint kClient1Id = 1; | 150 const GLuint kClient1Id = 1; |
151 const GLuint kService1Id = 11; | 151 const GLuint kService1Id = 11; |
152 // Check we can create texture. | 152 // Check we can create texture. |
153 manager.CreateTextureInfo(kClient1Id, kService1Id); | 153 manager.CreateTexture(kClient1Id, kService1Id); |
154 // Check texture got created. | 154 // Check texture got created. |
155 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 155 Texture* info = manager.GetTexture(kClient1Id); |
156 ASSERT_TRUE(info != NULL); | 156 ASSERT_TRUE(info != NULL); |
157 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager.SetParameter( | 157 EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), manager.SetParameter( |
158 info, GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE)); | 158 info, GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE)); |
159 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), | 159 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), |
160 info->usage()); | 160 info->usage()); |
161 manager.Destroy(false); | 161 manager.Destroy(false); |
162 } | 162 } |
163 | 163 |
164 TEST_F(TextureManagerTest, Destroy) { | 164 TEST_F(TextureManagerTest, Destroy) { |
165 const GLuint kClient1Id = 1; | 165 const GLuint kClient1Id = 1; |
166 const GLuint kService1Id = 11; | 166 const GLuint kService1Id = 11; |
167 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); | 167 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); |
168 TextureManager manager( | 168 TextureManager manager( |
169 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 169 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
170 manager.Initialize(); | 170 manager.Initialize(); |
171 // Check we can create texture. | 171 // Check we can create texture. |
172 manager.CreateTextureInfo(kClient1Id, kService1Id); | 172 manager.CreateTexture(kClient1Id, kService1Id); |
173 // Check texture got created. | 173 // Check texture got created. |
174 TextureManager::TextureInfo* info1 = manager.GetTextureInfo(kClient1Id); | 174 Texture* info1 = manager.GetTexture(kClient1Id); |
175 ASSERT_TRUE(info1 != NULL); | 175 ASSERT_TRUE(info1 != NULL); |
176 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) | 176 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) |
177 .Times(1) | 177 .Times(1) |
178 .RetiresOnSaturation(); | 178 .RetiresOnSaturation(); |
179 TestHelper::SetupTextureManagerDestructionExpectations(gl_.get(), ""); | 179 TestHelper::SetupTextureManagerDestructionExpectations(gl_.get(), ""); |
180 manager.Destroy(true); | 180 manager.Destroy(true); |
181 // Check that resources got freed. | 181 // Check that resources got freed. |
182 info1 = manager.GetTextureInfo(kClient1Id); | 182 info1 = manager.GetTexture(kClient1Id); |
183 ASSERT_TRUE(info1 == NULL); | 183 ASSERT_TRUE(info1 == NULL); |
184 } | 184 } |
185 | 185 |
186 TEST_F(TextureManagerTest, DestroyUnowned) { | 186 TEST_F(TextureManagerTest, DestroyUnowned) { |
187 const GLuint kClient1Id = 1; | 187 const GLuint kClient1Id = 1; |
188 const GLuint kService1Id = 11; | 188 const GLuint kService1Id = 11; |
189 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); | 189 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); |
190 TextureManager manager( | 190 TextureManager manager( |
191 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 191 NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
192 manager.Initialize(); | 192 manager.Initialize(); |
193 // Check we can create texture. | 193 // Check we can create texture. |
194 TextureManager::TextureInfo* created_info = | 194 Texture* created_info = |
195 manager.CreateTextureInfo(kClient1Id, kService1Id); | 195 manager.CreateTexture(kClient1Id, kService1Id); |
196 created_info->SetNotOwned(); | 196 created_info->SetNotOwned(); |
197 | 197 |
198 // Check texture got created. | 198 // Check texture got created. |
199 TextureManager::TextureInfo* info1 = manager.GetTextureInfo(kClient1Id); | 199 Texture* info1 = manager.GetTexture(kClient1Id); |
200 ASSERT_TRUE(info1 != NULL); | 200 ASSERT_TRUE(info1 != NULL); |
201 | 201 |
202 // Check that it is not freed if it is not owned. | 202 // Check that it is not freed if it is not owned. |
203 TestHelper::SetupTextureManagerDestructionExpectations(gl_.get(), ""); | 203 TestHelper::SetupTextureManagerDestructionExpectations(gl_.get(), ""); |
204 manager.Destroy(true); | 204 manager.Destroy(true); |
205 info1 = manager.GetTextureInfo(kClient1Id); | 205 info1 = manager.GetTexture(kClient1Id); |
206 ASSERT_TRUE(info1 == NULL); | 206 ASSERT_TRUE(info1 == NULL); |
207 } | 207 } |
208 | 208 |
209 TEST_F(TextureManagerTest, MaxValues) { | 209 TEST_F(TextureManagerTest, MaxValues) { |
210 // Check we get the right values for the max sizes. | 210 // Check we get the right values for the max sizes. |
211 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); | 211 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); |
212 EXPECT_EQ(kMaxCubeMapLevels, | 212 EXPECT_EQ(kMaxCubeMapLevels, |
213 manager_->MaxLevelsForTarget(GL_TEXTURE_CUBE_MAP)); | 213 manager_->MaxLevelsForTarget(GL_TEXTURE_CUBE_MAP)); |
214 EXPECT_EQ(kMaxCubeMapLevels, | 214 EXPECT_EQ(kMaxCubeMapLevels, |
215 manager_->MaxLevelsForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_X)); | 215 manager_->MaxLevelsForTarget(GL_TEXTURE_CUBE_MAP_POSITIVE_X)); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 GL_TEXTURE_CUBE_MAP, level, | 311 GL_TEXTURE_CUBE_MAP, level, |
312 (kMaxCubeMapTextureSize >> level) * 2, | 312 (kMaxCubeMapTextureSize >> level) * 2, |
313 (kMaxCubeMapTextureSize >> level) * 2, | 313 (kMaxCubeMapTextureSize >> level) * 2, |
314 1)); | 314 1)); |
315 } | 315 } |
316 } | 316 } |
317 | 317 |
318 TEST_F(TextureManagerTest, ValidForTargetNPOT) { | 318 TEST_F(TextureManagerTest, ValidForTargetNPOT) { |
319 TestHelper::SetupFeatureInfoInitExpectations( | 319 TestHelper::SetupFeatureInfoInitExpectations( |
320 gl_.get(), "GL_OES_texture_npot"); | 320 gl_.get(), "GL_OES_texture_npot"); |
321 FeatureInfo::Ref feature_info(new FeatureInfo()); | 321 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
322 feature_info->Initialize(NULL); | 322 feature_info->Initialize(NULL); |
323 TextureManager manager( | 323 TextureManager manager( |
324 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 324 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
325 // Check NPOT width on level 0 | 325 // Check NPOT width on level 0 |
326 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); | 326 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 5, 2, 1)); |
327 // Check NPOT height on level 0 | 327 // Check NPOT height on level 0 |
328 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); | 328 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 0, 2, 5, 1)); |
329 // Check NPOT width on level 1 | 329 // Check NPOT width on level 1 |
330 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); | 330 EXPECT_TRUE(manager.ValidForTarget(GL_TEXTURE_2D, 1, 5, 2, 1)); |
331 // Check NPOT height on level 1 | 331 // Check NPOT height on level 1 |
(...skipping 17 matching lines...) Expand all Loading... |
349 info_ = NULL; | 349 info_ = NULL; |
350 } | 350 } |
351 | 351 |
352 protected: | 352 protected: |
353 void SetUpBase(MemoryTracker* memory_tracker) { | 353 void SetUpBase(MemoryTracker* memory_tracker) { |
354 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); | 354 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); |
355 ::gfx::GLInterface::SetGLInterface(gl_.get()); | 355 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
356 manager_.reset(new TextureManager( | 356 manager_.reset(new TextureManager( |
357 memory_tracker, feature_info_.get(), | 357 memory_tracker, feature_info_.get(), |
358 kMaxTextureSize, kMaxCubeMapTextureSize)); | 358 kMaxTextureSize, kMaxCubeMapTextureSize)); |
359 manager_->CreateTextureInfo(kClient1Id, kService1Id); | 359 manager_->CreateTexture(kClient1Id, kService1Id); |
360 info_ = manager_->GetTextureInfo(kClient1Id); | 360 info_ = manager_->GetTexture(kClient1Id); |
361 ASSERT_TRUE(info_.get() != NULL); | 361 ASSERT_TRUE(info_.get() != NULL); |
362 } | 362 } |
363 | 363 |
364 virtual void TearDown() { | 364 virtual void TearDown() { |
365 if (info_.get()) { | 365 if (info_.get()) { |
366 GLuint client_id = 0; | 366 GLuint client_id = 0; |
367 // If it's not in the manager then setting info_ to NULL will | 367 // If it's not in the manager then setting info_ to NULL will |
368 // delete the texture. | 368 // delete the texture. |
369 if (!manager_->GetClientId(info_->service_id(), &client_id)) { | 369 if (!manager_->GetClientId(info_->service_id(), &client_id)) { |
370 // Check that it gets deleted when the last reference is released. | 370 // Check that it gets deleted when the last reference is released. |
371 EXPECT_CALL(*gl_, | 371 EXPECT_CALL(*gl_, |
372 DeleteTextures(1, ::testing::Pointee(info_->service_id()))) | 372 DeleteTextures(1, ::testing::Pointee(info_->service_id()))) |
373 .Times(1) | 373 .Times(1) |
374 .RetiresOnSaturation(); | 374 .RetiresOnSaturation(); |
375 } | 375 } |
376 info_ = NULL; | 376 info_ = NULL; |
377 } | 377 } |
378 manager_->Destroy(false); | 378 manager_->Destroy(false); |
379 manager_.reset(); | 379 manager_.reset(); |
380 ::gfx::GLInterface::SetGLInterface(NULL); | 380 ::gfx::GLInterface::SetGLInterface(NULL); |
381 gl_.reset(); | 381 gl_.reset(); |
382 } | 382 } |
383 | 383 |
384 // Use StrictMock to make 100% sure we know how GL will be called. | 384 // Use StrictMock to make 100% sure we know how GL will be called. |
385 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; | 385 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; |
386 FeatureInfo::Ref feature_info_; | 386 scoped_refptr<FeatureInfo> feature_info_; |
387 scoped_ptr<TextureManager> manager_; | 387 scoped_ptr<TextureManager> manager_; |
388 TextureManager::TextureInfo::Ref info_; | 388 scoped_refptr<Texture> info_; |
389 }; | 389 }; |
390 | 390 |
391 class TextureInfoTest : public TextureInfoTestBase { | 391 class TextureInfoTest : public TextureInfoTestBase { |
392 protected: | 392 protected: |
393 virtual void SetUp() { | 393 virtual void SetUp() { |
394 SetUpBase(NULL); | 394 SetUpBase(NULL); |
395 } | 395 } |
396 }; | 396 }; |
397 | 397 |
398 class TextureInfoMemoryTrackerTest : public TextureInfoTestBase { | 398 class TextureInfoMemoryTrackerTest : public TextureInfoTestBase { |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); | 578 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
579 EXPECT_FALSE(info_->npot()); | 579 EXPECT_FALSE(info_->npot()); |
580 EXPECT_FALSE(info_->texture_complete()); | 580 EXPECT_FALSE(info_->texture_complete()); |
581 EXPECT_TRUE(manager_->CanGenerateMipmaps(info_)); | 581 EXPECT_TRUE(manager_->CanGenerateMipmaps(info_)); |
582 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | 582 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
583 } | 583 } |
584 | 584 |
585 TEST_F(TextureInfoTest, NPOT2DNPOTOK) { | 585 TEST_F(TextureInfoTest, NPOT2DNPOTOK) { |
586 TestHelper::SetupFeatureInfoInitExpectations( | 586 TestHelper::SetupFeatureInfoInitExpectations( |
587 gl_.get(), "GL_OES_texture_npot"); | 587 gl_.get(), "GL_OES_texture_npot"); |
588 FeatureInfo::Ref feature_info(new FeatureInfo()); | 588 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
589 feature_info->Initialize(NULL); | 589 feature_info->Initialize(NULL); |
590 TextureManager manager( | 590 TextureManager manager( |
591 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 591 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
592 manager.CreateTextureInfo(kClient1Id, kService1Id); | 592 manager.CreateTexture(kClient1Id, kService1Id); |
593 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 593 Texture* info = manager.GetTexture(kClient1Id); |
594 ASSERT_TRUE(info_ != NULL); | 594 ASSERT_TRUE(info_ != NULL); |
595 | 595 |
596 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 596 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
597 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 597 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
598 // Check Setting level 0 to NPOT | 598 // Check Setting level 0 to NPOT |
599 manager.SetLevelInfo(info, | 599 manager.SetLevelInfo(info, |
600 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); | 600 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
601 EXPECT_TRUE(info->npot()); | 601 EXPECT_TRUE(info->npot()); |
602 EXPECT_FALSE(info->texture_complete()); | 602 EXPECT_FALSE(info->texture_complete()); |
603 EXPECT_TRUE(manager.CanGenerateMipmaps(info)); | 603 EXPECT_TRUE(manager.CanGenerateMipmaps(info)); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 manager_->SetLevelInfo(info_, | 700 manager_->SetLevelInfo(info_, |
701 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); | 701 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
702 GLsizei width = -1; | 702 GLsizei width = -1; |
703 GLsizei height = -1; | 703 GLsizei height = -1; |
704 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height)); | 704 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height)); |
705 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height)); | 705 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height)); |
706 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); | 706 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); |
707 EXPECT_TRUE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); | 707 EXPECT_TRUE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); |
708 EXPECT_EQ(4, width); | 708 EXPECT_EQ(4, width); |
709 EXPECT_EQ(5, height); | 709 EXPECT_EQ(5, height); |
710 manager_->RemoveTextureInfo(kClient1Id); | 710 manager_->RemoveTexture(kClient1Id); |
711 EXPECT_TRUE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); | 711 EXPECT_TRUE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); |
712 EXPECT_EQ(4, width); | 712 EXPECT_EQ(4, width); |
713 EXPECT_EQ(5, height); | 713 EXPECT_EQ(5, height); |
714 } | 714 } |
715 | 715 |
716 TEST_F(TextureInfoTest, GetLevelType) { | 716 TEST_F(TextureInfoTest, GetLevelType) { |
717 manager_->SetInfoTarget(info_, GL_TEXTURE_2D); | 717 manager_->SetInfoTarget(info_, GL_TEXTURE_2D); |
718 manager_->SetLevelInfo(info_, | 718 manager_->SetLevelInfo(info_, |
719 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); | 719 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
720 GLenum type = -1; | 720 GLenum type = -1; |
721 GLenum format = -1; | 721 GLenum format = -1; |
722 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, -1, &type, &format)); | 722 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, -1, &type, &format)); |
723 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format)); | 723 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format)); |
724 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 0, &type, &format)); | 724 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 0, &type, &format)); |
725 EXPECT_TRUE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); | 725 EXPECT_TRUE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); |
726 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); | 726 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); |
727 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format); | 727 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format); |
728 manager_->RemoveTextureInfo(kClient1Id); | 728 manager_->RemoveTexture(kClient1Id); |
729 EXPECT_TRUE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); | 729 EXPECT_TRUE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); |
730 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); | 730 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); |
731 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format); | 731 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format); |
732 } | 732 } |
733 | 733 |
734 TEST_F(TextureInfoTest, ValidForTexture) { | 734 TEST_F(TextureInfoTest, ValidForTexture) { |
735 manager_->SetInfoTarget(info_, GL_TEXTURE_2D); | 735 manager_->SetInfoTarget(info_, GL_TEXTURE_2D); |
736 manager_->SetLevelInfo(info_, | 736 manager_->SetLevelInfo(info_, |
737 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); | 737 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
738 // Check bad face. | 738 // Check bad face. |
(...skipping 26 matching lines...) Expand all Loading... |
765 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGB, GL_UNSIGNED_BYTE)); | 765 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGB, GL_UNSIGNED_BYTE)); |
766 // Check bad type. | 766 // Check bad type. |
767 EXPECT_FALSE(info_->ValidForTexture( | 767 EXPECT_FALSE(info_->ValidForTexture( |
768 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4)); | 768 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4)); |
769 // Check valid full size | 769 // Check valid full size |
770 EXPECT_TRUE(info_->ValidForTexture( | 770 EXPECT_TRUE(info_->ValidForTexture( |
771 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); | 771 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); |
772 // Check valid particial size. | 772 // Check valid particial size. |
773 EXPECT_TRUE(info_->ValidForTexture( | 773 EXPECT_TRUE(info_->ValidForTexture( |
774 GL_TEXTURE_2D, 1, 1, 1, 2, 3, GL_RGBA, GL_UNSIGNED_BYTE)); | 774 GL_TEXTURE_2D, 1, 1, 1, 2, 3, GL_RGBA, GL_UNSIGNED_BYTE)); |
775 manager_->RemoveTextureInfo(kClient1Id); | 775 manager_->RemoveTexture(kClient1Id); |
776 EXPECT_TRUE(info_->ValidForTexture( | 776 EXPECT_TRUE(info_->ValidForTexture( |
777 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); | 777 GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); |
778 } | 778 } |
779 | 779 |
780 TEST_F(TextureInfoTest, FloatNotLinear) { | 780 TEST_F(TextureInfoTest, FloatNotLinear) { |
781 TestHelper::SetupFeatureInfoInitExpectations( | 781 TestHelper::SetupFeatureInfoInitExpectations( |
782 gl_.get(), "GL_OES_texture_float"); | 782 gl_.get(), "GL_OES_texture_float"); |
783 FeatureInfo::Ref feature_info(new FeatureInfo()); | 783 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
784 feature_info->Initialize(NULL); | 784 feature_info->Initialize(NULL); |
785 TextureManager manager( | 785 TextureManager manager( |
786 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 786 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
787 manager.CreateTextureInfo(kClient1Id, kService1Id); | 787 manager.CreateTexture(kClient1Id, kService1Id); |
788 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 788 Texture* info = manager.GetTexture(kClient1Id); |
789 ASSERT_TRUE(info != NULL); | 789 ASSERT_TRUE(info != NULL); |
790 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 790 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
791 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 791 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
792 manager.SetLevelInfo(info, | 792 manager.SetLevelInfo(info, |
793 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); | 793 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); |
794 EXPECT_FALSE(info->texture_complete()); | 794 EXPECT_FALSE(info->texture_complete()); |
795 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 795 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
796 EXPECT_FALSE(info->texture_complete()); | 796 EXPECT_FALSE(info->texture_complete()); |
797 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); | 797 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); |
798 EXPECT_TRUE(info->texture_complete()); | 798 EXPECT_TRUE(info->texture_complete()); |
799 manager.Destroy(false); | 799 manager.Destroy(false); |
800 } | 800 } |
801 | 801 |
802 TEST_F(TextureInfoTest, FloatLinear) { | 802 TEST_F(TextureInfoTest, FloatLinear) { |
803 TestHelper::SetupFeatureInfoInitExpectations( | 803 TestHelper::SetupFeatureInfoInitExpectations( |
804 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); | 804 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); |
805 FeatureInfo::Ref feature_info(new FeatureInfo()); | 805 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
806 feature_info->Initialize(NULL); | 806 feature_info->Initialize(NULL); |
807 TextureManager manager( | 807 TextureManager manager( |
808 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 808 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
809 manager.CreateTextureInfo(kClient1Id, kService1Id); | 809 manager.CreateTexture(kClient1Id, kService1Id); |
810 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 810 Texture* info = manager.GetTexture(kClient1Id); |
811 ASSERT_TRUE(info != NULL); | 811 ASSERT_TRUE(info != NULL); |
812 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 812 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
813 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 813 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
814 manager.SetLevelInfo(info, | 814 manager.SetLevelInfo(info, |
815 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); | 815 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true); |
816 EXPECT_TRUE(info->texture_complete()); | 816 EXPECT_TRUE(info->texture_complete()); |
817 manager.Destroy(false); | 817 manager.Destroy(false); |
818 } | 818 } |
819 | 819 |
820 TEST_F(TextureInfoTest, HalfFloatNotLinear) { | 820 TEST_F(TextureInfoTest, HalfFloatNotLinear) { |
821 TestHelper::SetupFeatureInfoInitExpectations( | 821 TestHelper::SetupFeatureInfoInitExpectations( |
822 gl_.get(), "GL_OES_texture_half_float"); | 822 gl_.get(), "GL_OES_texture_half_float"); |
823 FeatureInfo::Ref feature_info(new FeatureInfo()); | 823 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
824 feature_info->Initialize(NULL); | 824 feature_info->Initialize(NULL); |
825 TextureManager manager( | 825 TextureManager manager( |
826 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 826 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
827 manager.CreateTextureInfo(kClient1Id, kService1Id); | 827 manager.CreateTexture(kClient1Id, kService1Id); |
828 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 828 Texture* info = manager.GetTexture(kClient1Id); |
829 ASSERT_TRUE(info != NULL); | 829 ASSERT_TRUE(info != NULL); |
830 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 830 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
831 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 831 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
832 manager.SetLevelInfo(info, | 832 manager.SetLevelInfo(info, |
833 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); | 833 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); |
834 EXPECT_FALSE(info->texture_complete()); | 834 EXPECT_FALSE(info->texture_complete()); |
835 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 835 manager.SetParameter(info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
836 EXPECT_FALSE(info->texture_complete()); | 836 EXPECT_FALSE(info->texture_complete()); |
837 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); | 837 manager.SetParameter(info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); |
838 EXPECT_TRUE(info->texture_complete()); | 838 EXPECT_TRUE(info->texture_complete()); |
839 manager.Destroy(false); | 839 manager.Destroy(false); |
840 } | 840 } |
841 | 841 |
842 TEST_F(TextureInfoTest, HalfFloatLinear) { | 842 TEST_F(TextureInfoTest, HalfFloatLinear) { |
843 TestHelper::SetupFeatureInfoInitExpectations( | 843 TestHelper::SetupFeatureInfoInitExpectations( |
844 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); | 844 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); |
845 FeatureInfo::Ref feature_info(new FeatureInfo()); | 845 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
846 feature_info->Initialize(NULL); | 846 feature_info->Initialize(NULL); |
847 TextureManager manager( | 847 TextureManager manager( |
848 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 848 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
849 manager.CreateTextureInfo(kClient1Id, kService1Id); | 849 manager.CreateTexture(kClient1Id, kService1Id); |
850 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 850 Texture* info = manager.GetTexture(kClient1Id); |
851 ASSERT_TRUE(info != NULL); | 851 ASSERT_TRUE(info != NULL); |
852 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 852 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
853 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); | 853 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); |
854 manager.SetLevelInfo(info, | 854 manager.SetLevelInfo(info, |
855 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); | 855 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true); |
856 EXPECT_TRUE(info->texture_complete()); | 856 EXPECT_TRUE(info->texture_complete()); |
857 manager.Destroy(false); | 857 manager.Destroy(false); |
858 } | 858 } |
859 | 859 |
860 TEST_F(TextureInfoTest, EGLImageExternal) { | 860 TEST_F(TextureInfoTest, EGLImageExternal) { |
861 TestHelper::SetupFeatureInfoInitExpectations( | 861 TestHelper::SetupFeatureInfoInitExpectations( |
862 gl_.get(), "GL_OES_EGL_image_external"); | 862 gl_.get(), "GL_OES_EGL_image_external"); |
863 FeatureInfo::Ref feature_info(new FeatureInfo()); | 863 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
864 feature_info->Initialize(NULL); | 864 feature_info->Initialize(NULL); |
865 TextureManager manager( | 865 TextureManager manager( |
866 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 866 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
867 manager.CreateTextureInfo(kClient1Id, kService1Id); | 867 manager.CreateTexture(kClient1Id, kService1Id); |
868 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 868 Texture* info = manager.GetTexture(kClient1Id); |
869 ASSERT_TRUE(info != NULL); | 869 ASSERT_TRUE(info != NULL); |
870 manager.SetInfoTarget(info, GL_TEXTURE_EXTERNAL_OES); | 870 manager.SetInfoTarget(info, GL_TEXTURE_EXTERNAL_OES); |
871 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), info->target()); | 871 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), info->target()); |
872 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); | 872 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); |
873 manager.Destroy(false); | 873 manager.Destroy(false); |
874 } | 874 } |
875 | 875 |
876 TEST_F(TextureInfoTest, DepthTexture) { | 876 TEST_F(TextureInfoTest, DepthTexture) { |
877 TestHelper::SetupFeatureInfoInitExpectations( | 877 TestHelper::SetupFeatureInfoInitExpectations( |
878 gl_.get(), "GL_ANGLE_depth_texture"); | 878 gl_.get(), "GL_ANGLE_depth_texture"); |
879 FeatureInfo::Ref feature_info(new FeatureInfo()); | 879 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); |
880 feature_info->Initialize(NULL); | 880 feature_info->Initialize(NULL); |
881 TextureManager manager( | 881 TextureManager manager( |
882 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); | 882 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); |
883 manager.CreateTextureInfo(kClient1Id, kService1Id); | 883 manager.CreateTexture(kClient1Id, kService1Id); |
884 TextureManager::TextureInfo* info = manager.GetTextureInfo(kClient1Id); | 884 Texture* info = manager.GetTexture(kClient1Id); |
885 ASSERT_TRUE(info != NULL); | 885 ASSERT_TRUE(info != NULL); |
886 manager.SetInfoTarget(info, GL_TEXTURE_2D); | 886 manager.SetInfoTarget(info, GL_TEXTURE_2D); |
887 manager.SetLevelInfo( | 887 manager.SetLevelInfo( |
888 info, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0, | 888 info, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0, |
889 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false); | 889 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false); |
890 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); | 890 EXPECT_FALSE(manager.CanGenerateMipmaps(info)); |
891 manager.Destroy(false); | 891 manager.Destroy(false); |
892 } | 892 } |
893 | 893 |
894 TEST_F(TextureInfoTest, SafeUnsafe) { | 894 TEST_F(TextureInfoTest, SafeUnsafe) { |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
944 EXPECT_FALSE(info_->SafeToRenderFrom()); | 944 EXPECT_FALSE(info_->SafeToRenderFrom()); |
945 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 945 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
946 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 946 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
947 EXPECT_EQ(1, info_->num_uncleared_mips()); | 947 EXPECT_EQ(1, info_->num_uncleared_mips()); |
948 manager_->MarkMipmapsGenerated(info_); | 948 manager_->MarkMipmapsGenerated(info_); |
949 EXPECT_TRUE(info_->SafeToRenderFrom()); | 949 EXPECT_TRUE(info_->SafeToRenderFrom()); |
950 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 950 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
951 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 951 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
952 EXPECT_EQ(0, info_->num_uncleared_mips()); | 952 EXPECT_EQ(0, info_->num_uncleared_mips()); |
953 | 953 |
954 manager_->CreateTextureInfo(kClient2Id, kService2Id); | 954 manager_->CreateTexture(kClient2Id, kService2Id); |
955 TextureManager::TextureInfo::Ref info2 = manager_->GetTextureInfo(kClient2Id); | 955 scoped_refptr<Texture> info2( |
| 956 manager_->GetTexture(kClient2Id)); |
956 ASSERT_TRUE(info2.get() != NULL); | 957 ASSERT_TRUE(info2.get() != NULL); |
957 manager_->SetInfoTarget(info2, GL_TEXTURE_2D); | 958 manager_->SetInfoTarget(info2, GL_TEXTURE_2D); |
958 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 959 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
959 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 960 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
960 EXPECT_EQ(0, info2->num_uncleared_mips()); | 961 EXPECT_EQ(0, info2->num_uncleared_mips()); |
961 manager_->SetLevelInfo(info2, | 962 manager_->SetLevelInfo(info2, |
962 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); | 963 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
963 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 964 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
964 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 965 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
965 EXPECT_EQ(0, info2->num_uncleared_mips()); | 966 EXPECT_EQ(0, info2->num_uncleared_mips()); |
966 manager_->SetLevelInfo(info2, | 967 manager_->SetLevelInfo(info2, |
967 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); | 968 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
968 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 969 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
969 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 970 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
970 EXPECT_EQ(1, info2->num_uncleared_mips()); | 971 EXPECT_EQ(1, info2->num_uncleared_mips()); |
971 | 972 |
972 manager_->CreateTextureInfo(kClient3Id, kService3Id); | 973 manager_->CreateTexture(kClient3Id, kService3Id); |
973 TextureManager::TextureInfo::Ref info3 = manager_->GetTextureInfo(kClient3Id); | 974 scoped_refptr<Texture> info3( |
| 975 manager_->GetTexture(kClient3Id)); |
974 ASSERT_TRUE(info3.get() != NULL); | 976 ASSERT_TRUE(info3.get() != NULL); |
975 manager_->SetInfoTarget(info3, GL_TEXTURE_2D); | 977 manager_->SetInfoTarget(info3, GL_TEXTURE_2D); |
976 manager_->SetLevelInfo(info3, | 978 manager_->SetLevelInfo(info3, |
977 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); | 979 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
978 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 980 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
979 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 981 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
980 EXPECT_EQ(1, info3->num_uncleared_mips()); | 982 EXPECT_EQ(1, info3->num_uncleared_mips()); |
981 manager_->SetLevelCleared(info2, GL_TEXTURE_2D, 0, true); | 983 manager_->SetLevelCleared(info2, GL_TEXTURE_2D, 0, true); |
982 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 984 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
983 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 985 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
984 EXPECT_EQ(0, info2->num_uncleared_mips()); | 986 EXPECT_EQ(0, info2->num_uncleared_mips()); |
985 manager_->SetLevelCleared(info3, GL_TEXTURE_2D, 0, true); | 987 manager_->SetLevelCleared(info3, GL_TEXTURE_2D, 0, true); |
986 EXPECT_FALSE(manager_->HaveUnsafeTextures()); | 988 EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
987 EXPECT_FALSE(manager_->HaveUnclearedMips()); | 989 EXPECT_FALSE(manager_->HaveUnclearedMips()); |
988 EXPECT_EQ(0, info3->num_uncleared_mips()); | 990 EXPECT_EQ(0, info3->num_uncleared_mips()); |
989 | 991 |
990 manager_->SetLevelInfo(info2, | 992 manager_->SetLevelInfo(info2, |
991 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); | 993 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
992 manager_->SetLevelInfo(info3, | 994 manager_->SetLevelInfo(info3, |
993 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); | 995 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
994 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 996 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
995 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 997 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
996 EXPECT_EQ(1, info2->num_uncleared_mips()); | 998 EXPECT_EQ(1, info2->num_uncleared_mips()); |
997 EXPECT_EQ(1, info3->num_uncleared_mips()); | 999 EXPECT_EQ(1, info3->num_uncleared_mips()); |
998 manager_->RemoveTextureInfo(kClient3Id); | 1000 manager_->RemoveTexture(kClient3Id); |
999 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 1001 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
1000 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 1002 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
1001 manager_->RemoveTextureInfo(kClient2Id); | 1003 manager_->RemoveTexture(kClient2Id); |
1002 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 1004 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
1003 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 1005 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
1004 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) | 1006 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) |
1005 .Times(1) | 1007 .Times(1) |
1006 .RetiresOnSaturation(); | 1008 .RetiresOnSaturation(); |
1007 info2 = NULL; | 1009 info2 = NULL; |
1008 EXPECT_TRUE(manager_->HaveUnsafeTextures()); | 1010 EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
1009 EXPECT_TRUE(manager_->HaveUnclearedMips()); | 1011 EXPECT_TRUE(manager_->HaveUnclearedMips()); |
1010 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService3Id))) | 1012 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService3Id))) |
1011 .Times(1) | 1013 .Times(1) |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1055 | 1057 |
1056 TEST_F(TextureInfoTest, UseDeletedTexture) { | 1058 TEST_F(TextureInfoTest, UseDeletedTexture) { |
1057 static const GLuint kClient2Id = 2; | 1059 static const GLuint kClient2Id = 2; |
1058 static const GLuint kService2Id = 12; | 1060 static const GLuint kService2Id = 12; |
1059 // Make the default texture renderable | 1061 // Make the default texture renderable |
1060 manager_->SetInfoTarget(info_, GL_TEXTURE_2D); | 1062 manager_->SetInfoTarget(info_, GL_TEXTURE_2D); |
1061 manager_->SetLevelInfo(info_, | 1063 manager_->SetLevelInfo(info_, |
1062 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); | 1064 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
1063 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | 1065 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
1064 // Make a new texture | 1066 // Make a new texture |
1065 manager_->CreateTextureInfo(kClient2Id, kService2Id); | 1067 manager_->CreateTexture(kClient2Id, kService2Id); |
1066 TextureManager::TextureInfo::Ref info(manager_->GetTextureInfo(kClient2Id)); | 1068 scoped_refptr<Texture> info( |
| 1069 manager_->GetTexture(kClient2Id)); |
1067 manager_->SetInfoTarget(info, GL_TEXTURE_2D); | 1070 manager_->SetInfoTarget(info, GL_TEXTURE_2D); |
1068 EXPECT_FALSE(manager_->CanRender(info)); | 1071 EXPECT_FALSE(manager_->CanRender(info)); |
1069 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | 1072 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
1070 // Remove it. | 1073 // Remove it. |
1071 manager_->RemoveTextureInfo(kClient2Id); | 1074 manager_->RemoveTexture(kClient2Id); |
1072 EXPECT_FALSE(manager_->CanRender(info)); | 1075 EXPECT_FALSE(manager_->CanRender(info)); |
1073 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); | 1076 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
1074 // Check that we can still manipulate it and it effects the manager. | 1077 // Check that we can still manipulate it and it effects the manager. |
1075 manager_->SetLevelInfo(info, | 1078 manager_->SetLevelInfo(info, |
1076 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); | 1079 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
1077 EXPECT_TRUE(manager_->CanRender(info)); | 1080 EXPECT_TRUE(manager_->CanRender(info)); |
1078 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); | 1081 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
1079 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) | 1082 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) |
1080 .Times(1) | 1083 .Times(1) |
1081 .RetiresOnSaturation(); | 1084 .RetiresOnSaturation(); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1216 | 1219 |
1217 // Check the set was acutally getting different signatures. | 1220 // Check the set was acutally getting different signatures. |
1218 EXPECT_EQ(11u, string_set.size()); | 1221 EXPECT_EQ(11u, string_set.size()); |
1219 } | 1222 } |
1220 | 1223 |
1221 | 1224 |
1222 } // namespace gles2 | 1225 } // namespace gles2 |
1223 } // namespace gpu | 1226 } // namespace gpu |
1224 | 1227 |
1225 | 1228 |
OLD | NEW |