summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorskaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-14 07:23:54 +0000
committerskaslev@chromium.org <skaslev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-14 07:23:54 +0000
commit12d953585e4ba55d1903af13798ef6c6176d189d (patch)
tree414b47838894ff09aa34490661364a7c5e0087fd /gpu
parentea36635c7a2d7dd3517b25081f0a9e31bfe92a19 (diff)
downloadchromium_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.cc16
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();