| 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/error_state_mock.h" | 8 #include "gpu/command_buffer/service/error_state_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/framebuffer_manager.h" | 10 #include "gpu/command_buffer/service/framebuffer_manager.h" |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 TEST_F(TextureTest, SetTargetTextureExternalOES) { | 462 TEST_F(TextureTest, SetTargetTextureExternalOES) { |
| 463 Texture* texture = texture_ref_->texture(); | 463 Texture* texture = texture_ref_->texture(); |
| 464 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES); | 464 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES); |
| 465 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); | 465 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
| 466 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); | 466 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
| 467 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); | 467 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
| 468 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); | 468 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); |
| 469 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 469 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 470 EXPECT_TRUE(texture->SafeToRenderFrom()); | 470 EXPECT_TRUE(texture->SafeToRenderFrom()); |
| 471 EXPECT_TRUE(texture->IsImmutable()); | 471 EXPECT_TRUE(texture->IsImmutable()); |
| 472 manager_->SetStreamTexture(texture_ref_.get(), true); | 472 manager_->SetLevelInfo(texture_ref_.get(), |
| 473 GL_TEXTURE_EXTERNAL_OES, |
| 474 0, |
| 475 GL_RGBA, |
| 476 0, |
| 477 0, |
| 478 1, |
| 479 0, |
| 480 GL_RGBA, |
| 481 GL_UNSIGNED_BYTE, |
| 482 true); |
| 483 manager_->SetLevelImage(texture_ref_.get(), |
| 484 GL_TEXTURE_EXTERNAL_OES, |
| 485 0, |
| 486 gfx::GLImage::CreateGLImage(0).get()); |
| 473 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); | 487 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
| 488 EXPECT_TRUE(texture->IsImmutable()); |
| 474 } | 489 } |
| 475 | 490 |
| 476 TEST_F(TextureTest, ZeroSizeCanNotRender) { | 491 TEST_F(TextureTest, ZeroSizeCanNotRender) { |
| 477 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); | 492 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
| 478 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); | 493 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
| 479 manager_->SetLevelInfo(texture_ref_.get(), | 494 manager_->SetLevelInfo(texture_ref_.get(), |
| 480 GL_TEXTURE_2D, | 495 GL_TEXTURE_2D, |
| 481 0, | 496 0, |
| 482 GL_RGBA, | 497 GL_RGBA, |
| 483 1, | 498 1, |
| (...skipping 1316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1800 // Check putting it back genenerates the same signature | 1815 // Check putting it back genenerates the same signature |
| 1801 SetParameter(texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR); | 1816 SetParameter(texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR); |
| 1802 signature2.clear(); | 1817 signature2.clear(); |
| 1803 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); | 1818 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
| 1804 EXPECT_EQ(signature1, signature2); | 1819 EXPECT_EQ(signature1, signature2); |
| 1805 | 1820 |
| 1806 // Check the set was acutally getting different signatures. | 1821 // Check the set was acutally getting different signatures. |
| 1807 EXPECT_EQ(11u, string_set.size()); | 1822 EXPECT_EQ(11u, string_set.size()); |
| 1808 } | 1823 } |
| 1809 | 1824 |
| 1810 class ProduceConsumeTextureTest : public TextureTest { | 1825 class ProduceConsumeTextureTest : public TextureTest, |
| 1826 public ::testing::WithParamInterface<GLenum> { |
| 1811 public: | 1827 public: |
| 1812 virtual void SetUp() { | 1828 virtual void SetUp() { |
| 1813 TextureTest::SetUpBase(NULL, "GL_OES_EGL_image_external"); | 1829 TextureTest::SetUpBase(NULL, "GL_OES_EGL_image_external"); |
| 1814 manager_->CreateTexture(kClient2Id, kService2Id); | 1830 manager_->CreateTexture(kClient2Id, kService2Id); |
| 1815 texture2_ = manager_->GetTexture(kClient2Id); | 1831 texture2_ = manager_->GetTexture(kClient2Id); |
| 1816 | 1832 |
| 1817 EXPECT_CALL(*decoder_.get(), GetErrorState()) | 1833 EXPECT_CALL(*decoder_.get(), GetErrorState()) |
| 1818 .WillRepeatedly(Return(error_state_.get())); | 1834 .WillRepeatedly(Return(error_state_.get())); |
| 1819 } | 1835 } |
| 1820 | 1836 |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1995 | 2011 |
| 1996 // See if we can clear the previously uncleared level now. | 2012 // See if we can clear the previously uncleared level now. |
| 1997 EXPECT_EQ(level0, | 2013 EXPECT_EQ(level0, |
| 1998 GetLevelInfo(restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); | 2014 GetLevelInfo(restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); |
| 1999 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) | 2015 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) |
| 2000 .WillRepeatedly(Return(true)); | 2016 .WillRepeatedly(Return(true)); |
| 2001 EXPECT_TRUE(manager_->ClearTextureLevel( | 2017 EXPECT_TRUE(manager_->ClearTextureLevel( |
| 2002 decoder_.get(), restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); | 2018 decoder_.get(), restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); |
| 2003 } | 2019 } |
| 2004 | 2020 |
| 2005 TEST_F(ProduceConsumeTextureTest, ProduceConsumeStreamTexture) { | 2021 TEST_P(ProduceConsumeTextureTest, ProduceConsumeTextureWithImage) { |
| 2006 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES); | 2022 GLenum target = GetParam(); |
| 2023 manager_->SetTarget(texture_ref_.get(), target); |
| 2007 Texture* texture = texture_ref_->texture(); | 2024 Texture* texture = texture_ref_->texture(); |
| 2008 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); | 2025 EXPECT_EQ(static_cast<GLenum>(target), texture->target()); |
| 2009 manager_->SetStreamTexture(texture_ref_.get(), true); | 2026 scoped_refptr<gfx::GLImage> image(gfx::GLImage::CreateGLImage(0)); |
| 2027 manager_->SetLevelInfo(texture_ref_.get(), |
| 2028 target, |
| 2029 0, |
| 2030 GL_RGBA, |
| 2031 0, |
| 2032 0, |
| 2033 1, |
| 2034 0, |
| 2035 GL_RGBA, |
| 2036 GL_UNSIGNED_BYTE, |
| 2037 true); |
| 2038 manager_->SetLevelImage(texture_ref_.get(), |
| 2039 target, |
| 2040 0, |
| 2041 image); |
| 2010 GLuint service_id = texture->service_id(); | 2042 GLuint service_id = texture->service_id(); |
| 2011 Texture* produced_texture = Produce(texture_ref_.get()); | 2043 Texture* produced_texture = Produce(texture_ref_.get()); |
| 2012 EXPECT_TRUE(texture->IsStreamTexture()); | |
| 2013 | 2044 |
| 2014 GLuint client_id = texture2_->client_id(); | 2045 GLuint client_id = texture2_->client_id(); |
| 2015 manager_->RemoveTexture(client_id); | 2046 manager_->RemoveTexture(client_id); |
| 2016 Consume(client_id, produced_texture); | 2047 Consume(client_id, produced_texture); |
| 2017 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); | 2048 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); |
| 2018 EXPECT_EQ(produced_texture, restored_texture->texture()); | 2049 EXPECT_EQ(produced_texture, restored_texture->texture()); |
| 2019 EXPECT_TRUE(restored_texture->texture()->IsStreamTexture()); | |
| 2020 EXPECT_TRUE(restored_texture->texture()->IsImmutable()); | |
| 2021 EXPECT_EQ(service_id, restored_texture->service_id()); | 2050 EXPECT_EQ(service_id, restored_texture->service_id()); |
| 2051 EXPECT_EQ(image.get(), restored_texture->texture()->GetLevelImage(target, 0)); |
| 2022 } | 2052 } |
| 2023 | 2053 |
| 2054 static const GLenum kTextureTargets[] = { |
| 2055 GL_TEXTURE_2D, |
| 2056 GL_TEXTURE_EXTERNAL_OES, |
| 2057 GL_TEXTURE_RECTANGLE_ARB, |
| 2058 }; |
| 2059 |
| 2060 INSTANTIATE_TEST_CASE_P(Target, |
| 2061 ProduceConsumeTextureTest, |
| 2062 ::testing::ValuesIn(kTextureTargets)); |
| 2063 |
| 2024 TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) { | 2064 TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) { |
| 2025 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); | 2065 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); |
| 2026 Texture* texture = texture_ref_->texture(); | 2066 Texture* texture = texture_ref_->texture(); |
| 2027 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); | 2067 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); |
| 2028 LevelInfo face0(GL_TEXTURE_CUBE_MAP_POSITIVE_X, | 2068 LevelInfo face0(GL_TEXTURE_CUBE_MAP_POSITIVE_X, |
| 2029 GL_RGBA, | 2069 GL_RGBA, |
| 2030 1, | 2070 1, |
| 2031 1, | 2071 1, |
| 2032 1, | 2072 1, |
| 2033 0, | 2073 0, |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2344 .Times(1) | 2384 .Times(1) |
| 2345 .RetiresOnSaturation(); | 2385 .RetiresOnSaturation(); |
| 2346 ref2 = NULL; | 2386 ref2 = NULL; |
| 2347 texture_manager2_->RemoveTexture(20); | 2387 texture_manager2_->RemoveTexture(20); |
| 2348 EXPECT_EQ(initial_memory2, | 2388 EXPECT_EQ(initial_memory2, |
| 2349 memory_tracker2_->GetSize(MemoryTracker::kUnmanaged)); | 2389 memory_tracker2_->GetSize(MemoryTracker::kUnmanaged)); |
| 2350 } | 2390 } |
| 2351 | 2391 |
| 2352 } // namespace gles2 | 2392 } // namespace gles2 |
| 2353 } // namespace gpu | 2393 } // namespace gpu |
| OLD | NEW |