[Mesa-dev] [PATCH] mesa: fix *TextureSubImage*D() for GL_TEXTURE_CUBE_MAP target
Timothy Arceri
tarceri at itsqueeze.com
Wed May 10 07:23:11 UTC 2017
Noticed by inspection. The assert should have caught this already
but seems to have been incorrectly removed in b8939fd3d1544f.
---
I'm not overly familiar with this code but this seems to be how
it's intended to be used.
src/mesa/main/teximage.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 2486704..1dd53ac 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -2669,20 +2669,21 @@ _mesa_update_fbo_texture(struct gl_context *ctx,
/**
* If the texture object's GenerateMipmap flag is set and we've
* changed the texture base level image, regenerate the rest of the
* mipmap levels now.
*/
static inline void
check_gen_mipmap(struct gl_context *ctx, GLenum target,
struct gl_texture_object *texObj, GLint level)
{
+ assert(target != GL_TEXTURE_CUBE_MAP);
if (texObj->GenerateMipmap &&
level == texObj->BaseLevel &&
level < texObj->MaxLevel) {
assert(ctx->Driver.GenerateMipmap);
ctx->Driver.GenerateMipmap(ctx, target, texObj);
}
}
/** Debug helper: override the user-requested internal format */
@@ -3369,21 +3370,22 @@ texturesubimage(struct gl_context *ctx, GLuint dims,
return;
}
imageStride = _mesa_image_image_stride(&ctx->Unpack, width, height,
format, type);
/* Copy in each face. */
for (i = zoffset; i < zoffset + depth; ++i) {
texImage = texObj->Image[i][level];
assert(texImage);
- _mesa_texture_sub_image(ctx, 3, texObj, texImage, texObj->Target,
+ _mesa_texture_sub_image(ctx, 3, texObj, texImage,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
level, xoffset, yoffset, 0,
width, height, 1, format,
type, pixels, true);
pixels = (GLubyte *) pixels + imageStride;
}
}
else {
texImage = _mesa_select_tex_image(texObj, texObj->Target, level);
assert(texImage);
@@ -4758,23 +4760,23 @@ _mesa_CompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset,
"glCompressedTextureSubImage3D(cube map incomplete)");
return;
}
/* Copy in each face. */
for (i = 0; i < 6; ++i) {
texImage = texObj->Image[i][level];
assert(texImage);
compressed_texture_sub_image(ctx, 3, texObj, texImage,
- texObj->Target, level, xoffset, yoffset,
- zoffset, width, height, 1, format,
- imageSize, pixels);
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
+ level, xoffset, yoffset, zoffset, width,
+ height, 1, format, imageSize, pixels);
/* Compressed images don't have a client format */
image_stride = _mesa_format_image_size(texImage->TexFormat,
texImage->Width,
texImage->Height, 1);
pixels += image_stride;
imageSize -= image_stride;
}
}
--
2.9.3
More information about the mesa-dev
mailing list