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:
parent
afbe605eff
commit
0fac09a87c
|
@ -227,7 +227,6 @@ GLboolean
|
||||||
intel_miptree_match_image(struct intel_mipmap_tree *mt,
|
intel_miptree_match_image(struct intel_mipmap_tree *mt,
|
||||||
struct gl_texture_image *image)
|
struct gl_texture_image *image)
|
||||||
{
|
{
|
||||||
GLboolean isCompressed = _mesa_is_format_compressed(image->TexFormat);
|
|
||||||
struct intel_texture_image *intelImage = intel_texture_image(image);
|
struct intel_texture_image *intelImage = intel_texture_image(image);
|
||||||
GLuint level = intelImage->level;
|
GLuint level = intelImage->level;
|
||||||
|
|
||||||
|
@ -235,13 +234,7 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt,
|
||||||
if (image->Border)
|
if (image->Border)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
if (image->InternalFormat != mt->internal_format ||
|
if (image->TexFormat != mt->format)
|
||||||
isCompressed != mt->compressed)
|
|
||||||
return GL_FALSE;
|
|
||||||
|
|
||||||
if (!isCompressed &&
|
|
||||||
!mt->compressed &&
|
|
||||||
_mesa_get_format_bytes(image->TexFormat) != mt->cpp)
|
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
/* Test image dimensions against the base level image adjusted for
|
/* Test image dimensions against the base level image adjusted for
|
||||||
|
|
|
@ -118,14 +118,12 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
|
||||||
*/
|
*/
|
||||||
if (intelObj->mt &&
|
if (intelObj->mt &&
|
||||||
(intelObj->mt->target != intelObj->base.Target ||
|
(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->first_level != tObj->BaseLevel ||
|
||||||
intelObj->mt->last_level < intelObj->_MaxLevel ||
|
intelObj->mt->last_level < intelObj->_MaxLevel ||
|
||||||
intelObj->mt->width0 != firstImage->base.Width ||
|
intelObj->mt->width0 != firstImage->base.Width ||
|
||||||
intelObj->mt->height0 != firstImage->base.Height ||
|
intelObj->mt->height0 != firstImage->base.Height ||
|
||||||
intelObj->mt->depth0 != firstImage->base.Depth ||
|
intelObj->mt->depth0 != firstImage->base.Depth)) {
|
||||||
intelObj->mt->cpp != cpp ||
|
|
||||||
intelObj->mt->compressed != _mesa_is_format_compressed(firstImage->base.TexFormat))) {
|
|
||||||
intel_miptree_release(intel, &intelObj->mt);
|
intel_miptree_release(intel, &intelObj->mt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue