| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "gpu/command_buffer/service/error_state_mock.h" | 10 #include "gpu/command_buffer/service/error_state_mock.h" |
| 11 #include "gpu/command_buffer/service/feature_info.h" | 11 #include "gpu/command_buffer/service/feature_info.h" |
| 12 #include "gpu/command_buffer/service/framebuffer_manager.h" | 12 #include "gpu/command_buffer/service/framebuffer_manager.h" |
| 13 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | 13 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" |
| 14 #include "gpu/command_buffer/service/gpu_service_test.h" | 14 #include "gpu/command_buffer/service/gpu_service_test.h" |
| 15 #include "gpu/command_buffer/service/mailbox_manager.h" | 15 #include "gpu/command_buffer/service/mailbox_manager.h" |
| 16 #include "gpu/command_buffer/service/memory_tracking.h" | 16 #include "gpu/command_buffer/service/memory_tracking.h" |
| 17 #include "gpu/command_buffer/service/mocks.h" | 17 #include "gpu/command_buffer/service/mocks.h" |
| 18 #include "gpu/command_buffer/service/test_helper.h" | 18 #include "gpu/command_buffer/service/test_helper.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "ui/gl/gl_image_stub.h" |
| 20 #include "ui/gl/gl_mock.h" | 21 #include "ui/gl/gl_mock.h" |
| 21 | 22 |
| 22 using ::testing::AtLeast; | 23 using ::testing::AtLeast; |
| 23 using ::testing::Pointee; | 24 using ::testing::Pointee; |
| 24 using ::testing::Return; | 25 using ::testing::Return; |
| 25 using ::testing::SetArgumentPointee; | 26 using ::testing::SetArgumentPointee; |
| 26 using ::testing::StrictMock; | 27 using ::testing::StrictMock; |
| 27 using ::testing::_; | 28 using ::testing::_; |
| 28 | 29 |
| 29 namespace gpu { | 30 namespace gpu { |
| (...skipping 1597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1627 2, | 1628 2, |
| 1628 2, | 1629 2, |
| 1629 1, | 1630 1, |
| 1630 0, | 1631 0, |
| 1631 GL_RGBA, | 1632 GL_RGBA, |
| 1632 GL_UNSIGNED_BYTE, | 1633 GL_UNSIGNED_BYTE, |
| 1633 true); | 1634 true); |
| 1634 Texture* texture = texture_ref_->texture(); | 1635 Texture* texture = texture_ref_->texture(); |
| 1635 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); | 1636 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); |
| 1636 // Set image. | 1637 // Set image. |
| 1637 manager_->SetLevelImage(texture_ref_.get(), | 1638 scoped_refptr<gfx::GLImage> image(new gfx::GLImageStub); |
| 1638 GL_TEXTURE_2D, | 1639 manager_->SetLevelImage(texture_ref_.get(), GL_TEXTURE_2D, 1, image.get()); |
| 1639 1, | |
| 1640 gfx::GLImage::CreateGLImage(0).get()); | |
| 1641 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); | 1640 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); |
| 1642 // Remove it. | 1641 // Remove it. |
| 1643 manager_->SetLevelImage(texture_ref_.get(), GL_TEXTURE_2D, 1, NULL); | 1642 manager_->SetLevelImage(texture_ref_.get(), GL_TEXTURE_2D, 1, NULL); |
| 1644 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); | 1643 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); |
| 1645 manager_->SetLevelImage(texture_ref_.get(), | 1644 manager_->SetLevelImage(texture_ref_.get(), GL_TEXTURE_2D, 1, image.get()); |
| 1646 GL_TEXTURE_2D, | |
| 1647 1, | |
| 1648 gfx::GLImage::CreateGLImage(0).get()); | |
| 1649 // Image should be reset when SetLevelInfo is called. | 1645 // Image should be reset when SetLevelInfo is called. |
| 1650 manager_->SetLevelInfo(texture_ref_.get(), | 1646 manager_->SetLevelInfo(texture_ref_.get(), |
| 1651 GL_TEXTURE_2D, | 1647 GL_TEXTURE_2D, |
| 1652 1, | 1648 1, |
| 1653 GL_RGBA, | 1649 GL_RGBA, |
| 1654 2, | 1650 2, |
| 1655 2, | 1651 2, |
| 1656 1, | 1652 1, |
| 1657 0, | 1653 0, |
| 1658 GL_RGBA, | 1654 GL_RGBA, |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2086 EXPECT_EQ(produced_texture, restored_texture->texture()); | 2082 EXPECT_EQ(produced_texture, restored_texture->texture()); |
| 2087 EXPECT_EQ(level0, | 2083 EXPECT_EQ(level0, |
| 2088 GetLevelInfo(restored_texture.get(), GL_TEXTURE_EXTERNAL_OES, 0)); | 2084 GetLevelInfo(restored_texture.get(), GL_TEXTURE_EXTERNAL_OES, 0)); |
| 2089 } | 2085 } |
| 2090 | 2086 |
| 2091 TEST_P(ProduceConsumeTextureTest, ProduceConsumeTextureWithImage) { | 2087 TEST_P(ProduceConsumeTextureTest, ProduceConsumeTextureWithImage) { |
| 2092 GLenum target = GetParam(); | 2088 GLenum target = GetParam(); |
| 2093 manager_->SetTarget(texture_ref_.get(), target); | 2089 manager_->SetTarget(texture_ref_.get(), target); |
| 2094 Texture* texture = texture_ref_->texture(); | 2090 Texture* texture = texture_ref_->texture(); |
| 2095 EXPECT_EQ(static_cast<GLenum>(target), texture->target()); | 2091 EXPECT_EQ(static_cast<GLenum>(target), texture->target()); |
| 2096 scoped_refptr<gfx::GLImage> image(gfx::GLImage::CreateGLImage(0)); | 2092 scoped_refptr<gfx::GLImage> image(new gfx::GLImageStub); |
| 2097 manager_->SetLevelInfo(texture_ref_.get(), | 2093 manager_->SetLevelInfo(texture_ref_.get(), |
| 2098 target, | 2094 target, |
| 2099 0, | 2095 0, |
| 2100 GL_RGBA, | 2096 GL_RGBA, |
| 2101 0, | 2097 0, |
| 2102 0, | 2098 0, |
| 2103 1, | 2099 1, |
| 2104 0, | 2100 0, |
| 2105 GL_RGBA, | 2101 GL_RGBA, |
| 2106 GL_UNSIGNED_BYTE, | 2102 GL_UNSIGNED_BYTE, |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2467 2, | 2463 2, |
| 2468 1, | 2464 1, |
| 2469 0, | 2465 0, |
| 2470 GL_RGBA, | 2466 GL_RGBA, |
| 2471 GL_UNSIGNED_BYTE, | 2467 GL_UNSIGNED_BYTE, |
| 2472 true); | 2468 true); |
| 2473 EXPECT_FALSE(ref1->texture()->HasImages()); | 2469 EXPECT_FALSE(ref1->texture()->HasImages()); |
| 2474 EXPECT_FALSE(ref2->texture()->HasImages()); | 2470 EXPECT_FALSE(ref2->texture()->HasImages()); |
| 2475 EXPECT_FALSE(texture_manager1_->HaveImages()); | 2471 EXPECT_FALSE(texture_manager1_->HaveImages()); |
| 2476 EXPECT_FALSE(texture_manager2_->HaveImages()); | 2472 EXPECT_FALSE(texture_manager2_->HaveImages()); |
| 2477 texture_manager1_->SetLevelImage(ref1.get(), | 2473 scoped_refptr<gfx::GLImage> image1(new gfx::GLImageStub); |
| 2478 GL_TEXTURE_2D, | 2474 texture_manager1_->SetLevelImage(ref1.get(), GL_TEXTURE_2D, 1, image1.get()); |
| 2479 1, | |
| 2480 gfx::GLImage::CreateGLImage(0).get()); | |
| 2481 EXPECT_TRUE(ref1->texture()->HasImages()); | 2475 EXPECT_TRUE(ref1->texture()->HasImages()); |
| 2482 EXPECT_TRUE(ref2->texture()->HasImages()); | 2476 EXPECT_TRUE(ref2->texture()->HasImages()); |
| 2483 EXPECT_TRUE(texture_manager1_->HaveImages()); | 2477 EXPECT_TRUE(texture_manager1_->HaveImages()); |
| 2484 EXPECT_TRUE(texture_manager2_->HaveImages()); | 2478 EXPECT_TRUE(texture_manager2_->HaveImages()); |
| 2485 texture_manager1_->SetLevelImage(ref1.get(), | 2479 scoped_refptr<gfx::GLImage> image2(new gfx::GLImageStub); |
| 2486 GL_TEXTURE_2D, | 2480 texture_manager1_->SetLevelImage(ref1.get(), GL_TEXTURE_2D, 1, image2.get()); |
| 2487 1, | |
| 2488 gfx::GLImage::CreateGLImage(0).get()); | |
| 2489 EXPECT_TRUE(ref1->texture()->HasImages()); | 2481 EXPECT_TRUE(ref1->texture()->HasImages()); |
| 2490 EXPECT_TRUE(ref2->texture()->HasImages()); | 2482 EXPECT_TRUE(ref2->texture()->HasImages()); |
| 2491 EXPECT_TRUE(texture_manager1_->HaveImages()); | 2483 EXPECT_TRUE(texture_manager1_->HaveImages()); |
| 2492 EXPECT_TRUE(texture_manager2_->HaveImages()); | 2484 EXPECT_TRUE(texture_manager2_->HaveImages()); |
| 2493 texture_manager1_->SetLevelInfo(ref1.get(), | 2485 texture_manager1_->SetLevelInfo(ref1.get(), |
| 2494 GL_TEXTURE_2D, | 2486 GL_TEXTURE_2D, |
| 2495 1, | 2487 1, |
| 2496 GL_RGBA, | 2488 GL_RGBA, |
| 2497 2, | 2489 2, |
| 2498 2, | 2490 2, |
| 2499 1, | 2491 1, |
| 2500 0, | 2492 0, |
| 2501 GL_RGBA, | 2493 GL_RGBA, |
| 2502 GL_UNSIGNED_BYTE, | 2494 GL_UNSIGNED_BYTE, |
| 2503 true); | 2495 true); |
| 2504 EXPECT_FALSE(ref1->texture()->HasImages()); | 2496 EXPECT_FALSE(ref1->texture()->HasImages()); |
| 2505 EXPECT_FALSE(ref2->texture()->HasImages()); | 2497 EXPECT_FALSE(ref2->texture()->HasImages()); |
| 2506 EXPECT_FALSE(texture_manager1_->HaveImages()); | 2498 EXPECT_FALSE(texture_manager1_->HaveImages()); |
| 2507 EXPECT_FALSE(texture_manager1_->HaveImages()); | 2499 EXPECT_FALSE(texture_manager1_->HaveImages()); |
| 2508 | 2500 |
| 2509 EXPECT_CALL(*gl_, DeleteTextures(1, _)) | 2501 EXPECT_CALL(*gl_, DeleteTextures(1, _)) |
| 2510 .Times(1) | 2502 .Times(1) |
| 2511 .RetiresOnSaturation(); | 2503 .RetiresOnSaturation(); |
| 2512 texture_manager1_->RemoveTexture(10); | 2504 texture_manager1_->RemoveTexture(10); |
| 2513 texture_manager2_->RemoveTexture(20); | 2505 texture_manager2_->RemoveTexture(20); |
| 2514 } | 2506 } |
| 2515 | 2507 |
| 2516 } // namespace gles2 | 2508 } // namespace gles2 |
| 2517 } // namespace gpu | 2509 } // namespace gpu |
| OLD | NEW |