mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 19:58:09 +02:00
mesa: check for immutable texture in _mesa_test_texobj_completeness()
One of the points of GL_ARB_texture_storage is to make it impossible to have malformed mipmap stacks. If we know the texture object is immutable, we can skip a bunch of size checking.
This commit is contained in:
parent
b64dc2a275
commit
68c3d21b68
1 changed files with 9 additions and 4 deletions
|
|
@ -415,10 +415,6 @@ incomplete(struct gl_texture_object *t, const char *fmt, ...)
|
|||
* The gl_texture_object::Complete flag will be set to GL_TRUE or GL_FALSE
|
||||
* accordingly.
|
||||
*
|
||||
* XXX TODO: For immutable textures (GL_ARB_texture_storage) we can skip
|
||||
* many of the checks below since we know the mipmap images will have
|
||||
* consistent sizes.
|
||||
*
|
||||
* \param ctx GL context.
|
||||
* \param t texture object.
|
||||
*
|
||||
|
|
@ -504,6 +500,15 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
|
|||
/* Compute _MaxLambda = q - b (see the 1.2 spec) used during mipmapping */
|
||||
t->_MaxLambda = (GLfloat) (t->_MaxLevel - t->BaseLevel);
|
||||
|
||||
if (t->Immutable) {
|
||||
/* This texture object was created with glTexStorage1/2/3D() so we
|
||||
* know that all the mipmap levels are the right size and all cube
|
||||
* map faces are the same size.
|
||||
* We don't need to do any of the additional checks below.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
if (t->Target == GL_TEXTURE_CUBE_MAP_ARB) {
|
||||
/* make sure that all six cube map level 0 images are the same size */
|
||||
const GLuint w = t->Image[0][baseLevel]->Width2;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue