diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-19 01:57:56 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-19 01:57:56 +0000 |
commit | 57f2238364b33696c4ee2d294c51cc317edf0ec0 (patch) | |
tree | 31a2d0b9d23bdb5d29065cb520eb09171c6f4da7 /gpu/command_buffer/service/texture_manager.cc | |
parent | aee541ebc97e1ff2c8bb43e4375913f582931d40 (diff) | |
download | chromium_src-57f2238364b33696c4ee2d294c51cc317edf0ec0.zip chromium_src-57f2238364b33696c4ee2d294c51cc317edf0ec0.tar.gz chromium_src-57f2238364b33696c4ee2d294c51cc317edf0ec0.tar.bz2 |
Made glReadPixels handle out of range areas.
TEST=unit tests
BUG=none
Review URL: http://codereview.chromium.org/1081006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42065 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/texture_manager.cc')
-rw-r--r-- | gpu/command_buffer/service/texture_manager.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc index a2f72bb..d6a1dce 100644 --- a/gpu/command_buffer/service/texture_manager.cc +++ b/gpu/command_buffer/service/texture_manager.cc @@ -108,7 +108,7 @@ bool TextureManager::TextureInfo::MarkMipmapsGenerated() { } bool TextureManager::TextureInfo::CanGenerateMipmaps() const { - if (npot() || level_infos_.empty()) { + if (npot() || level_infos_.empty() || IsDeleted()) { return false; } const TextureInfo::LevelInfo& first = level_infos_[0][0]; @@ -160,6 +160,19 @@ void TextureManager::TextureInfo::SetLevelInfo( Update(); } +bool TextureManager::TextureInfo::GetLevelSize( + GLint face, GLint level, GLsizei* width, GLsizei* height) const { + size_t face_index = GLTargetToFaceIndex(face); + if (!IsDeleted() && level >= 0 && face_index < level_infos_.size() && + static_cast<size_t>(level) < level_infos_[face_index].size()) { + const LevelInfo& info = level_infos_[GLTargetToFaceIndex(face)][level]; + *width = info.width; + *height = info.height; + return true; + } + return false; +} + void TextureManager::TextureInfo::SetParameter(GLenum pname, GLint param) { switch (pname) { case GL_TEXTURE_MIN_FILTER: |