diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-08 19:22:53 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-08 19:22:53 +0000 |
commit | db73c53b1db4ee076dec9c43d977f24ea8e4bb6d (patch) | |
tree | 2c8663d1975369b9b7e6e9275832b86c62f7d0da /gpu | |
parent | 0f34d9082e0b16e83d3e4c8fbf296a09509e4702 (diff) | |
download | chromium_src-db73c53b1db4ee076dec9c43d977f24ea8e4bb6d.zip chromium_src-db73c53b1db4ee076dec9c43d977f24ea8e4bb6d.tar.gz chromium_src-db73c53b1db4ee076dec9c43d977f24ea8e4bb6d.tar.bz2 |
Make texture manager more strict.
BUG=144886
Review URL: https://chromiumcodereview.appspot.com/11074008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@160678 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/texture_manager.cc | 2 | ||||
-rw-r--r-- | gpu/command_buffer/service/texture_manager_unittest.cc | 39 |
2 files changed, 33 insertions, 8 deletions
diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc index aa78668..7c378d4 100644 --- a/gpu/command_buffer/service/texture_manager.cc +++ b/gpu/command_buffer/service/texture_manager.cc @@ -730,7 +730,7 @@ TextureManager::TextureInfo::Ref TextureManager::CreateDefaultAndBlackTextures( bool TextureManager::ValidForTarget( GLenum target, GLint level, GLsizei width, GLsizei height, GLsizei depth) { - GLsizei max_size = MaxSizeForTarget(target); + GLsizei max_size = MaxSizeForTarget(target) >> level; return level >= 0 && width >= 0 && height >= 0 && diff --git a/gpu/command_buffer/service/texture_manager_unittest.cc b/gpu/command_buffer/service/texture_manager_unittest.cc index 5207450..dad2cf1 100644 --- a/gpu/command_buffer/service/texture_manager_unittest.cc +++ b/gpu/command_buffer/service/texture_manager_unittest.cc @@ -232,11 +232,11 @@ TEST_F(TextureManagerTest, ValidForTarget) { EXPECT_TRUE(manager_.ValidForTarget( GL_TEXTURE_2D, 0, kMaxTextureSize, kMaxTextureSize, 1)); EXPECT_TRUE(manager_.ValidForTarget( - GL_TEXTURE_2D, kMax2dLevels - 1, kMaxTextureSize, kMaxTextureSize, 1)); - EXPECT_TRUE(manager_.ValidForTarget( - GL_TEXTURE_2D, kMax2dLevels - 1, 1, kMaxTextureSize, 1)); - EXPECT_TRUE(manager_.ValidForTarget( - GL_TEXTURE_2D, kMax2dLevels - 1, kMaxTextureSize, 1, 1)); + GL_TEXTURE_2D, kMax2dLevels - 1, 1, 1, 1)); + EXPECT_FALSE(manager_.ValidForTarget( + GL_TEXTURE_2D, kMax2dLevels - 1, 1, 2, 1)); + EXPECT_FALSE(manager_.ValidForTarget( + GL_TEXTURE_2D, kMax2dLevels - 1, 2, 1, 1)); // check level out of range. EXPECT_FALSE(manager_.ValidForTarget( GL_TEXTURE_2D, kMax2dLevels, kMaxTextureSize, 1, 1)); @@ -257,8 +257,9 @@ TEST_F(TextureManagerTest, ValidForTarget) { GL_TEXTURE_CUBE_MAP, 0, kMaxCubeMapTextureSize, kMaxCubeMapTextureSize, 1)); EXPECT_TRUE(manager_.ValidForTarget( - GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels - 1, - kMaxCubeMapTextureSize, kMaxCubeMapTextureSize, 1)); + GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels - 1, 1, 1, 1)); + EXPECT_FALSE(manager_.ValidForTarget( + GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels - 1, 2, 2, 1)); // check level out of range. EXPECT_FALSE(manager_.ValidForTarget( GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels, @@ -271,6 +272,30 @@ TEST_F(TextureManagerTest, ValidForTarget) { EXPECT_FALSE(manager_.ValidForTarget( GL_TEXTURE_CUBE_MAP, kMaxCubeMapLevels, kMaxCubeMapTextureSize, 1, 2)); + + for (GLint level = 0; level < kMax2dLevels; ++level) { + EXPECT_TRUE(manager_.ValidForTarget( + GL_TEXTURE_2D, level, kMaxTextureSize >> level, 1, 1)); + EXPECT_TRUE(manager_.ValidForTarget( + GL_TEXTURE_2D, level, 1, kMaxTextureSize >> level, 1)); + EXPECT_FALSE(manager_.ValidForTarget( + GL_TEXTURE_2D, level, (kMaxTextureSize >> level) + 1, 1, 1)); + EXPECT_FALSE(manager_.ValidForTarget( + GL_TEXTURE_2D, level, 1, (kMaxTextureSize >> level) + 1, 1)); + } + + for (GLint level = 0; level < kMaxCubeMapLevels; ++level) { + EXPECT_TRUE(manager_.ValidForTarget( + GL_TEXTURE_CUBE_MAP, level, + kMaxCubeMapTextureSize >> level, + kMaxCubeMapTextureSize >> level, + 1)); + EXPECT_FALSE(manager_.ValidForTarget( + GL_TEXTURE_CUBE_MAP, level, + (kMaxCubeMapTextureSize >> level) * 2, + (kMaxCubeMapTextureSize >> level) * 2, + 1)); + } } TEST_F(TextureManagerTest, ValidForTargetNPOT) { |