mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 08:10:14 +01:00
st/mesa: check image size before copy_image_data_to_texture()
We should only copy images into the dest texture if the size is correct. This fixes a failed assertion when finalizing a texture with mis-defined mipmap levels such as: level 0: 32x32 level 1: 8x8 Also, fix incorrect mipmap level used in assertion at the top of copy_image_data_to_texture(). NOTE: This is a candidate for the 7.10 branch.
This commit is contained in:
parent
4ad63659c0
commit
a22aba4eae
1 changed files with 7 additions and 2 deletions
|
|
@ -1686,7 +1686,7 @@ copy_image_data_to_texture(struct st_context *st,
|
|||
/* debug checks */
|
||||
{
|
||||
const struct gl_texture_image *dstImage =
|
||||
stObj->base.Image[stImage->face][stImage->level];
|
||||
stObj->base.Image[stImage->face][dstLevel];
|
||||
assert(dstImage);
|
||||
assert(dstImage->Width == stImage->base.Width);
|
||||
assert(dstImage->Height == stImage->base.Height);
|
||||
|
|
@ -1843,7 +1843,12 @@ st_finalize_texture(struct gl_context *ctx,
|
|||
/* Need to import images in main memory or held in other textures.
|
||||
*/
|
||||
if (stImage && stObj->pt != stImage->pt) {
|
||||
copy_image_data_to_texture(st, stObj, level, stImage);
|
||||
if (stImage->base.Width == u_minify(stObj->width0, level) &&
|
||||
stImage->base.Height == u_minify(stObj->height0, level) &&
|
||||
stImage->base.Depth == u_minify(stObj->depth0, level)) {
|
||||
/* src image fits expected dest mipmap level size */
|
||||
copy_image_data_to_texture(st, stObj, level, stImage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue