diff options
author | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 10:32:54 +0000 |
---|---|---|
committer | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 10:32:54 +0000 |
commit | 91c94eb3888f6cbfb61f72b5755ca535b1e89263 (patch) | |
tree | 865cbf359f3df594b20b7f9ecd9f5fc6c5cfe816 /gpu/command_buffer/service/texture_manager_unittest.cc | |
parent | ce2753f418b559ab13409a3402e109b606e7ff2c (diff) | |
download | chromium_src-91c94eb3888f6cbfb61f72b5755ca535b1e89263.zip chromium_src-91c94eb3888f6cbfb61f72b5755ca535b1e89263.tar.gz chromium_src-91c94eb3888f6cbfb61f72b5755ca535b1e89263.tar.bz2 |
Re-land: gpu: Add Will/DidUseTexImage to GLImage API.
WillUseTexImage/DidUseTexImage is called before/after the image is
used for sampling. The result is that the client only has to call
bind/releaseTexImage2D when contents have changed, which allows
for more efficient GLImage implementations as work required before
use can be separated from work required when contents have changed.
BUG=261649
TEST=gpu_unittests --gtest_filter=SharedTextureTest.Images && gpu_unittests --gtest_filter=GLES2DecoderWithShaderTest.UseTexImage && cc_unittests --gtest_filter=ResourceProviderTests/ResourceProviderTest.Image_GLTexture* && gl_tests --gtest_filter=MockGpuMemoryBufferTest.Lifecycle
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=229532
Review URL: https://codereview.chromium.org/23129010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230093 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/texture_manager_unittest.cc')
-rw-r--r-- | gpu/command_buffer/service/texture_manager_unittest.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/texture_manager_unittest.cc b/gpu/command_buffer/service/texture_manager_unittest.cc index 2f5f036..312adfd 100644 --- a/gpu/command_buffer/service/texture_manager_unittest.cc +++ b/gpu/command_buffer/service/texture_manager_unittest.cc @@ -2367,5 +2367,65 @@ TEST_F(SharedTextureTest, Memory) { memory_tracker2_->GetSize(MemoryTracker::kUnmanaged)); } +TEST_F(SharedTextureTest, Images) { + scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); + scoped_refptr<TextureRef> ref2 = + texture_manager2_->Consume(20, ref1->texture()); + + texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D); + texture_manager1_->SetLevelInfo(ref1.get(), + GL_TEXTURE_2D, + 1, + GL_RGBA, + 2, + 2, + 1, + 0, + GL_RGBA, + GL_UNSIGNED_BYTE, + true); + EXPECT_FALSE(ref1->texture()->HasImages()); + EXPECT_FALSE(ref2->texture()->HasImages()); + EXPECT_FALSE(texture_manager1_->HaveImages()); + EXPECT_FALSE(texture_manager2_->HaveImages()); + texture_manager1_->SetLevelImage(ref1.get(), + GL_TEXTURE_2D, + 1, + gfx::GLImage::CreateGLImage(0).get()); + EXPECT_TRUE(ref1->texture()->HasImages()); + EXPECT_TRUE(ref2->texture()->HasImages()); + EXPECT_TRUE(texture_manager1_->HaveImages()); + EXPECT_TRUE(texture_manager2_->HaveImages()); + texture_manager1_->SetLevelImage(ref1.get(), + GL_TEXTURE_2D, + 1, + gfx::GLImage::CreateGLImage(0).get()); + EXPECT_TRUE(ref1->texture()->HasImages()); + EXPECT_TRUE(ref2->texture()->HasImages()); + EXPECT_TRUE(texture_manager1_->HaveImages()); + EXPECT_TRUE(texture_manager2_->HaveImages()); + texture_manager1_->SetLevelInfo(ref1.get(), + GL_TEXTURE_2D, + 1, + GL_RGBA, + 2, + 2, + 1, + 0, + GL_RGBA, + GL_UNSIGNED_BYTE, + true); + EXPECT_FALSE(ref1->texture()->HasImages()); + EXPECT_FALSE(ref2->texture()->HasImages()); + EXPECT_FALSE(texture_manager1_->HaveImages()); + EXPECT_FALSE(texture_manager1_->HaveImages()); + + EXPECT_CALL(*gl_, DeleteTextures(1, _)) + .Times(1) + .RetiresOnSaturation(); + texture_manager1_->RemoveTexture(10); + texture_manager2_->RemoveTexture(20); +} + } // namespace gles2 } // namespace gpu |