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

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

Issue 8341128: Defer clearing textures and renderbuffers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix one more unit test Created 9 years, 1 month 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
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/texture_manager.h" 5 #include "gpu/command_buffer/service/texture_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "gpu/command_buffer/common/gl_mock.h" 8 #include "gpu/command_buffer/common/gl_mock.h"
9 #include "gpu/command_buffer/service/feature_info.h" 9 #include "gpu/command_buffer/service/feature_info.h"
10 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
10 #include "gpu/command_buffer/service/test_helper.h" 11 #include "gpu/command_buffer/service/test_helper.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 using ::testing::Pointee; 14 using ::testing::Pointee;
15 using ::testing::Return;
14 using ::testing::_; 16 using ::testing::_;
15 17
16 namespace gpu { 18 namespace gpu {
17 namespace gles2 { 19 namespace gles2 {
18 20
19 class TextureManagerTest : public testing::Test { 21 class TextureManagerTest : public testing::Test {
20 public: 22 public:
21 static const GLint kMaxTextureSize = 16; 23 static const GLint kMaxTextureSize = 16;
22 static const GLint kMaxCubeMapTextureSize = 8; 24 static const GLint kMaxCubeMapTextureSize = 8;
23 static const GLint kMaxExternalTextureSize = 16; 25 static const GLint kMaxExternalTextureSize = 16;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 const GLuint TextureManagerTest::kServiceBlackTextureCubemapId; 73 const GLuint TextureManagerTest::kServiceBlackTextureCubemapId;
72 const GLuint TextureManagerTest::kServiceDefaultTexture2dId; 74 const GLuint TextureManagerTest::kServiceDefaultTexture2dId;
73 const GLuint TextureManagerTest::kServiceDefaultTextureCubemapId; 75 const GLuint TextureManagerTest::kServiceDefaultTextureCubemapId;
74 #endif 76 #endif
75 77
76 TEST_F(TextureManagerTest, Basic) { 78 TEST_F(TextureManagerTest, Basic) {
77 const GLuint kClient1Id = 1; 79 const GLuint kClient1Id = 1;
78 const GLuint kService1Id = 11; 80 const GLuint kService1Id = 11;
79 const GLuint kClient2Id = 2; 81 const GLuint kClient2Id = 2;
80 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 82 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
83 EXPECT_FALSE(manager_.HaveUnsafeTextures());
84 EXPECT_FALSE(manager_.HaveUnclearedMips());
81 // Check we can create texture. 85 // Check we can create texture.
82 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id); 86 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id);
83 // Check texture got created. 87 // Check texture got created.
84 TextureManager::TextureInfo* info1 = manager_.GetTextureInfo(kClient1Id); 88 TextureManager::TextureInfo* info1 = manager_.GetTextureInfo(kClient1Id);
85 ASSERT_TRUE(info1 != NULL); 89 ASSERT_TRUE(info1 != NULL);
86 EXPECT_EQ(kService1Id, info1->service_id()); 90 EXPECT_EQ(kService1Id, info1->service_id());
87 GLuint client_id = 0; 91 GLuint client_id = 0;
88 EXPECT_TRUE(manager_.GetClientId(info1->service_id(), &client_id)); 92 EXPECT_TRUE(manager_.GetClientId(info1->service_id(), &client_id));
89 EXPECT_EQ(kClient1Id, client_id); 93 EXPECT_EQ(kClient1Id, client_id);
90 // Check we get nothing for a non-existent texture. 94 // Check we get nothing for a non-existent texture.
91 EXPECT_TRUE(manager_.GetTextureInfo(kClient2Id) == NULL); 95 EXPECT_TRUE(manager_.GetTextureInfo(kClient2Id) == NULL);
92 // Check trying to a remove non-existent textures does not crash. 96 // Check trying to a remove non-existent textures does not crash.
93 manager_.RemoveTextureInfo(&feature_info_, kClient2Id); 97 manager_.RemoveTextureInfo(&feature_info_, kClient2Id);
94 // Check we can't get the texture after we remove it. 98 // Check we can't get the texture after we remove it.
95 manager_.RemoveTextureInfo(&feature_info_, kClient1Id); 99 manager_.RemoveTextureInfo(&feature_info_, kClient1Id);
96 EXPECT_TRUE(manager_.GetTextureInfo(kClient1Id) == NULL); 100 EXPECT_TRUE(manager_.GetTextureInfo(kClient1Id) == NULL);
97 } 101 }
98 102
99 TEST_F(TextureManagerTest, SetParameter) { 103 TEST_F(TextureManagerTest, SetParameter) {
100 const GLuint kClient1Id = 1; 104 const GLuint kClient1Id = 1;
101 const GLuint kService1Id = 11; 105 const GLuint kService1Id = 11;
102 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
103 // Check we can create texture. 106 // Check we can create texture.
104 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id); 107 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id);
105 // Check texture got created. 108 // Check texture got created.
106 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id); 109 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id);
107 ASSERT_TRUE(info != NULL); 110 ASSERT_TRUE(info != NULL);
108 EXPECT_TRUE(manager_.SetParameter( 111 EXPECT_TRUE(manager_.SetParameter(
109 &feature_info_, info, GL_TEXTURE_MIN_FILTER, GL_NEAREST)); 112 &feature_info_, info, GL_TEXTURE_MIN_FILTER, GL_NEAREST));
110 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), info->min_filter()); 113 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), info->min_filter());
111 EXPECT_TRUE(manager_.SetParameter( 114 EXPECT_TRUE(manager_.SetParameter(
112 &feature_info_, info, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); 115 &feature_info_, info, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
(...skipping 14 matching lines...) Expand all
127 &feature_info_, info, GL_TEXTURE_WRAP_S, GL_NEAREST)); 130 &feature_info_, info, GL_TEXTURE_WRAP_S, GL_NEAREST));
128 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_s()); 131 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_s());
129 EXPECT_FALSE(manager_.SetParameter( 132 EXPECT_FALSE(manager_.SetParameter(
130 &feature_info_, info, GL_TEXTURE_WRAP_T, GL_NEAREST)); 133 &feature_info_, info, GL_TEXTURE_WRAP_T, GL_NEAREST));
131 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_t()); 134 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), info->wrap_t());
132 } 135 }
133 136
134 TEST_F(TextureManagerTest, Destroy) { 137 TEST_F(TextureManagerTest, Destroy) {
135 const GLuint kClient1Id = 1; 138 const GLuint kClient1Id = 1;
136 const GLuint kService1Id = 11; 139 const GLuint kService1Id = 11;
137 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
138 // Check we can create texture. 140 // Check we can create texture.
139 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id); 141 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id);
140 // Check texture got created. 142 // Check texture got created.
141 TextureManager::TextureInfo* info1 = manager_.GetTextureInfo(kClient1Id); 143 TextureManager::TextureInfo* info1 = manager_.GetTextureInfo(kClient1Id);
142 ASSERT_TRUE(info1 != NULL); 144 ASSERT_TRUE(info1 != NULL);
143 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 145 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
144 .Times(1) 146 .Times(1)
145 .RetiresOnSaturation(); 147 .RetiresOnSaturation();
146 EXPECT_CALL(*gl_, DeleteTextures(4, _)) 148 EXPECT_CALL(*gl_, DeleteTextures(4, _))
147 .Times(1) 149 .Times(1)
148 .RetiresOnSaturation(); 150 .RetiresOnSaturation();
149 manager_.Destroy(true); 151 manager_.Destroy(true);
150 // Check that resources got freed. 152 // Check that resources got freed.
151 info1 = manager_.GetTextureInfo(kClient1Id); 153 info1 = manager_.GetTextureInfo(kClient1Id);
152 ASSERT_TRUE(info1 == NULL); 154 ASSERT_TRUE(info1 == NULL);
153 } 155 }
154 156
155 TEST_F(TextureManagerTest, DestroyUnowned) { 157 TEST_F(TextureManagerTest, DestroyUnowned) {
156 const GLuint kClient1Id = 1; 158 const GLuint kClient1Id = 1;
157 const GLuint kService1Id = 11; 159 const GLuint kService1Id = 11;
158 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
159 // Check we can create texture. 160 // Check we can create texture.
160 TextureManager::TextureInfo* created_info = 161 TextureManager::TextureInfo* created_info =
161 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id); 162 manager_.CreateTextureInfo(&feature_info_, kClient1Id, kService1Id);
162 created_info->SetNotOwned(); 163 created_info->SetNotOwned();
163 164
164 // Check texture got created. 165 // Check texture got created.
165 TextureManager::TextureInfo* info1 = manager_.GetTextureInfo(kClient1Id); 166 TextureManager::TextureInfo* info1 = manager_.GetTextureInfo(kClient1Id);
166 ASSERT_TRUE(info1 != NULL); 167 ASSERT_TRUE(info1 != NULL);
167 EXPECT_CALL(*gl_, DeleteTextures(4, _)) 168 EXPECT_CALL(*gl_, DeleteTextures(4, _))
168 .Times(1) 169 .Times(1)
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 TextureManager::TextureInfo::Ref info_; 323 TextureManager::TextureInfo::Ref info_;
323 FeatureInfo feature_info_; 324 FeatureInfo feature_info_;
324 }; 325 };
325 326
326 TEST_F(TextureInfoTest, Basic) { 327 TEST_F(TextureInfoTest, Basic) {
327 EXPECT_EQ(0u, info_->target()); 328 EXPECT_EQ(0u, info_->target());
328 EXPECT_FALSE(info_->texture_complete()); 329 EXPECT_FALSE(info_->texture_complete());
329 EXPECT_FALSE(info_->cube_complete()); 330 EXPECT_FALSE(info_->cube_complete());
330 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_)); 331 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_));
331 EXPECT_FALSE(info_->npot()); 332 EXPECT_FALSE(info_->npot());
333 EXPECT_EQ(0, info_->num_uncleared_mips());
332 EXPECT_FALSE(info_->CanRender(&feature_info_)); 334 EXPECT_FALSE(info_->CanRender(&feature_info_));
335 EXPECT_TRUE(info_->SafeToRenderFrom());
333 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR), info_->min_filter()); 336 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR), info_->min_filter());
334 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), info_->mag_filter()); 337 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), info_->mag_filter());
335 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), info_->wrap_s()); 338 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), info_->wrap_s());
336 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), info_->wrap_t()); 339 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), info_->wrap_t());
337 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 340 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
341 EXPECT_FALSE(manager_.HaveUnsafeTextures());
338 } 342 }
339 343
340 TEST_F(TextureInfoTest, POT2D) { 344 TEST_F(TextureInfoTest, POT2D) {
341 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D); 345 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
342 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info_->target()); 346 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info_->target());
343 // Check Setting level 0 to POT 347 // Check Setting level 0 to POT
344 manager_.SetLevelInfo(&feature_info_, info_, 348 manager_.SetLevelInfo(&feature_info_, info_,
345 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 349 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
346 EXPECT_FALSE(info_->npot()); 350 EXPECT_FALSE(info_->npot());
347 EXPECT_FALSE(info_->texture_complete()); 351 EXPECT_FALSE(info_->texture_complete());
348 EXPECT_FALSE(info_->CanRender(&feature_info_)); 352 EXPECT_FALSE(info_->CanRender(&feature_info_));
353 EXPECT_EQ(0, info_->num_uncleared_mips());
349 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 354 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
350 // Set filters to something that will work with a single mip. 355 // Set filters to something that will work with a single mip.
351 manager_.SetParameter( 356 manager_.SetParameter(
352 &feature_info_, info_, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 357 &feature_info_, info_, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
353 EXPECT_TRUE(info_->CanRender(&feature_info_)); 358 EXPECT_TRUE(info_->CanRender(&feature_info_));
354 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 359 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
355 // Set them back. 360 // Set them back.
356 manager_.SetParameter( 361 manager_.SetParameter(
357 &feature_info_, info_, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 362 &feature_info_, info_, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
358 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 363 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
359 364
360 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_)); 365 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_));
361 // Make mips. 366 // Make mips.
362 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_)); 367 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_));
363 EXPECT_TRUE(info_->texture_complete()); 368 EXPECT_TRUE(info_->texture_complete());
364 EXPECT_TRUE(info_->CanRender(&feature_info_)); 369 EXPECT_TRUE(info_->CanRender(&feature_info_));
365 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 370 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
366 // Change a mip. 371 // Change a mip.
367 manager_.SetLevelInfo(&feature_info_, info_, 372 manager_.SetLevelInfo(&feature_info_, info_,
368 GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 373 GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
369 EXPECT_FALSE(info_->npot()); 374 EXPECT_FALSE(info_->npot());
370 EXPECT_FALSE(info_->texture_complete()); 375 EXPECT_FALSE(info_->texture_complete());
371 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_)); 376 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_));
372 EXPECT_FALSE(info_->CanRender(&feature_info_)); 377 EXPECT_FALSE(info_->CanRender(&feature_info_));
373 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 378 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
374 // Set a level past the number of mips that would get generated. 379 // Set a level past the number of mips that would get generated.
375 manager_.SetLevelInfo(&feature_info_, info_, 380 manager_.SetLevelInfo(&feature_info_, info_,
376 GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 381 GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
377 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_)); 382 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_));
378 // Make mips. 383 // Make mips.
379 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_)); 384 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_));
380 EXPECT_TRUE(info_->CanRender(&feature_info_)); 385 EXPECT_TRUE(info_->CanRender(&feature_info_));
381 EXPECT_TRUE(info_->texture_complete()); 386 EXPECT_TRUE(info_->texture_complete());
382 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 387 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
383 } 388 }
384 389
385 TEST_F(TextureInfoTest, UnusedMips) { 390 TEST_F(TextureInfoTest, UnusedMips) {
386 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D); 391 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
387 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info_->target()); 392 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info_->target());
388 // Set level zero to large size. 393 // Set level zero to large size.
389 manager_.SetLevelInfo(&feature_info_, info_, 394 manager_.SetLevelInfo(&feature_info_, info_,
390 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 395 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
391 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_)); 396 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_));
392 EXPECT_FALSE(info_->npot()); 397 EXPECT_FALSE(info_->npot());
393 EXPECT_TRUE(info_->texture_complete()); 398 EXPECT_TRUE(info_->texture_complete());
394 EXPECT_TRUE(info_->CanRender(&feature_info_)); 399 EXPECT_TRUE(info_->CanRender(&feature_info_));
395 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 400 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
396 // Set level zero to large smaller (levels unused mips) 401 // Set level zero to large smaller (levels unused mips)
397 manager_.SetLevelInfo(&feature_info_, info_, 402 manager_.SetLevelInfo(&feature_info_, info_,
398 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 403 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
399 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_)); 404 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_));
400 EXPECT_FALSE(info_->npot()); 405 EXPECT_FALSE(info_->npot());
401 EXPECT_TRUE(info_->texture_complete()); 406 EXPECT_TRUE(info_->texture_complete());
402 EXPECT_TRUE(info_->CanRender(&feature_info_)); 407 EXPECT_TRUE(info_->CanRender(&feature_info_));
403 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 408 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
404 // Set an unused level to some size 409 // Set an unused level to some size
405 manager_.SetLevelInfo(&feature_info_, info_, 410 manager_.SetLevelInfo(&feature_info_, info_,
406 GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 411 GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
407 EXPECT_FALSE(info_->npot()); 412 EXPECT_FALSE(info_->npot());
408 EXPECT_TRUE(info_->texture_complete()); 413 EXPECT_TRUE(info_->texture_complete());
409 EXPECT_TRUE(info_->CanRender(&feature_info_)); 414 EXPECT_TRUE(info_->CanRender(&feature_info_));
410 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 415 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
411 } 416 }
412 417
413 TEST_F(TextureInfoTest, NPOT2D) { 418 TEST_F(TextureInfoTest, NPOT2D) {
414 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D); 419 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
415 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info_->target()); 420 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info_->target());
416 // Check Setting level 0 to NPOT 421 // Check Setting level 0 to NPOT
417 manager_.SetLevelInfo(&feature_info_, info_, 422 manager_.SetLevelInfo(&feature_info_, info_,
418 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 423 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
419 EXPECT_TRUE(info_->npot()); 424 EXPECT_TRUE(info_->npot());
420 EXPECT_FALSE(info_->texture_complete()); 425 EXPECT_FALSE(info_->texture_complete());
421 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_)); 426 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_));
422 EXPECT_FALSE(info_->CanRender(&feature_info_)); 427 EXPECT_FALSE(info_->CanRender(&feature_info_));
423 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 428 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
424 manager_.SetParameter( 429 manager_.SetParameter(
425 &feature_info_, info_, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 430 &feature_info_, info_, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
426 EXPECT_FALSE(info_->CanRender(&feature_info_)); 431 EXPECT_FALSE(info_->CanRender(&feature_info_));
427 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 432 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
428 manager_.SetParameter( 433 manager_.SetParameter(
429 &feature_info_, info_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 434 &feature_info_, info_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
430 EXPECT_FALSE(info_->CanRender(&feature_info_)); 435 EXPECT_FALSE(info_->CanRender(&feature_info_));
431 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 436 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
432 manager_.SetParameter( 437 manager_.SetParameter(
433 &feature_info_, info_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 438 &feature_info_, info_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
434 EXPECT_TRUE(info_->CanRender(&feature_info_)); 439 EXPECT_TRUE(info_->CanRender(&feature_info_));
435 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 440 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
436 // Change it to POT. 441 // Change it to POT.
437 manager_.SetLevelInfo(&feature_info_, info_, 442 manager_.SetLevelInfo(&feature_info_, info_,
438 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 443 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
439 EXPECT_FALSE(info_->npot()); 444 EXPECT_FALSE(info_->npot());
440 EXPECT_FALSE(info_->texture_complete()); 445 EXPECT_FALSE(info_->texture_complete());
441 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_)); 446 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_));
442 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 447 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
443 } 448 }
444 449
445 TEST_F(TextureInfoTest, NPOT2DNPOTOK) { 450 TEST_F(TextureInfoTest, NPOT2DNPOTOK) {
446 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize); 451 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize);
447 TestHelper::SetupFeatureInfoInitExpectations( 452 TestHelper::SetupFeatureInfoInitExpectations(
448 gl_.get(), "GL_OES_texture_npot"); 453 gl_.get(), "GL_OES_texture_npot");
449 FeatureInfo feature_info; 454 FeatureInfo feature_info;
450 feature_info.Initialize(NULL); 455 feature_info.Initialize(NULL);
451 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id); 456 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id);
452 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id); 457 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id);
453 ASSERT_TRUE(info_ != NULL); 458 ASSERT_TRUE(info_ != NULL);
454 459
455 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D); 460 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D);
456 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); 461 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target());
457 // Check Setting level 0 to NPOT 462 // Check Setting level 0 to NPOT
458 manager.SetLevelInfo(&feature_info, info, 463 manager.SetLevelInfo(&feature_info, info,
459 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 464 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
460 EXPECT_TRUE(info->npot()); 465 EXPECT_TRUE(info->npot());
461 EXPECT_FALSE(info->texture_complete()); 466 EXPECT_FALSE(info->texture_complete());
462 EXPECT_TRUE(info->CanGenerateMipmaps(&feature_info)); 467 EXPECT_TRUE(info->CanGenerateMipmaps(&feature_info));
463 EXPECT_FALSE(info->CanRender(&feature_info)); 468 EXPECT_FALSE(info->CanRender(&feature_info));
464 EXPECT_TRUE(manager.HaveUnrenderableTextures()); 469 EXPECT_TRUE(manager.HaveUnrenderableTextures());
465 EXPECT_TRUE(manager.MarkMipmapsGenerated(&feature_info, info)); 470 EXPECT_TRUE(manager.MarkMipmapsGenerated(&feature_info, info));
466 EXPECT_TRUE(info->texture_complete()); 471 EXPECT_TRUE(info->texture_complete());
467 EXPECT_TRUE(info->CanRender(&feature_info)); 472 EXPECT_TRUE(info->CanRender(&feature_info));
468 EXPECT_FALSE(manager.HaveUnrenderableTextures()); 473 EXPECT_FALSE(manager.HaveUnrenderableTextures());
469 manager.Destroy(false); 474 manager.Destroy(false);
470 } 475 }
471 476
472 TEST_F(TextureInfoTest, POTCubeMap) { 477 TEST_F(TextureInfoTest, POTCubeMap) {
473 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_CUBE_MAP); 478 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_CUBE_MAP);
474 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), info_->target()); 479 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), info_->target());
475 // Check Setting level 0 each face to POT 480 // Check Setting level 0 each face to POT
476 manager_.SetLevelInfo(&feature_info_, info_, 481 manager_.SetLevelInfo(&feature_info_, info_,
477 GL_TEXTURE_CUBE_MAP_POSITIVE_X, 482 GL_TEXTURE_CUBE_MAP_POSITIVE_X,
478 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 483 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
479 EXPECT_FALSE(info_->npot()); 484 EXPECT_FALSE(info_->npot());
480 EXPECT_FALSE(info_->texture_complete()); 485 EXPECT_FALSE(info_->texture_complete());
481 EXPECT_FALSE(info_->cube_complete()); 486 EXPECT_FALSE(info_->cube_complete());
482 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_)); 487 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_));
483 EXPECT_FALSE(info_->CanRender(&feature_info_)); 488 EXPECT_FALSE(info_->CanRender(&feature_info_));
484 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 489 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
485 manager_.SetLevelInfo(&feature_info_, info_, 490 manager_.SetLevelInfo(&feature_info_, info_,
486 GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 491 GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
487 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 492 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
488 EXPECT_FALSE(info_->npot()); 493 EXPECT_FALSE(info_->npot());
489 EXPECT_FALSE(info_->texture_complete()); 494 EXPECT_FALSE(info_->texture_complete());
490 EXPECT_FALSE(info_->cube_complete()); 495 EXPECT_FALSE(info_->cube_complete());
491 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_)); 496 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_));
492 EXPECT_FALSE(info_->CanRender(&feature_info_)); 497 EXPECT_FALSE(info_->CanRender(&feature_info_));
493 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 498 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
494 manager_.SetLevelInfo(&feature_info_, info_, 499 manager_.SetLevelInfo(&feature_info_, info_,
495 GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 500 GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
496 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 501 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
497 EXPECT_FALSE(info_->npot()); 502 EXPECT_FALSE(info_->npot());
498 EXPECT_FALSE(info_->texture_complete()); 503 EXPECT_FALSE(info_->texture_complete());
499 EXPECT_FALSE(info_->cube_complete()); 504 EXPECT_FALSE(info_->cube_complete());
500 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_)); 505 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_));
501 EXPECT_FALSE(info_->CanRender(&feature_info_)); 506 EXPECT_FALSE(info_->CanRender(&feature_info_));
502 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 507 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
503 manager_.SetLevelInfo(&feature_info_, info_, 508 manager_.SetLevelInfo(&feature_info_, info_,
504 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 509 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
505 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 510 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
506 EXPECT_FALSE(info_->npot()); 511 EXPECT_FALSE(info_->npot());
507 EXPECT_FALSE(info_->texture_complete()); 512 EXPECT_FALSE(info_->texture_complete());
508 EXPECT_FALSE(info_->cube_complete()); 513 EXPECT_FALSE(info_->cube_complete());
509 EXPECT_FALSE(info_->CanRender(&feature_info_)); 514 EXPECT_FALSE(info_->CanRender(&feature_info_));
510 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_)); 515 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_));
511 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 516 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
512 manager_.SetLevelInfo(&feature_info_, info_, 517 manager_.SetLevelInfo(&feature_info_, info_,
513 GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 518 GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
514 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 519 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
515 EXPECT_FALSE(info_->npot()); 520 EXPECT_FALSE(info_->npot());
516 EXPECT_FALSE(info_->texture_complete()); 521 EXPECT_FALSE(info_->texture_complete());
517 EXPECT_FALSE(info_->cube_complete()); 522 EXPECT_FALSE(info_->cube_complete());
518 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_)); 523 EXPECT_FALSE(info_->CanGenerateMipmaps(&feature_info_));
519 EXPECT_FALSE(info_->CanRender(&feature_info_)); 524 EXPECT_FALSE(info_->CanRender(&feature_info_));
520 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 525 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
521 manager_.SetLevelInfo(&feature_info_, info_, 526 manager_.SetLevelInfo(&feature_info_, info_,
522 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 527 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
523 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 528 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
524 EXPECT_FALSE(info_->npot()); 529 EXPECT_FALSE(info_->npot());
525 EXPECT_FALSE(info_->texture_complete()); 530 EXPECT_FALSE(info_->texture_complete());
526 EXPECT_TRUE(info_->cube_complete()); 531 EXPECT_TRUE(info_->cube_complete());
527 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_)); 532 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_));
528 EXPECT_FALSE(info_->CanRender(&feature_info_)); 533 EXPECT_FALSE(info_->CanRender(&feature_info_));
529 EXPECT_TRUE(manager_.HaveUnrenderableTextures()); 534 EXPECT_TRUE(manager_.HaveUnrenderableTextures());
530 535
531 // Make mips. 536 // Make mips.
532 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_)); 537 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_));
533 EXPECT_TRUE(info_->texture_complete()); 538 EXPECT_TRUE(info_->texture_complete());
534 EXPECT_TRUE(info_->cube_complete()); 539 EXPECT_TRUE(info_->cube_complete());
535 EXPECT_TRUE(info_->CanRender(&feature_info_)); 540 EXPECT_TRUE(info_->CanRender(&feature_info_));
536 EXPECT_FALSE(manager_.HaveUnrenderableTextures()); 541 EXPECT_FALSE(manager_.HaveUnrenderableTextures());
537 542
538 // Change a mip. 543 // Change a mip.
539 manager_.SetLevelInfo(&feature_info_, info_, 544 manager_.SetLevelInfo(&feature_info_, info_,
540 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 545 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
541 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 546 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
542 EXPECT_FALSE(info_->npot()); 547 EXPECT_FALSE(info_->npot());
543 EXPECT_FALSE(info_->texture_complete()); 548 EXPECT_FALSE(info_->texture_complete());
544 EXPECT_TRUE(info_->cube_complete()); 549 EXPECT_TRUE(info_->cube_complete());
545 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_)); 550 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_));
546 // Set a level past the number of mips that would get generated. 551 // Set a level past the number of mips that would get generated.
547 manager_.SetLevelInfo(&feature_info_, info_, 552 manager_.SetLevelInfo(&feature_info_, info_,
548 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 553 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
549 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 554 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
550 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_)); 555 EXPECT_TRUE(info_->CanGenerateMipmaps(&feature_info_));
551 // Make mips. 556 // Make mips.
552 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_)); 557 EXPECT_TRUE(manager_.MarkMipmapsGenerated(&feature_info_, info_));
553 EXPECT_TRUE(info_->texture_complete()); 558 EXPECT_TRUE(info_->texture_complete());
554 EXPECT_TRUE(info_->cube_complete()); 559 EXPECT_TRUE(info_->cube_complete());
555 } 560 }
556 561
557 TEST_F(TextureInfoTest, GetLevelSize) { 562 TEST_F(TextureInfoTest, GetLevelSize) {
558 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D); 563 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
559 manager_.SetLevelInfo(&feature_info_, info_, 564 manager_.SetLevelInfo(&feature_info_, info_,
560 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 565 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
561 GLsizei width = -1; 566 GLsizei width = -1;
562 GLsizei height = -1; 567 GLsizei height = -1;
563 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height)); 568 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height));
564 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height)); 569 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height));
565 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 570 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
566 EXPECT_TRUE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); 571 EXPECT_TRUE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
567 EXPECT_EQ(4, width); 572 EXPECT_EQ(4, width);
568 EXPECT_EQ(5, height); 573 EXPECT_EQ(5, height);
569 manager_.RemoveTextureInfo(&feature_info_, kClient1Id); 574 manager_.RemoveTextureInfo(&feature_info_, kClient1Id);
570 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); 575 EXPECT_FALSE(info_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
571 } 576 }
572 577
573 TEST_F(TextureInfoTest, GetLevelType) { 578 TEST_F(TextureInfoTest, GetLevelType) {
574 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D); 579 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
575 manager_.SetLevelInfo(&feature_info_, info_, 580 manager_.SetLevelInfo(&feature_info_, info_,
576 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 581 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
577 GLenum type = -1; 582 GLenum type = -1;
578 GLenum format = -1; 583 GLenum format = -1;
579 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, -1, &type, &format)); 584 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, -1, &type, &format));
580 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format)); 585 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format));
581 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 0, &type, &format)); 586 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 0, &type, &format));
582 EXPECT_TRUE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); 587 EXPECT_TRUE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
583 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); 588 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
584 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format); 589 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format);
585 manager_.RemoveTextureInfo(&feature_info_, kClient1Id); 590 manager_.RemoveTextureInfo(&feature_info_, kClient1Id);
586 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); 591 EXPECT_FALSE(info_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
587 } 592 }
588 593
589 TEST_F(TextureInfoTest, ValidForTexture) { 594 TEST_F(TextureInfoTest, ValidForTexture) {
590 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D); 595 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
591 manager_.SetLevelInfo(&feature_info_, info_, 596 manager_.SetLevelInfo(&feature_info_, info_,
592 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); 597 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
593 // Check bad face. 598 // Check bad face.
594 EXPECT_FALSE(info_->ValidForTexture( 599 EXPECT_FALSE(info_->ValidForTexture(
595 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 600 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
596 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); 601 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
597 // Check bad level. 602 // Check bad level.
598 EXPECT_FALSE(info_->ValidForTexture( 603 EXPECT_FALSE(info_->ValidForTexture(
599 GL_TEXTURE_2D, 0, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); 604 GL_TEXTURE_2D, 0, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
600 // Check bad xoffset. 605 // Check bad xoffset.
601 EXPECT_FALSE(info_->ValidForTexture( 606 EXPECT_FALSE(info_->ValidForTexture(
602 GL_TEXTURE_2D, 1, -1, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); 607 GL_TEXTURE_2D, 1, -1, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 TestHelper::SetupFeatureInfoInitExpectations( 642 TestHelper::SetupFeatureInfoInitExpectations(
638 gl_.get(), "GL_OES_texture_float"); 643 gl_.get(), "GL_OES_texture_float");
639 FeatureInfo feature_info; 644 FeatureInfo feature_info;
640 feature_info.Initialize(NULL); 645 feature_info.Initialize(NULL);
641 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id); 646 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id);
642 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id); 647 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id);
643 ASSERT_TRUE(info != NULL); 648 ASSERT_TRUE(info != NULL);
644 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D); 649 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D);
645 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); 650 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target());
646 manager.SetLevelInfo(&feature_info, info, 651 manager.SetLevelInfo(&feature_info, info,
647 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT); 652 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true);
648 EXPECT_FALSE(info->texture_complete()); 653 EXPECT_FALSE(info->texture_complete());
649 manager.SetParameter(&feature_info, info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 654 manager.SetParameter(&feature_info, info, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
650 EXPECT_FALSE(info->texture_complete()); 655 EXPECT_FALSE(info->texture_complete());
651 manager.SetParameter( 656 manager.SetParameter(
652 &feature_info, info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); 657 &feature_info, info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
653 EXPECT_TRUE(info->texture_complete()); 658 EXPECT_TRUE(info->texture_complete());
654 manager.Destroy(false); 659 manager.Destroy(false);
655 } 660 }
656 661
657 TEST_F(TextureInfoTest, FloatLinear) { 662 TEST_F(TextureInfoTest, FloatLinear) {
658 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize); 663 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize);
659 TestHelper::SetupFeatureInfoInitExpectations( 664 TestHelper::SetupFeatureInfoInitExpectations(
660 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear"); 665 gl_.get(), "GL_OES_texture_float GL_OES_texture_float_linear");
661 FeatureInfo feature_info; 666 FeatureInfo feature_info;
662 feature_info.Initialize(NULL); 667 feature_info.Initialize(NULL);
663 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id); 668 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id);
664 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id); 669 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id);
665 ASSERT_TRUE(info != NULL); 670 ASSERT_TRUE(info != NULL);
666 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D); 671 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D);
667 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); 672 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target());
668 manager.SetLevelInfo(&feature_info, info, 673 manager.SetLevelInfo(&feature_info, info,
669 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT); 674 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true);
670 EXPECT_TRUE(info->texture_complete()); 675 EXPECT_TRUE(info->texture_complete());
671 manager.Destroy(false); 676 manager.Destroy(false);
672 } 677 }
673 678
674 TEST_F(TextureInfoTest, HalfFloatNotLinear) { 679 TEST_F(TextureInfoTest, HalfFloatNotLinear) {
675 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize); 680 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize);
676 TestHelper::SetupFeatureInfoInitExpectations( 681 TestHelper::SetupFeatureInfoInitExpectations(
677 gl_.get(), "GL_OES_texture_half_float"); 682 gl_.get(), "GL_OES_texture_half_float");
678 FeatureInfo feature_info; 683 FeatureInfo feature_info;
679 feature_info.Initialize(NULL); 684 feature_info.Initialize(NULL);
680 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id); 685 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id);
681 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id); 686 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id);
682 ASSERT_TRUE(info != NULL); 687 ASSERT_TRUE(info != NULL);
683 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D); 688 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D);
684 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); 689 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target());
685 manager.SetLevelInfo(&feature_info, info, 690 manager.SetLevelInfo(&feature_info, info,
686 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES); 691 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true);
687 EXPECT_FALSE(info->texture_complete()); 692 EXPECT_FALSE(info->texture_complete());
688 manager.SetParameter(&feature_info, info, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 693 manager.SetParameter(&feature_info, info, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
689 EXPECT_FALSE(info->texture_complete()); 694 EXPECT_FALSE(info->texture_complete());
690 manager.SetParameter( 695 manager.SetParameter(
691 &feature_info, info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); 696 &feature_info, info, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
692 EXPECT_TRUE(info->texture_complete()); 697 EXPECT_TRUE(info->texture_complete());
693 manager.Destroy(false); 698 manager.Destroy(false);
694 } 699 }
695 700
696 TEST_F(TextureInfoTest, HalfFloatLinear) { 701 TEST_F(TextureInfoTest, HalfFloatLinear) {
697 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize); 702 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize);
698 TestHelper::SetupFeatureInfoInitExpectations( 703 TestHelper::SetupFeatureInfoInitExpectations(
699 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear"); 704 gl_.get(), "GL_OES_texture_half_float GL_OES_texture_half_float_linear");
700 FeatureInfo feature_info; 705 FeatureInfo feature_info;
701 feature_info.Initialize(NULL); 706 feature_info.Initialize(NULL);
702 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id); 707 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id);
703 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id); 708 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id);
704 ASSERT_TRUE(info != NULL); 709 ASSERT_TRUE(info != NULL);
705 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D); 710 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_2D);
706 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target()); 711 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), info->target());
707 manager.SetLevelInfo(&feature_info, info, 712 manager.SetLevelInfo(&feature_info, info,
708 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES); 713 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true);
709 EXPECT_TRUE(info->texture_complete()); 714 EXPECT_TRUE(info->texture_complete());
710 manager.Destroy(false); 715 manager.Destroy(false);
711 } 716 }
712 717
713 TEST_F(TextureInfoTest, EGLImageExternal) { 718 TEST_F(TextureInfoTest, EGLImageExternal) {
714 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize); 719 TextureManager manager(kMaxTextureSize, kMaxCubeMapTextureSize);
715 TestHelper::SetupFeatureInfoInitExpectations( 720 TestHelper::SetupFeatureInfoInitExpectations(
716 gl_.get(), "GL_OES_EGL_image_external"); 721 gl_.get(), "GL_OES_EGL_image_external");
717 FeatureInfo feature_info; 722 FeatureInfo feature_info;
718 feature_info.Initialize(NULL); 723 feature_info.Initialize(NULL);
719 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id); 724 manager.CreateTextureInfo(&feature_info, kClient1Id, kService1Id);
720 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id); 725 TextureManager::TextureInfo* info = manager_.GetTextureInfo(kClient1Id);
721 ASSERT_TRUE(info != NULL); 726 ASSERT_TRUE(info != NULL);
722 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_EXTERNAL_OES); 727 manager.SetInfoTarget(&feature_info_, info, GL_TEXTURE_EXTERNAL_OES);
723 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), info->target()); 728 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), info->target());
724 EXPECT_FALSE(info->CanGenerateMipmaps(&feature_info)); 729 EXPECT_FALSE(info->CanGenerateMipmaps(&feature_info));
725 manager.Destroy(false); 730 manager.Destroy(false);
726 } 731 }
727 732
733 TEST_F(TextureInfoTest, SafeUnsafe) {
734 static const GLuint kClient2Id = 2;
735 static const GLuint kService2Id = 12;
736 static const GLuint kClient3Id = 3;
737 static const GLuint kService3Id = 13;
738 EXPECT_FALSE(manager_.HaveUnclearedMips());
739 EXPECT_EQ(0, info_->num_uncleared_mips());
740 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
741 manager_.SetLevelInfo(&feature_info_, info_,
742 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
743 EXPECT_FALSE(info_->SafeToRenderFrom());
744 EXPECT_TRUE(manager_.HaveUnsafeTextures());
745 EXPECT_TRUE(manager_.HaveUnclearedMips());
746 EXPECT_EQ(1, info_->num_uncleared_mips());
747 manager_.SetLevelCleared(info_, GL_TEXTURE_2D, 0);
748 EXPECT_TRUE(info_->SafeToRenderFrom());
749 EXPECT_FALSE(manager_.HaveUnsafeTextures());
750 EXPECT_FALSE(manager_.HaveUnclearedMips());
751 EXPECT_EQ(0, info_->num_uncleared_mips());
752 manager_.SetLevelInfo(&feature_info_, info_,
753 GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
754 EXPECT_FALSE(info_->SafeToRenderFrom());
755 EXPECT_TRUE(manager_.HaveUnsafeTextures());
756 EXPECT_TRUE(manager_.HaveUnclearedMips());
757 EXPECT_EQ(1, info_->num_uncleared_mips());
758 manager_.SetLevelCleared(info_, GL_TEXTURE_2D, 1);
759 EXPECT_TRUE(info_->SafeToRenderFrom());
760 EXPECT_FALSE(manager_.HaveUnsafeTextures());
761 EXPECT_FALSE(manager_.HaveUnclearedMips());
762 EXPECT_EQ(0, info_->num_uncleared_mips());
763 manager_.SetLevelInfo(&feature_info_, info_,
764 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
765 manager_.SetLevelInfo(&feature_info_, info_,
766 GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
767 EXPECT_FALSE(info_->SafeToRenderFrom());
768 EXPECT_TRUE(manager_.HaveUnsafeTextures());
769 EXPECT_TRUE(manager_.HaveUnclearedMips());
770 EXPECT_EQ(2, info_->num_uncleared_mips());
771 manager_.SetLevelCleared(info_, GL_TEXTURE_2D, 0);
772 EXPECT_FALSE(info_->SafeToRenderFrom());
773 EXPECT_TRUE(manager_.HaveUnsafeTextures());
774 EXPECT_TRUE(manager_.HaveUnclearedMips());
775 EXPECT_EQ(1, info_->num_uncleared_mips());
776 manager_.SetLevelCleared(info_, GL_TEXTURE_2D, 1);
777 EXPECT_TRUE(info_->SafeToRenderFrom());
778 EXPECT_FALSE(manager_.HaveUnsafeTextures());
779 EXPECT_FALSE(manager_.HaveUnclearedMips());
780 EXPECT_EQ(0, info_->num_uncleared_mips());
781 manager_.SetLevelInfo(&feature_info_, info_,
782 GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
783 EXPECT_FALSE(info_->SafeToRenderFrom());
784 EXPECT_TRUE(manager_.HaveUnsafeTextures());
785 EXPECT_TRUE(manager_.HaveUnclearedMips());
786 EXPECT_EQ(1, info_->num_uncleared_mips());
787 manager_.MarkMipmapsGenerated(&feature_info_, info_);
788 EXPECT_TRUE(info_->SafeToRenderFrom());
789 EXPECT_FALSE(manager_.HaveUnsafeTextures());
790 EXPECT_FALSE(manager_.HaveUnclearedMips());
791 EXPECT_EQ(0, info_->num_uncleared_mips());
792
793 manager_.CreateTextureInfo(&feature_info_, kClient2Id, kService2Id);
794 TextureManager::TextureInfo::Ref info2 = manager_.GetTextureInfo(kClient2Id);
795 ASSERT_TRUE(info2.get() != NULL);
796 manager_.SetInfoTarget(&feature_info_, info2, GL_TEXTURE_2D);
797 EXPECT_FALSE(manager_.HaveUnsafeTextures());
798 EXPECT_FALSE(manager_.HaveUnclearedMips());
799 EXPECT_EQ(0, info2->num_uncleared_mips());
800 manager_.SetLevelInfo(&feature_info_, info2,
801 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
802 EXPECT_FALSE(manager_.HaveUnsafeTextures());
803 EXPECT_FALSE(manager_.HaveUnclearedMips());
804 EXPECT_EQ(0, info2->num_uncleared_mips());
805 manager_.SetLevelInfo(&feature_info_, info2,
806 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
807 EXPECT_TRUE(manager_.HaveUnsafeTextures());
808 EXPECT_TRUE(manager_.HaveUnclearedMips());
809 EXPECT_EQ(1, info2->num_uncleared_mips());
810
811 manager_.CreateTextureInfo(&feature_info_, kClient3Id, kService3Id);
812 TextureManager::TextureInfo::Ref info3 = manager_.GetTextureInfo(kClient3Id);
813 ASSERT_TRUE(info3.get() != NULL);
814 manager_.SetInfoTarget(&feature_info_, info3, GL_TEXTURE_2D);
815 manager_.SetLevelInfo(&feature_info_, info3,
816 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
817 EXPECT_TRUE(manager_.HaveUnsafeTextures());
818 EXPECT_TRUE(manager_.HaveUnclearedMips());
819 EXPECT_EQ(1, info3->num_uncleared_mips());
820 manager_.SetLevelCleared(info2, GL_TEXTURE_2D, 0);
821 EXPECT_TRUE(manager_.HaveUnsafeTextures());
822 EXPECT_TRUE(manager_.HaveUnclearedMips());
823 EXPECT_EQ(0, info2->num_uncleared_mips());
824 manager_.SetLevelCleared(info3, GL_TEXTURE_2D, 0);
825 EXPECT_FALSE(manager_.HaveUnsafeTextures());
826 EXPECT_FALSE(manager_.HaveUnclearedMips());
827 EXPECT_EQ(0, info3->num_uncleared_mips());
828
829 manager_.SetLevelInfo(&feature_info_, info2,
830 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
831 manager_.SetLevelInfo(&feature_info_, info3,
832 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
833 EXPECT_TRUE(manager_.HaveUnsafeTextures());
834 EXPECT_TRUE(manager_.HaveUnclearedMips());
835 EXPECT_EQ(1, info2->num_uncleared_mips());
836 EXPECT_EQ(1, info3->num_uncleared_mips());
837 manager_.RemoveTextureInfo(&feature_info_, kClient3Id);
838 EXPECT_TRUE(manager_.HaveUnsafeTextures());
839 EXPECT_TRUE(manager_.HaveUnclearedMips());
840 manager_.RemoveTextureInfo(&feature_info_, kClient2Id);
841 EXPECT_FALSE(manager_.HaveUnsafeTextures());
842 EXPECT_FALSE(manager_.HaveUnclearedMips());
843 }
844
845 TEST_F(TextureInfoTest, ClearTexture) {
846 scoped_ptr<MockGLES2Decoder> decoder(new gles2::MockGLES2Decoder());
847 EXPECT_CALL(*decoder, ClearLevel(_, _, _, _, _, _, _, _))
848 .WillRepeatedly(Return(true));
849 manager_.SetInfoTarget(&feature_info_, info_, GL_TEXTURE_2D);
850 manager_.SetLevelInfo(&feature_info_, info_,
851 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
852 manager_.SetLevelInfo(&feature_info_, info_,
853 GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
854 EXPECT_FALSE(info_->SafeToRenderFrom());
855 EXPECT_TRUE(manager_.HaveUnsafeTextures());
856 EXPECT_TRUE(manager_.HaveUnclearedMips());
857 EXPECT_EQ(2, info_->num_uncleared_mips());
858 manager_.ClearRenderableLevels(decoder.get(), info_);
859 EXPECT_TRUE(info_->SafeToRenderFrom());
860 EXPECT_FALSE(manager_.HaveUnsafeTextures());
861 EXPECT_FALSE(manager_.HaveUnclearedMips());
862 EXPECT_EQ(0, info_->num_uncleared_mips());
863 manager_.SetLevelInfo(&feature_info_, info_,
864 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
865 manager_.SetLevelInfo(&feature_info_, info_,
866 GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
867 EXPECT_FALSE(info_->SafeToRenderFrom());
868 EXPECT_TRUE(manager_.HaveUnsafeTextures());
869 EXPECT_TRUE(manager_.HaveUnclearedMips());
870 EXPECT_EQ(2, info_->num_uncleared_mips());
871 manager_.ClearTextureLevel(decoder.get(), info_, GL_TEXTURE_2D, 0);
872 EXPECT_FALSE(info_->SafeToRenderFrom());
873 EXPECT_TRUE(manager_.HaveUnsafeTextures());
874 EXPECT_TRUE(manager_.HaveUnclearedMips());
875 EXPECT_EQ(1, info_->num_uncleared_mips());
876 manager_.ClearTextureLevel(decoder.get(), info_, GL_TEXTURE_2D, 1);
877 EXPECT_TRUE(info_->SafeToRenderFrom());
878 EXPECT_FALSE(manager_.HaveUnsafeTextures());
879 EXPECT_FALSE(manager_.HaveUnclearedMips());
880 EXPECT_EQ(0, info_->num_uncleared_mips());
881 }
882
728 } // namespace gles2 883 } // namespace gles2
729 } // namespace gpu 884 } // namespace gpu
730 885
731 886
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698