diff options
author | skaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-14 07:23:54 +0000 |
---|---|---|
committer | skaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-14 07:23:54 +0000 |
commit | 12d953585e4ba55d1903af13798ef6c6176d189d (patch) | |
tree | 414b47838894ff09aa34490661364a7c5e0087fd /gpu | |
parent | ea36635c7a2d7dd3517b25081f0a9e31bfe92a19 (diff) | |
download | chromium_src-12d953585e4ba55d1903af13798ef6c6176d189d.zip chromium_src-12d953585e4ba55d1903af13798ef6c6176d189d.tar.gz chromium_src-12d953585e4ba55d1903af13798ef6c6176d189d.tar.bz2 |
Handle correctly gl.generateMipmap(gl.TEXTURE_CUBE_MAP) in WebGL.
Particularly this conformance test
third_party/webgl_conformance/conformance/textures/texture-size.html
caused Chrome to crash in Debug builds, now passes successfuly.
BUG=166016
Review URL: https://chromiumcodereview.appspot.com/11577014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173116 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 3fc39c6..1c5843e 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -3734,9 +3734,19 @@ void GLES2DecoderImpl::DoGenerateMipmap(GLenum target) { return; } - if (!texture_manager()->ClearTextureLevel(this, info, target, 0)) { - SetGLError(GL_OUT_OF_MEMORY, "glGenerateMipmaps", "dimensions too big"); - return; + if (target == GL_TEXTURE_CUBE_MAP) { + for (int i = 0; i < 6; ++i) { + GLenum face = GL_TEXTURE_CUBE_MAP_POSITIVE_X + i; + if (!texture_manager()->ClearTextureLevel(this, info, face, 0)) { + SetGLError(GL_OUT_OF_MEMORY, "glGenerateMipmaps", "dimensions too big"); + return; + } + } + } else { + if (!texture_manager()->ClearTextureLevel(this, info, target, 0)) { + SetGLError(GL_OUT_OF_MEMORY, "glGenerateMipmaps", "dimensions too big"); + return; + } } CopyRealGLErrorsToWrapper(); |