| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/texture_manager.h" | 5 #include "gpu/command_buffer/service/texture_manager.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "gpu/command_buffer/service/feature_info.h" | 8 #include "gpu/command_buffer/service/feature_info.h" |
| 9 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" |
| 10 #include "gpu/command_buffer/service/memory_tracking.h" | 10 #include "gpu/command_buffer/service/memory_tracking.h" |
| (...skipping 1367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |