Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: gpu/command_buffer/service/texture_manager_unittest.cc

Issue 12326146: Refactor/Rename a bunch of GPU stuff (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | gpu/command_buffer/service/vertex_array_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698