| 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 bef870bf137f9a2ac192c1f7efaf39aae50c5706..28614ba5c08cee6549eefd731b1477e1ec42a95e 100644
|
| --- a/gpu/command_buffer/service/texture_manager_unittest.cc
|
| +++ b/gpu/command_buffer/service/texture_manager_unittest.cc
|
| @@ -75,10 +75,10 @@ class TextureManagerTest : public testing::Test {
|
| }
|
|
|
| void SetParameter(
|
| - Texture* texture, GLenum pname, GLint value, GLenum error) {
|
| + TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) {
|
| TestHelper::SetTexParameterWithExpectations(
|
| gl_.get(), error_state_.get(), manager_.get(),
|
| - texture, pname, value, error);
|
| + texture_ref, pname, value, error);
|
| }
|
|
|
| // Use StrictMock to make 100% sure we know how GL will be called.
|
| @@ -108,7 +108,7 @@ TEST_F(TextureManagerTest, Basic) {
|
| // Check we can create texture.
|
| manager_->CreateTexture(kClient1Id, kService1Id);
|
| // Check texture got created.
|
| - Texture* texture = manager_->GetTexture(kClient1Id);
|
| + TextureRef* texture = manager_->GetTexture(kClient1Id);
|
| ASSERT_TRUE(texture != NULL);
|
| EXPECT_EQ(kService1Id, texture->service_id());
|
| GLuint client_id = 0;
|
| @@ -133,30 +133,31 @@ TEST_F(TextureManagerTest, SetParameter) {
|
| // Check we can create texture.
|
| manager_->CreateTexture(kClient1Id, kService1Id);
|
| // Check texture got created.
|
| - Texture* texture = manager_->GetTexture(kClient1Id);
|
| - manager_->SetTarget(texture, GL_TEXTURE_2D);
|
| - ASSERT_TRUE(texture != NULL);
|
| - SetParameter(texture, GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| + TextureRef* texture_ref = manager_->GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + Texture* texture = texture_ref->texture();
|
| + manager_->SetTarget(texture_ref, GL_TEXTURE_2D);
|
| + SetParameter(texture_ref, GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter());
|
| - SetParameter(texture, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| + SetParameter(texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->mag_filter());
|
| - SetParameter(texture, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| + SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s());
|
| - SetParameter(texture, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| + SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t());
|
| - SetParameter(texture, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1, GL_NO_ERROR);
|
| - SetParameter(texture, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2, GL_NO_ERROR);
|
| + SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1, GL_NO_ERROR);
|
| + SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2, GL_NO_ERROR);
|
| SetParameter(
|
| - texture, GL_TEXTURE_MIN_FILTER, GL_CLAMP_TO_EDGE, GL_INVALID_ENUM);
|
| + texture_ref, GL_TEXTURE_MIN_FILTER, GL_CLAMP_TO_EDGE, GL_INVALID_ENUM);
|
| EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter());
|
| SetParameter(
|
| - texture, GL_TEXTURE_MAG_FILTER, GL_CLAMP_TO_EDGE, GL_INVALID_ENUM);
|
| + texture_ref, GL_TEXTURE_MAG_FILTER, GL_CLAMP_TO_EDGE, GL_INVALID_ENUM);
|
| EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter());
|
| - SetParameter(texture, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM);
|
| + SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM);
|
| EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s());
|
| - SetParameter(texture, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM);
|
| + SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM);
|
| EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t());
|
| - SetParameter(texture, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE);
|
| + SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE);
|
| }
|
|
|
| TEST_F(TextureManagerTest, TextureUsageExt) {
|
| @@ -170,13 +171,13 @@ TEST_F(TextureManagerTest, TextureUsageExt) {
|
| // Check we can create texture.
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| // Check texture got created.
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| TestHelper::SetTexParameterWithExpectations(
|
| - gl_.get(), error_state_.get(), &manager, texture,
|
| + gl_.get(), error_state_.get(), &manager, texture_ref,
|
| GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE,GL_NO_ERROR);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE),
|
| - texture->usage());
|
| + texture_ref->texture()->usage());
|
| manager.Destroy(false);
|
| }
|
|
|
| @@ -190,7 +191,7 @@ TEST_F(TextureManagerTest, Destroy) {
|
| // Check we can create texture.
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| // Check texture got created.
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| + TextureRef* texture = manager.GetTexture(kClient1Id);
|
| ASSERT_TRUE(texture != NULL);
|
| EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
|
| .Times(1)
|
| @@ -210,12 +211,12 @@ TEST_F(TextureManagerTest, DestroyUnowned) {
|
| NULL, feature_info_.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.Initialize();
|
| // Check we can create texture.
|
| - Texture* created_texture =
|
| + TextureRef* created_texture =
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - created_texture->SetNotOwned();
|
| + created_texture->texture()->SetNotOwned();
|
|
|
| // Check texture got created.
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| + TextureRef* texture = manager.GetTexture(kClient1Id);
|
| ASSERT_TRUE(texture != NULL);
|
|
|
| // Check that it is not freed if it is not owned.
|
| @@ -365,7 +366,7 @@ class TextureTestBase : public testing::Test {
|
| : feature_info_(new FeatureInfo()) {
|
| }
|
| virtual ~TextureTestBase() {
|
| - texture_ = NULL;
|
| + texture_ref_ = NULL;
|
| }
|
|
|
| protected:
|
| @@ -385,23 +386,23 @@ class TextureTestBase : public testing::Test {
|
| decoder_.reset(new ::testing::StrictMock<gles2::MockGLES2Decoder>());
|
| error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
|
| manager_->CreateTexture(kClient1Id, kService1Id);
|
| - texture_ = manager_->GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture_.get() != NULL);
|
| + texture_ref_ = manager_->GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref_.get() != NULL);
|
| }
|
|
|
| virtual void TearDown() {
|
| - if (texture_.get()) {
|
| + if (texture_ref_.get()) {
|
| GLuint client_id = 0;
|
| - // If it's not in the manager then setting texture_ to NULL will
|
| + // If it's not in the manager then setting texture_ref_ to NULL will
|
| // delete the texture.
|
| - if (!manager_->GetClientId(texture_->service_id(), &client_id)) {
|
| + if (!manager_->GetClientId(texture_ref_->service_id(), &client_id)) {
|
| // Check that it gets deleted when the last reference is released.
|
| EXPECT_CALL(*gl_,
|
| - DeleteTextures(1, ::testing::Pointee(texture_->service_id())))
|
| + DeleteTextures(1, ::testing::Pointee(texture_ref_->service_id())))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| }
|
| - texture_ = NULL;
|
| + texture_ref_ = NULL;
|
| }
|
| manager_->Destroy(false);
|
| manager_.reset();
|
| @@ -410,10 +411,10 @@ class TextureTestBase : public testing::Test {
|
| }
|
|
|
| void SetParameter(
|
| - Texture* texture, GLenum pname, GLint value, GLenum error) {
|
| + TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) {
|
| TestHelper::SetTexParameterWithExpectations(
|
| gl_.get(), error_state_.get(), manager_.get(),
|
| - texture, pname, value, error);
|
| + texture_ref, pname, value, error);
|
| }
|
|
|
| scoped_ptr<MockGLES2Decoder> decoder_;
|
| @@ -422,7 +423,7 @@ class TextureTestBase : public testing::Test {
|
| scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
|
| scoped_refptr<FeatureInfo> feature_info_;
|
| scoped_ptr<TextureManager> manager_;
|
| - scoped_refptr<Texture> texture_;
|
| + scoped_refptr<TextureRef> texture_ref_;
|
| };
|
|
|
| class TextureTest : public TextureTestBase {
|
| @@ -449,65 +450,68 @@ class TextureMemoryTrackerTest : public TextureTestBase {
|
| .RetiresOnSaturation() \
|
|
|
| TEST_F(TextureTest, Basic) {
|
| - EXPECT_EQ(0u, texture_->target());
|
| - EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture_));
|
| - EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_));
|
| - EXPECT_FALSE(TextureTestHelper::IsNPOT(texture_));
|
| - EXPECT_EQ(0, texture_->num_uncleared_mips());
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| - EXPECT_FALSE(texture_->IsImmutable());
|
| + 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(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_EQ(0, texture->num_uncleared_mips());
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref_));
|
| + EXPECT_TRUE(texture->SafeToRenderFrom());
|
| + EXPECT_FALSE(texture->IsImmutable());
|
| EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR),
|
| - texture_->min_filter());
|
| - EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture_->mag_filter());
|
| - EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture_->wrap_s());
|
| - EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture_->wrap_t());
|
| + texture->min_filter());
|
| + EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture->mag_filter());
|
| + EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_s());
|
| + EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_t());
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
| EXPECT_FALSE(manager_->HaveUnsafeTextures());
|
| - EXPECT_EQ(0u, texture_->estimated_size());
|
| + EXPECT_EQ(0u, texture->estimated_size());
|
| }
|
|
|
| TEST_F(TextureTest, SetTargetTexture2D) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture_));
|
| - EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_));
|
| - EXPECT_FALSE(TextureTestHelper::IsNPOT(texture_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| - EXPECT_FALSE(texture_->IsImmutable());
|
| + Texture* texture = texture_ref_->texture();
|
| + manager_->SetTarget(texture_ref_, GL_TEXTURE_2D);
|
| + EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
|
| + EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_));
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref_));
|
| + EXPECT_TRUE(texture->SafeToRenderFrom());
|
| + EXPECT_FALSE(texture->IsImmutable());
|
| }
|
|
|
| TEST_F(TextureTest, SetTargetTextureExternalOES) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_EXTERNAL_OES);
|
| - EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture_));
|
| - EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_));
|
| - EXPECT_FALSE(TextureTestHelper::IsNPOT(texture_));
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| - EXPECT_TRUE(texture_->IsImmutable());
|
| + Texture* texture = texture_ref_->texture();
|
| + manager_->SetTarget(texture_ref_, GL_TEXTURE_EXTERNAL_OES);
|
| + EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
|
| + EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_));
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| + EXPECT_TRUE(texture->SafeToRenderFrom());
|
| + EXPECT_TRUE(texture->IsImmutable());
|
| }
|
|
|
| TEST_F(TextureTest, EstimatedSize) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| - EXPECT_EQ(8u * 4u * 4u, texture_->estimated_size());
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| - EXPECT_EQ(8u * 4u * 4u * 2u, texture_->estimated_size());
|
| + EXPECT_EQ(8u * 4u * 4u * 2u, texture_ref_->texture()->estimated_size());
|
| }
|
|
|
| TEST_F(TextureMemoryTrackerTest, EstimatedSize) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| + manager_->SetTarget(texture_ref_, GL_TEXTURE_2D);
|
| EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged);
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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);
|
| @@ -515,14 +519,14 @@ TEST_F(TextureMemoryTrackerTest, EstimatedSize) {
|
| }
|
|
|
| TEST_F(TextureMemoryTrackerTest, SetParameterPool) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| + manager_->SetTarget(texture_ref_, GL_TEXTURE_2D);
|
| EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged);
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_, GL_TEXTURE_POOL_CHROMIUM, GL_TEXTURE_POOL_MANAGED_CHROMIUM,
|
| + texture_ref_, 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);
|
| @@ -531,116 +535,119 @@ TEST_F(TextureMemoryTrackerTest, SetParameterPool) {
|
| }
|
|
|
| TEST_F(TextureTest, POT2D) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture_->target());
|
| + manager_->SetTarget(texture_ref_, 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_EQ(0, texture_->num_uncleared_mips());
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref_));
|
| + EXPECT_EQ(0, texture->num_uncleared_mips());
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
| // Set filters to something that will work with a single mip.
|
| - SetParameter(texture_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| + SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| // Set them back.
|
| - SetParameter(
|
| - texture_, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR, GL_NO_ERROR);
|
| + SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER,
|
| + GL_LINEAR_MIPMAP_LINEAR, GL_NO_ERROR);
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
|
|
| - EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_));
|
| + EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_));
|
| // Make mips.
|
| - EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| // Change a mip.
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + 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_->HaveUnrenderableTextures());
|
| // Set a level past the number of mips that would get generated.
|
| - manager_->SetLevelInfo(texture_,
|
| + 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_));
|
| + EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_));
|
| // Make mips.
|
| - EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_));
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| }
|
|
|
| TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| + manager_->SetTarget(texture_ref_, GL_TEXTURE_2D);
|
| EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64, MemoryTracker::kUnmanaged);
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0, MemoryTracker::kUnmanaged);
|
| EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged);
|
| }
|
|
|
| TEST_F(TextureTest, UnusedMips) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture_->target());
|
| + manager_->SetTarget(texture_ref_, 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_,
|
| + 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_));
|
| - EXPECT_FALSE(TextureTestHelper::IsNPOT(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| // Set level zero to large smaller (levels unused mips)
|
| - manager_->SetLevelInfo(texture_,
|
| + 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_));
|
| - EXPECT_FALSE(TextureTestHelper::IsNPOT(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| // Set an unused level to some size
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| }
|
|
|
| TEST_F(TextureTest, NPOT2D) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture_->target());
|
| + manager_->SetTarget(texture_ref_, 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + EXPECT_TRUE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_));
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref_));
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
| - SetParameter(texture_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref_));
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
| - SetParameter(texture_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + SetParameter(texture_ref_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref_));
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
| - SetParameter(texture_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| + SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| // Change it to POT.
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| }
|
|
|
| @@ -652,190 +659,195 @@ TEST_F(TextureTest, NPOT2DNPOTOK) {
|
| TextureManager manager(
|
| NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + Texture* texture = texture_ref->texture();
|
|
|
| - manager.SetTarget(texture, GL_TEXTURE_2D);
|
| + manager.SetTarget(texture_ref, GL_TEXTURE_2D);
|
| EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
|
| // Check Setting level 0 to NPOT
|
| - manager.SetLevelInfo(texture,
|
| + manager.SetLevelInfo(texture_ref,
|
| 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_TRUE(manager.CanGenerateMipmaps(texture));
|
| - EXPECT_FALSE(manager.CanRender(texture));
|
| + EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref));
|
| + EXPECT_FALSE(manager.CanRender(texture_ref));
|
| EXPECT_TRUE(manager.HaveUnrenderableTextures());
|
| - EXPECT_TRUE(manager.MarkMipmapsGenerated(texture));
|
| + EXPECT_TRUE(manager.MarkMipmapsGenerated(texture_ref));
|
| EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| - EXPECT_TRUE(manager.CanRender(texture));
|
| + EXPECT_TRUE(manager.CanRender(texture_ref));
|
| EXPECT_FALSE(manager.HaveUnrenderableTextures());
|
| manager.Destroy(false);
|
| }
|
|
|
| TEST_F(TextureTest, POTCubeMap) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_CUBE_MAP);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture_->target());
|
| + manager_->SetTarget(texture_ref_, 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + 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_TRUE(manager_->HaveUnrenderableTextures());
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + 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_TRUE(manager_->HaveUnrenderableTextures());
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + 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_TRUE(manager_->HaveUnrenderableTextures());
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_));
|
| + 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_TRUE(manager_->HaveUnrenderableTextures());
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + 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_TRUE(manager_->HaveUnrenderableTextures());
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| - EXPECT_FALSE(manager_->CanRender(texture_));
|
| + 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_->HaveUnrenderableTextures());
|
|
|
| // Make mips.
|
| - EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture_));
|
| - EXPECT_TRUE(manager_->CanRender(texture_));
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref_));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
|
|
| // Change a mip.
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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_));
|
| + EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
|
| + EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
|
| + EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_));
|
| // Set a level past the number of mips that would get generated.
|
| - manager_->SetLevelInfo(texture_,
|
| + 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_));
|
| + EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_));
|
| // Make mips.
|
| - EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture_));
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
|
| }
|
|
|
| TEST_F(TextureTest, GetLevelSize) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| GLsizei width = -1;
|
| GLsizei height = -1;
|
| - EXPECT_FALSE(texture_->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height));
|
| - EXPECT_FALSE(texture_->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height));
|
| - EXPECT_FALSE(texture_->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
|
| - EXPECT_TRUE(texture_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
|
| + Texture* texture = texture_ref_->texture();
|
| + EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height));
|
| + EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height));
|
| + EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
|
| + EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
|
| EXPECT_EQ(4, width);
|
| EXPECT_EQ(5, height);
|
| manager_->RemoveTexture(kClient1Id);
|
| - EXPECT_TRUE(texture_->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
|
| + EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
|
| EXPECT_EQ(4, width);
|
| EXPECT_EQ(5, height);
|
| }
|
|
|
| TEST_F(TextureTest, GetLevelType) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| GLenum type = -1;
|
| GLenum format = -1;
|
| - EXPECT_FALSE(texture_->GetLevelType(GL_TEXTURE_2D, -1, &type, &format));
|
| - EXPECT_FALSE(texture_->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format));
|
| - EXPECT_FALSE(texture_->GetLevelType(GL_TEXTURE_2D, 0, &type, &format));
|
| - EXPECT_TRUE(texture_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
|
| + Texture* texture = texture_ref_->texture();
|
| + EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, -1, &type, &format));
|
| + EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format));
|
| + EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &format));
|
| + EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
|
| EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
|
| EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format);
|
| manager_->RemoveTexture(kClient1Id);
|
| - EXPECT_TRUE(texture_->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
|
| + EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
|
| EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
|
| EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format);
|
| }
|
|
|
| TEST_F(TextureTest, ValidForTexture) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| // Check bad face.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + Texture* texture = texture_ref_->texture();
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
|
| 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad level.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 0, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad xoffset.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, -1, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad xoffset + width > width.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 1, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad yoffset.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, -1, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad yoffset + height > height.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, 1, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad width.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, 0, 5, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad height.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, 0, 4, 6, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check bad format.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGB, GL_UNSIGNED_BYTE));
|
| // Check bad type.
|
| - EXPECT_FALSE(texture_->ValidForTexture(
|
| + EXPECT_FALSE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4));
|
| // Check valid full size
|
| - EXPECT_TRUE(texture_->ValidForTexture(
|
| + EXPECT_TRUE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| // Check valid particial size.
|
| - EXPECT_TRUE(texture_->ValidForTexture(
|
| + EXPECT_TRUE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 1, 1, 2, 3, GL_RGBA, GL_UNSIGNED_BYTE));
|
| manager_->RemoveTexture(kClient1Id);
|
| - EXPECT_TRUE(texture_->ValidForTexture(
|
| + EXPECT_TRUE(texture->ValidForTexture(
|
| GL_TEXTURE_2D, 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
|
| }
|
|
|
| @@ -847,20 +859,21 @@ TEST_F(TextureTest, FloatNotLinear) {
|
| TextureManager manager(
|
| NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| - manager.SetTarget(texture, GL_TEXTURE_2D);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + manager.SetTarget(texture_ref, GL_TEXTURE_2D);
|
| + Texture* texture = texture_ref->texture();
|
| EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
|
| - manager.SetLevelInfo(texture,
|
| + manager.SetLevelInfo(texture_ref,
|
| GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true);
|
| EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| TestHelper::SetTexParameterWithExpectations(
|
| gl_.get(), error_state_.get(), &manager,
|
| - texture, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| + texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| TestHelper::SetTexParameterWithExpectations(
|
| - gl_.get(), error_state_.get(), &manager,
|
| - texture, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
|
| + gl_.get(), error_state_.get(), &manager, texture_ref,
|
| + GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
|
| EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| manager.Destroy(false);
|
| }
|
| @@ -873,11 +886,12 @@ TEST_F(TextureTest, FloatLinear) {
|
| TextureManager manager(
|
| NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| - manager.SetTarget(texture, GL_TEXTURE_2D);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + manager.SetTarget(texture_ref, GL_TEXTURE_2D);
|
| + Texture* texture = texture_ref->texture();
|
| EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
|
| - manager.SetLevelInfo(texture,
|
| + manager.SetLevelInfo(texture_ref,
|
| GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_FLOAT, true);
|
| EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| manager.Destroy(false);
|
| @@ -891,20 +905,21 @@ TEST_F(TextureTest, HalfFloatNotLinear) {
|
| TextureManager manager(
|
| NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| - manager.SetTarget(texture, GL_TEXTURE_2D);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + manager.SetTarget(texture_ref, GL_TEXTURE_2D);
|
| + Texture* texture = texture_ref->texture();
|
| EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
|
| - manager.SetLevelInfo(texture,
|
| + manager.SetLevelInfo(texture_ref,
|
| GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true);
|
| EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| TestHelper::SetTexParameterWithExpectations(
|
| gl_.get(), error_state_.get(), &manager,
|
| - texture, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| + texture_ref, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
|
| TestHelper::SetTexParameterWithExpectations(
|
| - gl_.get(), error_state_.get(), &manager,
|
| - texture, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
|
| + gl_.get(), error_state_.get(), &manager, texture_ref,
|
| + GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST, GL_NO_ERROR);
|
| EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| manager.Destroy(false);
|
| }
|
| @@ -917,11 +932,12 @@ TEST_F(TextureTest, HalfFloatLinear) {
|
| TextureManager manager(
|
| NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| - manager.SetTarget(texture, GL_TEXTURE_2D);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + manager.SetTarget(texture_ref, GL_TEXTURE_2D);
|
| + Texture* texture = texture_ref->texture();
|
| EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
|
| - manager.SetLevelInfo(texture,
|
| + manager.SetLevelInfo(texture_ref,
|
| GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT_OES, true);
|
| EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| manager.Destroy(false);
|
| @@ -935,11 +951,12 @@ TEST_F(TextureTest, EGLImageExternal) {
|
| TextureManager manager(
|
| NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| - manager.SetTarget(texture, GL_TEXTURE_EXTERNAL_OES);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + manager.SetTarget(texture_ref, GL_TEXTURE_EXTERNAL_OES);
|
| + Texture* texture = texture_ref->texture();
|
| EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target());
|
| - EXPECT_FALSE(manager.CanGenerateMipmaps(texture));
|
| + EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
|
| manager.Destroy(false);
|
| }
|
|
|
| @@ -951,13 +968,13 @@ TEST_F(TextureTest, DepthTexture) {
|
| TextureManager manager(
|
| NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
|
| manager.CreateTexture(kClient1Id, kService1Id);
|
| - Texture* texture = manager.GetTexture(kClient1Id);
|
| - ASSERT_TRUE(texture != NULL);
|
| - manager.SetTarget(texture, GL_TEXTURE_2D);
|
| + TextureRef* texture_ref = manager.GetTexture(kClient1Id);
|
| + ASSERT_TRUE(texture_ref != NULL);
|
| + manager.SetTarget(texture_ref, GL_TEXTURE_2D);
|
| manager.SetLevelInfo(
|
| - texture, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0,
|
| + texture_ref, GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 4, 4, 1, 0,
|
| GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, false);
|
| - EXPECT_FALSE(manager.CanGenerateMipmaps(texture));
|
| + EXPECT_FALSE(manager.CanGenerateMipmaps(texture_ref));
|
| manager.Destroy(false);
|
| }
|
|
|
| @@ -967,101 +984,104 @@ TEST_F(TextureTest, SafeUnsafe) {
|
| static const GLuint kClient3Id = 3;
|
| static const GLuint kService3Id = 13;
|
| EXPECT_FALSE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(0, texture_->num_uncleared_mips());
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + EXPECT_FALSE(texture->SafeToRenderFrom());
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(1, texture_->num_uncleared_mips());
|
| - manager_->SetLevelCleared(texture_, GL_TEXTURE_2D, 0, true);
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(1, texture->num_uncleared_mips());
|
| + manager_->SetLevelCleared(texture_ref_, 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_,
|
| + 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);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + EXPECT_FALSE(texture->SafeToRenderFrom());
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(1, texture_->num_uncleared_mips());
|
| - manager_->SetLevelCleared(texture_, GL_TEXTURE_2D, 1, true);
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(1, texture->num_uncleared_mips());
|
| + manager_->SetLevelCleared(texture_ref_, 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_,
|
| + 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + EXPECT_FALSE(texture->SafeToRenderFrom());
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(2, texture_->num_uncleared_mips());
|
| - manager_->SetLevelCleared(texture_, GL_TEXTURE_2D, 0, true);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(2, texture->num_uncleared_mips());
|
| + manager_->SetLevelCleared(texture_ref_, 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_, GL_TEXTURE_2D, 1, true);
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(1, texture->num_uncleared_mips());
|
| + manager_->SetLevelCleared(texture_ref_, 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_,
|
| + 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);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + EXPECT_FALSE(texture->SafeToRenderFrom());
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(1, texture_->num_uncleared_mips());
|
| - manager_->MarkMipmapsGenerated(texture_);
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(1, texture->num_uncleared_mips());
|
| + manager_->MarkMipmapsGenerated(texture_ref_);
|
| + EXPECT_TRUE(texture->SafeToRenderFrom());
|
| EXPECT_FALSE(manager_->HaveUnsafeTextures());
|
| EXPECT_FALSE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(0, texture_->num_uncleared_mips());
|
| + EXPECT_EQ(0, texture->num_uncleared_mips());
|
|
|
| manager_->CreateTexture(kClient2Id, kService2Id);
|
| - scoped_refptr<Texture> texture2(
|
| + scoped_refptr<TextureRef> texture_ref2(
|
| manager_->GetTexture(kClient2Id));
|
| - ASSERT_TRUE(texture2.get() != NULL);
|
| - manager_->SetTarget(texture2, GL_TEXTURE_2D);
|
| + ASSERT_TRUE(texture_ref2.get() != NULL);
|
| + manager_->SetTarget(texture_ref2, 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(texture2,
|
| + manager_->SetLevelInfo(texture_ref2,
|
| 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(texture2,
|
| + manager_->SetLevelInfo(texture_ref2,
|
| 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());
|
|
|
| manager_->CreateTexture(kClient3Id, kService3Id);
|
| - scoped_refptr<Texture> texture3(
|
| + scoped_refptr<TextureRef> texture_ref3(
|
| manager_->GetTexture(kClient3Id));
|
| - ASSERT_TRUE(texture3.get() != NULL);
|
| - manager_->SetTarget(texture3, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture3,
|
| + 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);
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| + Texture* texture3 = texture_ref3->texture();
|
| EXPECT_EQ(1, texture3->num_uncleared_mips());
|
| - manager_->SetLevelCleared(texture2, GL_TEXTURE_2D, 0, true);
|
| + manager_->SetLevelCleared(texture_ref2, GL_TEXTURE_2D, 0, true);
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| EXPECT_EQ(0, texture2->num_uncleared_mips());
|
| - manager_->SetLevelCleared(texture3, GL_TEXTURE_2D, 0, true);
|
| + manager_->SetLevelCleared(texture_ref3, GL_TEXTURE_2D, 0, true);
|
| EXPECT_FALSE(manager_->HaveUnsafeTextures());
|
| EXPECT_FALSE(manager_->HaveUnclearedMips());
|
| EXPECT_EQ(0, texture3->num_uncleared_mips());
|
|
|
| - manager_->SetLevelInfo(texture2,
|
| + manager_->SetLevelInfo(texture_ref2,
|
| GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| - manager_->SetLevelInfo(texture3,
|
| + manager_->SetLevelInfo(texture_ref3,
|
| GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| @@ -1076,13 +1096,13 @@ TEST_F(TextureTest, SafeUnsafe) {
|
| EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id)))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - texture2 = NULL;
|
| + texture_ref2 = NULL;
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService3Id)))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - texture3 = NULL;
|
| + texture_ref3 = NULL;
|
| EXPECT_FALSE(manager_->HaveUnsafeTextures());
|
| EXPECT_FALSE(manager_->HaveUnclearedMips());
|
| }
|
| @@ -1090,88 +1110,90 @@ TEST_F(TextureTest, SafeUnsafe) {
|
| TEST_F(TextureTest, ClearTexture) {
|
| EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _))
|
| .WillRepeatedly(Return(true));
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + 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_);
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(2, texture->num_uncleared_mips());
|
| + manager_->ClearRenderableLevels(decoder_.get(), texture_ref_);
|
| + EXPECT_TRUE(texture->SafeToRenderFrom());
|
| EXPECT_FALSE(manager_->HaveUnsafeTextures());
|
| EXPECT_FALSE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(0, texture_->num_uncleared_mips());
|
| - manager_->SetLevelInfo(texture_,
|
| + 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + EXPECT_FALSE(texture->SafeToRenderFrom());
|
| EXPECT_TRUE(manager_->HaveUnsafeTextures());
|
| EXPECT_TRUE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(2, texture_->num_uncleared_mips());
|
| - manager_->ClearTextureLevel(decoder_.get(), texture_, GL_TEXTURE_2D, 0);
|
| - EXPECT_FALSE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(2, texture->num_uncleared_mips());
|
| + manager_->ClearTextureLevel(decoder_.get(), texture_ref_, 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_, GL_TEXTURE_2D, 1);
|
| - EXPECT_TRUE(texture_->SafeToRenderFrom());
|
| + EXPECT_EQ(1, texture->num_uncleared_mips());
|
| + manager_->ClearTextureLevel(decoder_.get(), texture_ref_, GL_TEXTURE_2D, 1);
|
| + EXPECT_TRUE(texture->SafeToRenderFrom());
|
| EXPECT_FALSE(manager_->HaveUnsafeTextures());
|
| EXPECT_FALSE(manager_->HaveUnclearedMips());
|
| - EXPECT_EQ(0, texture_->num_uncleared_mips());
|
| + EXPECT_EQ(0, texture->num_uncleared_mips());
|
| }
|
|
|
| TEST_F(TextureTest, UseDeletedTexture) {
|
| static const GLuint kClient2Id = 2;
|
| static const GLuint kService2Id = 12;
|
| // Make the default texture renderable
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| // Make a new texture
|
| manager_->CreateTexture(kClient2Id, kService2Id);
|
| - scoped_refptr<Texture> texture(
|
| + scoped_refptr<TextureRef> texture_ref(
|
| manager_->GetTexture(kClient2Id));
|
| - manager_->SetTarget(texture, GL_TEXTURE_2D);
|
| - EXPECT_FALSE(manager_->CanRender(texture));
|
| + manager_->SetTarget(texture_ref, GL_TEXTURE_2D);
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref));
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
| // Remove it.
|
| manager_->RemoveTexture(kClient2Id);
|
| - EXPECT_FALSE(manager_->CanRender(texture));
|
| + EXPECT_FALSE(manager_->CanRender(texture_ref));
|
| EXPECT_TRUE(manager_->HaveUnrenderableTextures());
|
| // Check that we can still manipulate it and it effects the manager.
|
| - manager_->SetLevelInfo(texture,
|
| + 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));
|
| + EXPECT_TRUE(manager_->CanRender(texture_ref));
|
| EXPECT_FALSE(manager_->HaveUnrenderableTextures());
|
| EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id)))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| - texture = NULL;
|
| + texture_ref = NULL;
|
| }
|
|
|
| TEST_F(TextureTest, GetLevelImage) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| - EXPECT_TRUE(texture_->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
|
| + Texture* texture = texture_ref_->texture();
|
| + EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
|
| // Set image.
|
| - manager_->SetLevelImage(texture_,
|
| + manager_->SetLevelImage(texture_ref_,
|
| GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0));
|
| - EXPECT_FALSE(texture_->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
|
| + EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
|
| // Remove it.
|
| - manager_->SetLevelImage(texture_, GL_TEXTURE_2D, 1, NULL);
|
| - EXPECT_TRUE(texture_->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
|
| - manager_->SetLevelImage(texture_,
|
| + manager_->SetLevelImage(texture_ref_, 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));
|
| // Image should be reset when SetLevelInfo is called.
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| 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);
|
| + EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
|
| }
|
|
|
| namespace {
|
| @@ -1185,105 +1207,105 @@ bool InSet(std::set<std::string>* string_set, const std::string& str) {
|
| } // anonymous namespace
|
|
|
| TEST_F(TextureTest, AddToSignature) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - manager_->SetLevelInfo(texture_,
|
| + 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);
|
| std::string signature1;
|
| std::string signature2;
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature1);
|
| + manager_->AddToSignature(texture_ref_, 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_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 4, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| // check putting it back makes the same signature.
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_EQ(signature1, signature2);
|
|
|
| // Check setting cleared status does not change signature.
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_EQ(signature1, signature2);
|
|
|
| // Check changing other settings changes signature.
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, false);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, false);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_FLOAT,
|
| false);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| // put it back
|
| - manager_->SetLevelInfo(texture_,
|
| + manager_->SetLevelInfo(texture_ref_,
|
| GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
|
| false);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_EQ(signature1, signature2);
|
|
|
| // check changing parameters changes signature.
|
| - SetParameter(texture_, GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| + SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| - SetParameter(
|
| - texture_, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR, GL_NO_ERROR);
|
| - SetParameter(texture_, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
|
| + 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);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| - SetParameter(texture_, GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR);
|
| - SetParameter(texture_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| + 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);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| - SetParameter(texture_, GL_TEXTURE_WRAP_S, GL_REPEAT, GL_NO_ERROR);
|
| - SetParameter(texture_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
|
| + 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);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_FALSE(InSet(&string_set, signature2));
|
|
|
| // Check putting it back genenerates the same signature
|
| - SetParameter(texture_, GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR);
|
| + SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR);
|
| signature2.clear();
|
| - manager_->AddToSignature(texture_, GL_TEXTURE_2D, 1, &signature2);
|
| + manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2);
|
| EXPECT_EQ(signature1, signature2);
|
|
|
| // Check the set was acutally getting different signatures.
|
| @@ -1364,8 +1386,10 @@ class SaveRestoreTextureTest : public TextureTest {
|
| bool cleared;
|
| };
|
|
|
| - void SetLevelInfo(Texture* texture, GLint level, const LevelInfo& info) {
|
| - manager_->SetLevelInfo(texture,
|
| + void SetLevelInfo(TextureRef* texture_ref,
|
| + GLint level,
|
| + const LevelInfo& info) {
|
| + manager_->SetLevelInfo(texture_ref,
|
| info.target,
|
| level,
|
| info.format,
|
| @@ -1378,9 +1402,10 @@ class SaveRestoreTextureTest : public TextureTest {
|
| info.cleared);
|
| }
|
|
|
| - static LevelInfo GetLevelInfo(const Texture* texture,
|
| + static LevelInfo GetLevelInfo(const TextureRef* texture_ref,
|
| GLint target,
|
| GLint level) {
|
| + const Texture* texture = texture_ref->texture();
|
| LevelInfo info;
|
| info.target = target;
|
| EXPECT_TRUE(texture->GetLevelSize(target, level, &info.width,
|
| @@ -1391,27 +1416,27 @@ class SaveRestoreTextureTest : public TextureTest {
|
| return info;
|
| }
|
|
|
| - TextureDefinition* Save(Texture* texture) {
|
| + TextureDefinition* Save(TextureRef* texture_ref) {
|
| EXPECT_CALL(*gl_, GenTextures(_, _))
|
| .WillOnce(SetArgumentPointee<1>(kEmptyTextureServiceId));
|
| - TextureDefinition* definition = manager_->Save(texture);
|
| + TextureDefinition* definition = manager_->Save(texture_ref);
|
| EXPECT_TRUE(definition != NULL);
|
| return definition;
|
| }
|
|
|
| - void Restore(Texture* texture, TextureDefinition* definition) {
|
| - EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(texture->service_id())))
|
| + void Restore(TextureRef* texture_ref, TextureDefinition* definition) {
|
| + EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(texture_ref->service_id())))
|
| .Times(1).RetiresOnSaturation();
|
| EXPECT_CALL(*gl_,
|
| BindTexture(definition->target(), definition->service_id()))
|
| .Times(1).RetiresOnSaturation();
|
| EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(AtLeast(1));
|
|
|
| - EXPECT_TRUE(
|
| - manager_->Restore("TextureTest", decoder_.get(), texture, definition));
|
| + EXPECT_TRUE(manager_->Restore("TextureTest", decoder_.get(),
|
| + texture_ref, definition));
|
| }
|
|
|
| - scoped_refptr<Texture> texture2_;
|
| + scoped_refptr<TextureRef> texture2_;
|
|
|
| private:
|
| static const GLuint kEmptyTextureServiceId;
|
| @@ -1424,16 +1449,17 @@ const GLuint SaveRestoreTextureTest::kService2Id = 12;
|
| const GLuint SaveRestoreTextureTest::kEmptyTextureServiceId = 13;
|
|
|
| TEST_F(SaveRestoreTextureTest, SaveRestore2D) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_2D);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture_->target());
|
| + manager_->SetTarget(texture_ref_, 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_, 0, level0);
|
| - EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - LevelInfo level1 = GetLevelInfo(texture_.get(), GL_TEXTURE_2D, 1);
|
| - LevelInfo level2 = GetLevelInfo(texture_.get(), GL_TEXTURE_2D, 2);
|
| - scoped_ptr<TextureDefinition> definition(Save(texture_));
|
| + SetLevelInfo(texture_ref_, 0, level0);
|
| + EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_));
|
| + 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);
|
| + scoped_ptr<TextureDefinition> definition(Save(texture_ref_));
|
| const TextureDefinition::LevelInfos& infos = definition->level_infos();
|
| EXPECT_EQ(1U, infos.size());
|
| EXPECT_EQ(3U, infos[0].size());
|
| @@ -1446,27 +1472,29 @@ TEST_F(SaveRestoreTextureTest, SaveRestore2D) {
|
| 0,
|
| LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, 0, GL_UNSIGNED_BYTE, false));
|
| EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_));
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture2_));
|
| - EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture2_->estimated_size());
|
| + texture = texture2_->texture();
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size());
|
| Restore(texture2_, definition.release());
|
| EXPECT_EQ(level0, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 0));
|
| EXPECT_EQ(level1, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 1));
|
| EXPECT_EQ(level2, GetLevelInfo(texture2_.get(), GL_TEXTURE_2D, 2));
|
| - EXPECT_EQ(64U + 16U + 4U, texture2_->estimated_size());
|
| + EXPECT_EQ(64U + 16U + 4U, texture->estimated_size());
|
| GLint w, h;
|
| - EXPECT_TRUE(texture2_->GetLevelSize(GL_TEXTURE_2D, 3, &w, &h));
|
| + EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 3, &w, &h));
|
| EXPECT_EQ(0, w);
|
| EXPECT_EQ(0, h);
|
| }
|
|
|
| TEST_F(SaveRestoreTextureTest, SaveRestoreClearRectangle) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_RECTANGLE_ARB);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), texture_->target());
|
| + manager_->SetTarget(texture_ref_, 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_, 0, level0);
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - scoped_ptr<TextureDefinition> definition(Save(texture_));
|
| + SetLevelInfo(texture_ref_, 0, level0);
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + scoped_ptr<TextureDefinition> definition(Save(texture_ref_));
|
| const TextureDefinition::LevelInfos& infos = definition->level_infos();
|
| EXPECT_EQ(1U, infos.size());
|
| EXPECT_EQ(1U, infos[0].size());
|
| @@ -1483,22 +1511,24 @@ TEST_F(SaveRestoreTextureTest, SaveRestoreClearRectangle) {
|
| }
|
|
|
| TEST_F(SaveRestoreTextureTest, SaveRestoreStreamTexture) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_EXTERNAL_OES);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture_->target());
|
| - texture_->SetStreamTexture(true);
|
| - GLuint service_id = texture_->service_id();
|
| - scoped_ptr<TextureDefinition> definition(Save(texture_));
|
| - EXPECT_FALSE(texture_->IsStreamTexture());
|
| + manager_->SetTarget(texture_ref_, GL_TEXTURE_EXTERNAL_OES);
|
| + Texture* texture = texture_ref_->texture();
|
| + EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target());
|
| + texture->SetStreamTexture(true);
|
| + GLuint service_id = texture->service_id();
|
| + scoped_ptr<TextureDefinition> definition(Save(texture_ref_));
|
| + EXPECT_FALSE(texture->IsStreamTexture());
|
| manager_->SetTarget(texture2_, GL_TEXTURE_EXTERNAL_OES);
|
| Restore(texture2_, definition.release());
|
| - EXPECT_TRUE(texture2_->IsStreamTexture());
|
| - EXPECT_TRUE(texture2_->IsImmutable());
|
| + EXPECT_TRUE(texture2_->texture()->IsStreamTexture());
|
| + EXPECT_TRUE(texture2_->texture()->IsImmutable());
|
| EXPECT_EQ(service_id, texture2_->service_id());
|
| }
|
|
|
| TEST_F(SaveRestoreTextureTest, SaveRestoreCube) {
|
| - manager_->SetTarget(texture_, GL_TEXTURE_CUBE_MAP);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture_->target());
|
| + manager_->SetTarget(texture_ref_, 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,
|
| GL_RGBA,
|
| 1,
|
| @@ -1515,10 +1545,10 @@ TEST_F(SaveRestoreTextureTest, SaveRestoreCube) {
|
| 0,
|
| GL_UNSIGNED_BYTE,
|
| true);
|
| - SetLevelInfo(texture_, 0, face0);
|
| - SetLevelInfo(texture_, 0, face5);
|
| - EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture_));
|
| - scoped_ptr<TextureDefinition> definition(Save(texture_));
|
| + SetLevelInfo(texture_ref_, 0, face0);
|
| + SetLevelInfo(texture_ref_, 0, face5);
|
| + EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
|
| + scoped_ptr<TextureDefinition> definition(Save(texture_ref_));
|
| const TextureDefinition::LevelInfos& infos = definition->level_infos();
|
| EXPECT_EQ(6U, infos.size());
|
| EXPECT_EQ(1U, infos[0].size());
|
|
|