Index: gpu/command_buffer/service/texture_manager_unittest.cc |
diff --git a/gpu/command_buffer/service/texture_manager_unittest.cc b/gpu/command_buffer/service/texture_manager_unittest.cc |
index b5a0e616abb77329ce8154955d9536fe0cdc353d..758f421150bd6ca35df830080cdfec1a2d5dfc03 100644 |
--- a/gpu/command_buffer/service/texture_manager_unittest.cc |
+++ b/gpu/command_buffer/service/texture_manager_unittest.cc |
@@ -110,7 +110,7 @@ TEST_F(TextureManagerTest, Basic) { |
manager_->CreateTexture(kClient1Id, kService1Id); |
// Check texture got created. |
scoped_refptr<TextureRef> texture = manager_->GetTexture(kClient1Id); |
- ASSERT_TRUE(texture != NULL); |
+ ASSERT_TRUE(texture.get() != NULL); |
EXPECT_EQ(kService1Id, texture->service_id()); |
EXPECT_EQ(kClient1Id, texture->client_id()); |
EXPECT_EQ(texture->texture(), manager_->GetTextureForServiceId( |
@@ -444,21 +444,20 @@ class TextureMemoryTrackerTest : public TextureTestBase { |
scoped_refptr<MockMemoryTracker> mock_memory_tracker_; |
}; |
-#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \ |
- EXPECT_CALL(*mock_memory_tracker_, \ |
- TrackMemoryAllocatedChange(old_size, new_size, pool)) \ |
- .Times(1) \ |
- .RetiresOnSaturation() \ |
+#define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \ |
+ EXPECT_CALL(*mock_memory_tracker_.get(), \ |
+ TrackMemoryAllocatedChange(old_size, new_size, pool)) \ |
+ .Times(1).RetiresOnSaturation() |
TEST_F(TextureTest, Basic) { |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(0u, texture->target()); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_EQ(0, texture->num_uncleared_mips()); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(texture->IsImmutable()); |
EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR), |
@@ -473,75 +472,139 @@ TEST_F(TextureTest, Basic) { |
TEST_F(TextureTest, SetTargetTexture2D) { |
Texture* texture = texture_ref_->texture(); |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(texture->IsImmutable()); |
} |
TEST_F(TextureTest, SetTargetTextureExternalOES) { |
Texture* texture = texture_ref_->texture(); |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_EXTERNAL_OES); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(texture->IsImmutable()); |
- manager_->SetStreamTexture(texture_ref_, true); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ manager_->SetStreamTexture(texture_ref_.get(), true); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
} |
TEST_F(TextureTest, ZeroSizeCanNotRender) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 1, |
+ 1, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 0, |
+ 0, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
} |
TEST_F(TextureTest, EstimatedSize) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_EQ(8u * 4u * 4u, texture_ref_->texture()->estimated_size()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 2, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 2, |
+ GL_RGBA, |
+ 8, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_EQ(8u * 4u * 4u * 2u, texture_ref_->texture()->estimated_size()); |
} |
TEST_F(TextureMemoryTrackerTest, EstimatedSize) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 256, MemoryTracker::kUnmanaged); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 2, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 2, |
+ GL_RGBA, |
+ 8, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
// Add expectation for texture deletion. |
EXPECT_MEMORY_ALLOCATION_CHANGE(256, 0, MemoryTracker::kUnmanaged); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); |
} |
TEST_F(TextureMemoryTrackerTest, SetParameterPool) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kManaged); |
- SetParameter( |
- texture_ref_, GL_TEXTURE_POOL_CHROMIUM, GL_TEXTURE_POOL_MANAGED_CHROMIUM, |
- GL_NO_ERROR); |
+ SetParameter(texture_ref_.get(), |
+ GL_TEXTURE_POOL_CHROMIUM, |
+ GL_TEXTURE_POOL_MANAGED_CHROMIUM, |
+ GL_NO_ERROR); |
// Add expectation for texture deletion. |
EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kManaged); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); |
@@ -549,119 +612,206 @@ TEST_F(TextureMemoryTrackerTest, SetParameterPool) { |
} |
TEST_F(TextureTest, POT2D) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
// Check Setting level 0 to POT |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_EQ(0, texture->num_uncleared_mips()); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
// Set filters to something that will work with a single mip. |
- SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
// Set them back. |
- SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, |
- GL_LINEAR_MIPMAP_LINEAR, GL_NO_ERROR); |
+ SetParameter(texture_ref_.get(), |
+ GL_TEXTURE_MIN_FILTER, |
+ GL_LINEAR_MIPMAP_LINEAR, |
+ GL_NO_ERROR); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
// Make mips. |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
// Change a mip. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
// Set a level past the number of mips that would get generated. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
- EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 3, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
// Make mips. |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
} |
TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64, MemoryTracker::kUnmanaged); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0, MemoryTracker::kUnmanaged); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84, MemoryTracker::kUnmanaged); |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0, MemoryTracker::kUnmanaged); |
EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); |
} |
TEST_F(TextureTest, UnusedMips) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
// Set level zero to large size. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
// Set level zero to large smaller (levels unused mips) |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
// Set an unused level to some size |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 4, |
+ GL_RGBA, |
+ 16, |
+ 16, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
} |
TEST_F(TextureTest, NPOT2D) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
// Check Setting level 0 to NPOT |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 5, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- SetParameter(texture_ref_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
// Change it to POT. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
- EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
} |
@@ -695,95 +845,168 @@ TEST_F(TextureTest, NPOT2DNPOTOK) { |
} |
TEST_F(TextureTest, POTCubeMap) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_CUBE_MAP); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); |
// Check Setting level 0 each face to POT |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_POSITIVE_X, |
- 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_NEGATIVE_X, |
- 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_POSITIVE_Y, |
- 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, |
- 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_POSITIVE_Z, |
- 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, |
- 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); |
- EXPECT_FALSE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
// Make mips. |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_TRUE(manager_->CanRender(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
// Change a mip. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, |
- 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); |
EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
- EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
// Set a level past the number of mips that would get generated. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, |
- 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
- EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, |
+ 3, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); |
// Make mips. |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); |
} |
TEST_F(TextureTest, GetLevelSize) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 5, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
GLsizei width = -1; |
GLsizei height = -1; |
Texture* texture = texture_ref_->texture(); |
@@ -800,9 +1023,18 @@ TEST_F(TextureTest, GetLevelSize) { |
} |
TEST_F(TextureTest, GetLevelType) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 5, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
GLenum type = -1; |
GLenum format = -1; |
Texture* texture = texture_ref_->texture(); |
@@ -819,9 +1051,18 @@ TEST_F(TextureTest, GetLevelType) { |
} |
TEST_F(TextureTest, ValidForTexture) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 5, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
// Check bad face. |
Texture* texture = texture_ref_->texture(); |
EXPECT_FALSE(texture->ValidForTexture( |
@@ -1000,54 +1241,99 @@ TEST_F(TextureTest, SafeUnsafe) { |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(0, texture->num_uncleared_mips()); |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(1, texture->num_uncleared_mips()); |
- manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 0, true); |
+ manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 0, true); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(0, texture->num_uncleared_mips()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(1, texture->num_uncleared_mips()); |
- manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 1, true); |
+ manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 1, true); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(0, texture->num_uncleared_mips()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(2, texture->num_uncleared_mips()); |
- manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 0, true); |
+ manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 0, true); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(1, texture->num_uncleared_mips()); |
- manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 1, true); |
+ manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 1, true); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(0, texture->num_uncleared_mips()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(1, texture->num_uncleared_mips()); |
- manager_->MarkMipmapsGenerated(texture_ref_); |
+ manager_->MarkMipmapsGenerated(texture_ref_.get()); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
@@ -1057,18 +1343,36 @@ TEST_F(TextureTest, SafeUnsafe) { |
scoped_refptr<TextureRef> texture_ref2( |
manager_->GetTexture(kClient2Id)); |
ASSERT_TRUE(texture_ref2.get() != NULL); |
- manager_->SetTarget(texture_ref2, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref2.get(), GL_TEXTURE_2D); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
Texture* texture2 = texture_ref2->texture(); |
EXPECT_EQ(0, texture2->num_uncleared_mips()); |
- manager_->SetLevelInfo(texture_ref2, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref2.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(0, texture2->num_uncleared_mips()); |
- manager_->SetLevelInfo(texture_ref2, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref2.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(1, texture2->num_uncleared_mips()); |
@@ -1077,26 +1381,53 @@ TEST_F(TextureTest, SafeUnsafe) { |
scoped_refptr<TextureRef> texture_ref3( |
manager_->GetTexture(kClient3Id)); |
ASSERT_TRUE(texture_ref3.get() != NULL); |
- manager_->SetTarget(texture_ref3, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref3, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetTarget(texture_ref3.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref3.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
Texture* texture3 = texture_ref3->texture(); |
EXPECT_EQ(1, texture3->num_uncleared_mips()); |
- manager_->SetLevelCleared(texture_ref2, GL_TEXTURE_2D, 0, true); |
+ manager_->SetLevelCleared(texture_ref2.get(), GL_TEXTURE_2D, 0, true); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(0, texture2->num_uncleared_mips()); |
- manager_->SetLevelCleared(texture_ref3, GL_TEXTURE_2D, 0, true); |
+ manager_->SetLevelCleared(texture_ref3.get(), GL_TEXTURE_2D, 0, true); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(0, texture3->num_uncleared_mips()); |
- manager_->SetLevelInfo(texture_ref2, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
- manager_->SetLevelInfo(texture_ref3, |
- GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref2.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
+ manager_->SetLevelInfo(texture_ref3.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 8, |
+ 8, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(1, texture2->num_uncleared_mips()); |
@@ -1124,35 +1455,73 @@ TEST_F(TextureTest, SafeUnsafe) { |
TEST_F(TextureTest, ClearTexture) { |
EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) |
.WillRepeatedly(Return(true)); |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
Texture* texture = texture_ref_->texture(); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(2, texture->num_uncleared_mips()); |
- manager_->ClearRenderableLevels(decoder_.get(), texture_ref_); |
+ manager_->ClearRenderableLevels(decoder_.get(), texture_ref_.get()); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(0, texture->num_uncleared_mips()); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(2, texture->num_uncleared_mips()); |
- manager_->ClearTextureLevel(decoder_.get(), texture_ref_, GL_TEXTURE_2D, 0); |
+ manager_->ClearTextureLevel( |
+ decoder_.get(), texture_ref_.get(), GL_TEXTURE_2D, 0); |
EXPECT_FALSE(texture->SafeToRenderFrom()); |
EXPECT_TRUE(manager_->HaveUnsafeTextures()); |
EXPECT_TRUE(manager_->HaveUnclearedMips()); |
EXPECT_EQ(1, texture->num_uncleared_mips()); |
- manager_->ClearTextureLevel(decoder_.get(), texture_ref_, GL_TEXTURE_2D, 1); |
+ manager_->ClearTextureLevel( |
+ decoder_.get(), texture_ref_.get(), GL_TEXTURE_2D, 1); |
EXPECT_TRUE(texture->SafeToRenderFrom()); |
EXPECT_FALSE(manager_->HaveUnsafeTextures()); |
EXPECT_FALSE(manager_->HaveUnclearedMips()); |
@@ -1163,25 +1532,43 @@ TEST_F(TextureTest, UseDeletedTexture) { |
static const GLuint kClient2Id = 2; |
static const GLuint kService2Id = 12; |
// Make the default texture renderable |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 1, |
+ 1, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
// Make a new texture |
manager_->CreateTexture(kClient2Id, kService2Id); |
scoped_refptr<TextureRef> texture_ref( |
manager_->GetTexture(kClient2Id)); |
- manager_->SetTarget(texture_ref, GL_TEXTURE_2D); |
- EXPECT_FALSE(manager_->CanRender(texture_ref)); |
+ manager_->SetTarget(texture_ref.get(), GL_TEXTURE_2D); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
// Remove it. |
manager_->RemoveTexture(kClient2Id); |
- EXPECT_FALSE(manager_->CanRender(texture_ref)); |
+ EXPECT_FALSE(manager_->CanRender(texture_ref.get())); |
EXPECT_TRUE(manager_->HaveUnrenderableTextures()); |
// Check that we can still manipulate it and it effects the manager. |
- manager_->SetLevelInfo(texture_ref, |
- GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
- EXPECT_TRUE(manager_->CanRender(texture_ref)); |
+ manager_->SetLevelInfo(texture_ref.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 1, |
+ 1, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
+ EXPECT_TRUE(manager_->CanRender(texture_ref.get())); |
EXPECT_FALSE(manager_->HaveUnrenderableTextures()); |
EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) |
.Times(1) |
@@ -1190,23 +1577,41 @@ TEST_F(TextureTest, UseDeletedTexture) { |
} |
TEST_F(TextureTest, GetLevelImage) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
Texture* texture = texture_ref_->texture(); |
EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); |
// Set image. |
- manager_->SetLevelImage(texture_ref_, |
- GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0)); |
+ manager_->SetLevelImage( |
+ texture_ref_.get(), GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0)); |
EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); |
// Remove it. |
- manager_->SetLevelImage(texture_ref_, GL_TEXTURE_2D, 1, NULL); |
+ manager_->SetLevelImage(texture_ref_.get(), GL_TEXTURE_2D, 1, NULL); |
EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); |
- manager_->SetLevelImage(texture_ref_, |
- GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0)); |
+ manager_->SetLevelImage( |
+ texture_ref_.get(), GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0)); |
// Image should be reset when SetLevelInfo is called. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); |
} |
@@ -1221,105 +1626,200 @@ bool InSet(std::set<std::string>* string_set, const std::string& str) { |
} // anonymous namespace |
TEST_F(TextureTest, AddToSignature) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
std::string signature1; |
std::string signature2; |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature1); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature1); |
std::set<std::string> string_set; |
EXPECT_FALSE(InSet(&string_set, signature1)); |
// check changing 1 thing makes a different signature. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 4, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 4, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
// check putting it back makes the same signature. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_EQ(signature1, signature2); |
// Check setting cleared status does not change signature. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_EQ(signature1, signature2); |
// Check changing other settings changes signature. |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 4, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 2, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 1, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGB, |
+ GL_UNSIGNED_BYTE, |
+ false); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_FLOAT, |
- false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_FLOAT, |
+ false); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
// put it back |
- manager_->SetLevelInfo(texture_ref_, |
- GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
- false); |
+ manager_->SetLevelInfo(texture_ref_.get(), |
+ GL_TEXTURE_2D, |
+ 1, |
+ GL_RGBA, |
+ 2, |
+ 2, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_EQ(signature1, signature2); |
// check changing parameters changes signature. |
- SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
- SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, |
- GL_NEAREST_MIPMAP_LINEAR, GL_NO_ERROR); |
- SetParameter(texture_ref_, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); |
+ SetParameter(texture_ref_.get(), |
+ GL_TEXTURE_MIN_FILTER, |
+ GL_NEAREST_MIPMAP_LINEAR, |
+ GL_NO_ERROR); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
- SetParameter(texture_ref_, GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR); |
- SetParameter(texture_ref_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
- SetParameter(texture_ref_, GL_TEXTURE_WRAP_S, GL_REPEAT, GL_NO_ERROR); |
- SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
+ SetParameter(texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_REPEAT, GL_NO_ERROR); |
+ SetParameter( |
+ texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_FALSE(InSet(&string_set, signature2)); |
// Check putting it back genenerates the same signature |
- SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR); |
+ SetParameter(texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR); |
signature2.clear(); |
- manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); |
+ manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2); |
EXPECT_EQ(signature1, signature2); |
// Check the set was acutally getting different signatures. |
@@ -1450,27 +1950,27 @@ const GLuint ProduceConsumeTextureTest::kClient2Id = 2; |
const GLuint ProduceConsumeTextureTest::kService2Id = 12; |
TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); |
LevelInfo level0( |
GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, true); |
- SetLevelInfo(texture_ref_, 0, level0); |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); |
+ SetLevelInfo(texture_ref_.get(), 0, level0); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
LevelInfo level1 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1); |
LevelInfo level2 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2); |
- Texture* produced_texture = Produce(texture_ref_); |
+ Texture* produced_texture = Produce(texture_ref_.get()); |
EXPECT_EQ(produced_texture, texture); |
// Make this texture bigger with more levels, and make sure they get |
// clobbered correctly during Consume(). |
- manager_->SetTarget(texture2_, GL_TEXTURE_2D); |
+ manager_->SetTarget(texture2_.get(), GL_TEXTURE_2D); |
SetLevelInfo( |
- texture2_, |
+ texture2_.get(), |
0, |
LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, 0, GL_UNSIGNED_BYTE, false)); |
- EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_)); |
+ EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_.get())); |
texture = texture2_->texture(); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size()); |
@@ -1494,14 +1994,14 @@ TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) { |
} |
TEST_F(ProduceConsumeTextureTest, ProduceConsumeClearRectangle) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_RECTANGLE_ARB); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_RECTANGLE_ARB); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), texture->target()); |
LevelInfo level0( |
GL_TEXTURE_RECTANGLE_ARB, GL_RGBA, 1, 1, 1, 0, GL_UNSIGNED_BYTE, false); |
- SetLevelInfo(texture_ref_, 0, level0); |
+ SetLevelInfo(texture_ref_.get(), 0, level0); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
- Texture* produced_texture = Produce(texture_ref_); |
+ Texture* produced_texture = Produce(texture_ref_.get()); |
EXPECT_EQ(produced_texture, texture); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), |
produced_texture->target()); |
@@ -1518,16 +2018,16 @@ TEST_F(ProduceConsumeTextureTest, ProduceConsumeClearRectangle) { |
EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) |
.WillRepeatedly(Return(true)); |
EXPECT_TRUE(manager_->ClearTextureLevel( |
- decoder_.get(), restored_texture, GL_TEXTURE_RECTANGLE_ARB, 0)); |
+ decoder_.get(), restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); |
} |
TEST_F(ProduceConsumeTextureTest, ProduceConsumeStreamTexture) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_EXTERNAL_OES); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); |
- manager_->SetStreamTexture(texture_ref_, true); |
+ manager_->SetStreamTexture(texture_ref_.get(), true); |
GLuint service_id = texture->service_id(); |
- Texture* produced_texture = Produce(texture_ref_); |
+ Texture* produced_texture = Produce(texture_ref_.get()); |
EXPECT_TRUE(texture->IsStreamTexture()); |
GLuint client_id = texture2_->client_id(); |
@@ -1541,7 +2041,7 @@ TEST_F(ProduceConsumeTextureTest, ProduceConsumeStreamTexture) { |
} |
TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) { |
- manager_->SetTarget(texture_ref_, GL_TEXTURE_CUBE_MAP); |
+ manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); |
Texture* texture = texture_ref_->texture(); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); |
LevelInfo face0(GL_TEXTURE_CUBE_MAP_POSITIVE_X, |
@@ -1560,10 +2060,10 @@ TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) { |
0, |
GL_UNSIGNED_BYTE, |
true); |
- SetLevelInfo(texture_ref_, 0, face0); |
- SetLevelInfo(texture_ref_, 0, face5); |
+ SetLevelInfo(texture_ref_.get(), 0, face0); |
+ SetLevelInfo(texture_ref_.get(), 0, face5); |
EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); |
- Texture* produced_texture = Produce(texture_ref_); |
+ Texture* produced_texture = Produce(texture_ref_.get()); |
EXPECT_EQ(produced_texture, texture); |
GLuint client_id = texture2_->client_id(); |
@@ -1571,10 +2071,12 @@ TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) { |
Consume(client_id, produced_texture); |
scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); |
EXPECT_EQ(produced_texture, restored_texture->texture()); |
- EXPECT_EQ(face0, |
- GetLevelInfo(restored_texture, GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0)); |
- EXPECT_EQ(face5, |
- GetLevelInfo(restored_texture, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0)); |
+ EXPECT_EQ( |
+ face0, |
+ GetLevelInfo(restored_texture.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0)); |
+ EXPECT_EQ( |
+ face5, |
+ GetLevelInfo(restored_texture.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0)); |
} |
class CountingMemoryTracker : public MemoryTracker { |
@@ -1621,15 +2123,17 @@ class SharedTextureTest : public testing::Test { |
::gfx::GLInterface::SetGLInterface(gl_.get()); |
memory_tracker1_ = new CountingMemoryTracker; |
- texture_manager1_.reset(new TextureManager( |
- memory_tracker1_, feature_info_.get(), |
- TextureManagerTest::kMaxTextureSize, |
- TextureManagerTest::kMaxCubeMapTextureSize)); |
+ texture_manager1_.reset( |
+ new TextureManager(memory_tracker1_.get(), |
+ feature_info_.get(), |
+ TextureManagerTest::kMaxTextureSize, |
+ TextureManagerTest::kMaxCubeMapTextureSize)); |
memory_tracker2_ = new CountingMemoryTracker; |
- texture_manager2_.reset(new TextureManager( |
- memory_tracker2_, feature_info_.get(), |
- TextureManagerTest::kMaxTextureSize, |
- TextureManagerTest::kMaxCubeMapTextureSize)); |
+ texture_manager2_.reset( |
+ new TextureManager(memory_tracker2_.get(), |
+ feature_info_.get(), |
+ TextureManagerTest::kMaxTextureSize, |
+ TextureManagerTest::kMaxCubeMapTextureSize)); |
TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); |
texture_manager1_->Initialize(); |
TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); |
@@ -1696,7 +2200,7 @@ TEST_F(SharedTextureTest, TextureSafetyAccounting) { |
// Make texture renderable but uncleared on one texture manager, should affect |
// other one. |
- texture_manager1_->SetTarget(ref1, GL_TEXTURE_2D); |
+ texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D); |
EXPECT_TRUE(texture_manager1_->HaveUnrenderableTextures()); |
EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); |
EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); |
@@ -1704,8 +2208,17 @@ TEST_F(SharedTextureTest, TextureSafetyAccounting) { |
EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); |
EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); |
- texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
- GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ texture_manager1_->SetLevelInfo(ref1.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 1, |
+ 1, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures()); |
EXPECT_TRUE(texture_manager1_->HaveUnsafeTextures()); |
EXPECT_TRUE(texture_manager1_->HaveUnclearedMips()); |
@@ -1714,7 +2227,7 @@ TEST_F(SharedTextureTest, TextureSafetyAccounting) { |
EXPECT_TRUE(texture_manager2_->HaveUnclearedMips()); |
// Make texture cleared on one texture manager, should affect other one. |
- texture_manager1_->SetLevelCleared(ref1, GL_TEXTURE_2D, 0, true); |
+ texture_manager1_->SetLevelCleared(ref1.get(), GL_TEXTURE_2D, 0, true); |
EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); |
EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); |
EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); |
@@ -1738,17 +2251,27 @@ TEST_F(SharedTextureTest, FBOCompletenessCheck) { |
framebuffer_manager1.CreateFramebuffer(10, 10); |
scoped_refptr<Framebuffer> framebuffer1 = |
framebuffer_manager1.GetFramebuffer(10); |
- framebuffer1->AttachTexture(GL_COLOR_ATTACHMENT0, ref1, GL_TEXTURE_2D, 0); |
- EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1)); |
+ framebuffer1->AttachTexture( |
+ GL_COLOR_ATTACHMENT0, ref1.get(), GL_TEXTURE_2D, 0); |
+ EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1.get())); |
EXPECT_NE(kCompleteValue, framebuffer1->IsPossiblyComplete()); |
// Make FBO complete in manager 1. |
- texture_manager1_->SetTarget(ref1, GL_TEXTURE_2D); |
- texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
- GL_RGBA, GL_UNSIGNED_BYTE, true); |
+ texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D); |
+ texture_manager1_->SetLevelInfo(ref1.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 1, |
+ 1, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
EXPECT_EQ(kCompleteValue, framebuffer1->IsPossiblyComplete()); |
- framebuffer_manager1.MarkAsComplete(framebuffer1); |
- EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1)); |
+ framebuffer_manager1.MarkAsComplete(framebuffer1.get()); |
+ EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1.get())); |
// Share texture with manager 2. |
scoped_refptr<TextureRef> ref2 = |
@@ -1756,23 +2279,33 @@ TEST_F(SharedTextureTest, FBOCompletenessCheck) { |
framebuffer_manager2.CreateFramebuffer(20, 20); |
scoped_refptr<Framebuffer> framebuffer2 = |
framebuffer_manager2.GetFramebuffer(20); |
- framebuffer2->AttachTexture(GL_COLOR_ATTACHMENT0, ref2, GL_TEXTURE_2D, 0); |
- EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2)); |
+ framebuffer2->AttachTexture( |
+ GL_COLOR_ATTACHMENT0, ref2.get(), GL_TEXTURE_2D, 0); |
+ EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2.get())); |
EXPECT_EQ(kCompleteValue, framebuffer2->IsPossiblyComplete()); |
- framebuffer_manager2.MarkAsComplete(framebuffer2); |
- EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2)); |
+ framebuffer_manager2.MarkAsComplete(framebuffer2.get()); |
+ EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2.get())); |
// Change level for texture, both FBOs should be marked incomplete |
- texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, |
- GL_RGBA, GL_UNSIGNED_BYTE, true); |
- EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1)); |
+ texture_manager1_->SetLevelInfo(ref1.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 1, |
+ 1, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ true); |
+ EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1.get())); |
EXPECT_EQ(kCompleteValue, framebuffer1->IsPossiblyComplete()); |
- framebuffer_manager1.MarkAsComplete(framebuffer1); |
- EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1)); |
- EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2)); |
+ framebuffer_manager1.MarkAsComplete(framebuffer1.get()); |
+ EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1.get())); |
+ EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2.get())); |
EXPECT_EQ(kCompleteValue, framebuffer2->IsPossiblyComplete()); |
- framebuffer_manager2.MarkAsComplete(framebuffer2); |
- EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2)); |
+ framebuffer_manager2.MarkAsComplete(framebuffer2.get()); |
+ EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2.get())); |
EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, _)) |
.Times(2) |
@@ -1792,9 +2325,18 @@ TEST_F(SharedTextureTest, Memory) { |
// Newly created texture is unrenderable. |
scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); |
- texture_manager1_->SetTarget(ref1, GL_TEXTURE_2D); |
- texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 10, 10, 1, 0, |
- GL_RGBA, GL_UNSIGNED_BYTE, false); |
+ texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D); |
+ texture_manager1_->SetLevelInfo(ref1.get(), |
+ GL_TEXTURE_2D, |
+ 0, |
+ GL_RGBA, |
+ 10, |
+ 10, |
+ 1, |
+ 0, |
+ GL_RGBA, |
+ GL_UNSIGNED_BYTE, |
+ false); |
EXPECT_LT(0u, ref1->texture()->estimated_size()); |
EXPECT_EQ(initial_memory1 + ref1->texture()->estimated_size(), |