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

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

Issue 12717013: Add reference-counting for mailbox textures. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add optional 'pool' reference while textures are in mailbox Created 7 years, 8 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
« 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) 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 1367 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 TEST_F(SaveRestoreTextureTest, SaveRestore2D) { 1378 TEST_F(SaveRestoreTextureTest, SaveRestore2D) {
1379 manager_->SetTarget(texture_, GL_TEXTURE_2D); 1379 manager_->SetTarget(texture_, GL_TEXTURE_2D);
1380 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture_->target()); 1380 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture_->target());
1381 LevelInfo level0( 1381 LevelInfo level0(
1382 GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, true); 1382 GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, true);
1383 SetLevelInfo(texture_, 0, level0); 1383 SetLevelInfo(texture_, 0, level0);
1384 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_)); 1384 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_));
1385 EXPECT_TRUE(texture_->texture_complete()); 1385 EXPECT_TRUE(texture_->texture_complete());
1386 LevelInfo level1 = GetLevelInfo(texture_.get(), GL_TEXTURE_2D, 1); 1386 LevelInfo level1 = GetLevelInfo(texture_.get(), GL_TEXTURE_2D, 1);
1387 LevelInfo level2 = GetLevelInfo(texture_.get(), GL_TEXTURE_2D, 2); 1387 LevelInfo level2 = GetLevelInfo(texture_.get(), GL_TEXTURE_2D, 2);
1388 scoped_ptr<TextureDefinition> definition(Save(texture_)); 1388 TextureDefinition* definition(Save(texture_));
1389 const TextureDefinition::LevelInfos& infos = definition->level_infos(); 1389 const TextureDefinition::LevelInfos& infos = definition->level_infos();
1390 EXPECT_EQ(1U, infos.size()); 1390 EXPECT_EQ(1U, infos.size());
1391 EXPECT_EQ(3U, infos[0].size()); 1391 EXPECT_EQ(3U, infos[0].size());
1392 1392
1393 // Make this texture bigger with more levels, and make sure they get 1393 // Make this texture bigger with more levels, and make sure they get
1394 // clobbered correctly during Restore(). 1394 // clobbered correctly during Restore().
1395 manager_->SetTarget(texture2_, GL_TEXTURE_2D); 1395 manager_->SetTarget(texture2_, GL_TEXTURE_2D);
1396 SetLevelInfo( 1396 SetLevelInfo(
1397 texture2_, 1397 texture2_,
1398 0, 1398 0,
1399 LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, 0, GL_UNSIGNED_BYTE, false)); 1399 LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, 0, GL_UNSIGNED_BYTE, false));
1400 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_)); 1400 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_));
1401 EXPECT_TRUE(texture2_->texture_complete()); 1401 EXPECT_TRUE(texture2_->texture_complete());
1402 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture2_->estimated_size()); 1402 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture2_->estimated_size());
1403 Restore(texture2_, definition.release()); 1403 Restore(texture2_, definition);
1404 EXPECT_EQ(level0, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 0)); 1404 EXPECT_EQ(level0, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 0));
1405 EXPECT_EQ(level1, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 1)); 1405 EXPECT_EQ(level1, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 1));
1406 EXPECT_EQ(level2, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 2)); 1406 EXPECT_EQ(level2, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 2));
1407 EXPECT_EQ(64U + 16U + 4U, texture2_->estimated_size()); 1407 EXPECT_EQ(64U + 16U + 4U, texture2_->estimated_size());
1408 GLint w, h; 1408 GLint w, h;
1409 EXPECT_TRUE(texture2_->GetLevelSize(GL_TEXTURE_2D, 3, &w, &h)); 1409 EXPECT_TRUE(texture2_->GetLevelSize(GL_TEXTURE_2D, 3, &w, &h));
1410 EXPECT_EQ(0, w); 1410 EXPECT_EQ(0, w);
1411 EXPECT_EQ(0, h); 1411 EXPECT_EQ(0, h);
1412 } 1412 }
1413 1413
1414 TEST_F(SaveRestoreTextureTest, SaveRestoreClearRectangle) { 1414 TEST_F(SaveRestoreTextureTest, SaveRestoreClearRectangle) {
1415 manager_->SetTarget(texture_, GL_TEXTURE_RECTANGLE_ARB); 1415 manager_->SetTarget(texture_, GL_TEXTURE_RECTANGLE_ARB);
1416 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), texture_->target()); 1416 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), texture_->target());
1417 LevelInfo level0( 1417 LevelInfo level0(
1418 GL_TEXTURE_RECTANGLE_ARB, GL_RGBA, 1, 1, 1, 0, GL_UNSIGNED_BYTE, false); 1418 GL_TEXTURE_RECTANGLE_ARB, GL_RGBA, 1, 1, 1, 0, GL_UNSIGNED_BYTE, false);
1419 SetLevelInfo(texture_, 0, level0); 1419 SetLevelInfo(texture_, 0, level0);
1420 EXPECT_TRUE(texture_->texture_complete()); 1420 EXPECT_TRUE(texture_->texture_complete());
1421 scoped_ptr<TextureDefinition> definition(Save(texture_)); 1421 TextureDefinition* definition(Save(texture_));
1422 const TextureDefinition::LevelInfos& infos = definition->level_infos(); 1422 const TextureDefinition::LevelInfos& infos = definition->level_infos();
1423 EXPECT_EQ(1U, infos.size()); 1423 EXPECT_EQ(1U, infos.size());
1424 EXPECT_EQ(1U, infos[0].size()); 1424 EXPECT_EQ(1U, infos[0].size());
1425 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), infos[0][0].target); 1425 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), infos[0][0].target);
1426 manager_->SetTarget(texture2_, GL_TEXTURE_RECTANGLE_ARB); 1426 manager_->SetTarget(texture2_, GL_TEXTURE_RECTANGLE_ARB);
1427 Restore(texture2_, definition.release()); 1427 Restore(texture2_, definition);
1428 1428
1429 // See if we can clear the previously uncleared level now. 1429 // See if we can clear the previously uncleared level now.
1430 EXPECT_EQ(level0, GetLevelInfo(texture2_.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); 1430 EXPECT_EQ(level0, GetLevelInfo(texture2_.get(), GL_TEXTURE_RECTANGLE_ARB, 0));
1431 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) 1431 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _))
1432 .WillRepeatedly(Return(true)); 1432 .WillRepeatedly(Return(true));
1433 EXPECT_TRUE(manager_->ClearTextureLevel( 1433 EXPECT_TRUE(manager_->ClearTextureLevel(
1434 decoder_.get(), texture2_, GL_TEXTURE_RECTANGLE_ARB, 0)); 1434 decoder_.get(), texture2_, GL_TEXTURE_RECTANGLE_ARB, 0));
1435 } 1435 }
1436 1436
1437 TEST_F(SaveRestoreTextureTest, SaveRestoreCube) { 1437 TEST_F(SaveRestoreTextureTest, SaveRestoreCube) {
(...skipping 11 matching lines...) Expand all
1449 GL_RGBA, 1449 GL_RGBA,
1450 3, 1450 3,
1451 3, 1451 3,
1452 1, 1452 1,
1453 0, 1453 0,
1454 GL_UNSIGNED_BYTE, 1454 GL_UNSIGNED_BYTE,
1455 true); 1455 true);
1456 SetLevelInfo(texture_, 0, face0); 1456 SetLevelInfo(texture_, 0, face0);
1457 SetLevelInfo(texture_, 0, face5); 1457 SetLevelInfo(texture_, 0, face5);
1458 EXPECT_TRUE(texture_->texture_complete()); 1458 EXPECT_TRUE(texture_->texture_complete());
1459 scoped_ptr<TextureDefinition> definition(Save(texture_)); 1459 TextureDefinition* definition(Save(texture_));
1460 const TextureDefinition::LevelInfos& infos = definition->level_infos(); 1460 const TextureDefinition::LevelInfos& infos = definition->level_infos();
1461 EXPECT_EQ(6U, infos.size()); 1461 EXPECT_EQ(6U, infos.size());
1462 EXPECT_EQ(1U, infos[0].size()); 1462 EXPECT_EQ(1U, infos[0].size());
1463 manager_->SetTarget(texture2_, GL_TEXTURE_CUBE_MAP); 1463 manager_->SetTarget(texture2_, GL_TEXTURE_CUBE_MAP);
1464 Restore(texture2_, definition.release()); 1464 Restore(texture2_, definition);
1465 EXPECT_EQ(face0, 1465 EXPECT_EQ(face0,
1466 GetLevelInfo(texture2_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0)); 1466 GetLevelInfo(texture2_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0));
1467 EXPECT_EQ(face5, 1467 EXPECT_EQ(face5,
1468 GetLevelInfo(texture2_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0)); 1468 GetLevelInfo(texture2_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0));
1469 } 1469 }
1470 1470
1471 } // namespace gles2 1471 } // namespace gles2
1472 } // namespace gpu 1472 } // namespace gpu
1473 1473
1474 1474
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