diff options
-rw-r--r-- | src/mesa/main/teximage.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 36747a72732..7b5df54ca15 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -4361,6 +4361,15 @@ get_tex_obj_for_clear(struct gl_context *ctx, return texObj; } + +/** + * For clearing cube textures, the zoffset and depth parameters indicate + * which cube map faces are to be cleared. This is the one case where we + * need to be concerned with multiple gl_texture_images. This function + * returns the array of texture images to clear for cube maps, or one + * texture image otherwise. + * \return number of texture images, 0 for error, 6 for cube, 1 otherwise. + */ static int get_tex_images_for_clear(struct gl_context *ctx, const char *function, @@ -4430,6 +4439,7 @@ _mesa_ClearTexSubImage( GLuint texture, GLint level, minDepth = -(int) texImages[0]->Border; maxDepth = texImages[0]->Depth; } else { + assert(numImages == MAX_FACES); minDepth = 0; maxDepth = numImages; } @@ -4459,7 +4469,9 @@ _mesa_ClearTexSubImage( GLuint texture, GLint level, data ? clearValue[0] : NULL); } } else { + /* loop over cube face images */ for (i = zoffset; i < zoffset + depth; i++) { + assert(i < MAX_FACES); if (!check_clear_tex_image(ctx, "glClearTexSubImage", texImages[i], format, type, data, clearValue[i])) |