intel: Make the intel_miptree_match_image format check more specific.

We don't care just about the internalFormat/cpp/compressed, but about
the specific format chosen.  We have no support for format
translations as part of texture validation, and furthermore it has
restrictions in the GL specification.  However, we should be making
consistent decisions for this check anyway.
This commit is contained in:
Eric Anholt 2011-06-09 10:00:59 -07:00
parent afbe605eff
commit 0fac09a87c
2 changed files with 3 additions and 12 deletions

View File

@ -227,7 +227,6 @@ GLboolean
intel_miptree_match_image(struct intel_mipmap_tree *mt,
struct gl_texture_image *image)
{
GLboolean isCompressed = _mesa_is_format_compressed(image->TexFormat);
struct intel_texture_image *intelImage = intel_texture_image(image);
GLuint level = intelImage->level;
@ -235,13 +234,7 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt,
if (image->Border)
return GL_FALSE;
if (image->InternalFormat != mt->internal_format ||
isCompressed != mt->compressed)
return GL_FALSE;
if (!isCompressed &&
!mt->compressed &&
_mesa_get_format_bytes(image->TexFormat) != mt->cpp)
if (image->TexFormat != mt->format)
return GL_FALSE;
/* Test image dimensions against the base level image adjusted for

View File

@ -118,14 +118,12 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
*/
if (intelObj->mt &&
(intelObj->mt->target != intelObj->base.Target ||
intelObj->mt->internal_format != firstImage->base.InternalFormat ||
intelObj->mt->format != firstImage->base.TexFormat ||
intelObj->mt->first_level != tObj->BaseLevel ||
intelObj->mt->last_level < intelObj->_MaxLevel ||
intelObj->mt->width0 != firstImage->base.Width ||
intelObj->mt->height0 != firstImage->base.Height ||
intelObj->mt->depth0 != firstImage->base.Depth ||
intelObj->mt->cpp != cpp ||
intelObj->mt->compressed != _mesa_is_format_compressed(firstImage->base.TexFormat))) {
intelObj->mt->depth0 != firstImage->base.Depth)) {
intel_miptree_release(intel, &intelObj->mt);
}