mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-19 21:00:40 +02:00
mesa: add integer texture completeness check
Per the spec, only nearest filtering is supported for integer textures. Otherwise, the texture is incomplete. Reviewed-by: José Fonseca <jfonseca@vmware.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
f4a93e0665
commit
73fd269d2f
3 changed files with 15 additions and 0 deletions
|
|
@ -1318,6 +1318,7 @@ struct gl_texture_object
|
|||
GLboolean GenerateMipmap; /**< GL_SGIS_generate_mipmap */
|
||||
GLboolean _BaseComplete; /**< Is the base texture level valid? */
|
||||
GLboolean _MipmapComplete; /**< Is the whole mipmap valid? */
|
||||
GLboolean _IsIntegerFormat; /**< Does the texture store integer values? */
|
||||
GLboolean _RenderToTexture; /**< Any rendering to this texture? */
|
||||
GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */
|
||||
GLboolean Immutable; /**< GL_ARB_texture_storage */
|
||||
|
|
|
|||
|
|
@ -478,6 +478,12 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Check if the texture values are integer */
|
||||
{
|
||||
GLenum datatype = _mesa_get_format_datatype(baseImage->TexFormat);
|
||||
t->_IsIntegerFormat = datatype == GL_INT || datatype == GL_UNSIGNED_INT;
|
||||
}
|
||||
|
||||
/* Compute _MaxLevel (the maximum mipmap level we'll sample from given the
|
||||
* mipmap image sizes and GL_TEXTURE_MAX_LEVEL state).
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -83,6 +83,14 @@ static inline GLboolean
|
|||
_mesa_is_texture_complete(const struct gl_texture_object *texObj,
|
||||
const struct gl_sampler_object *sampler)
|
||||
{
|
||||
if (texObj->_IsIntegerFormat &&
|
||||
(sampler->MagFilter != GL_NEAREST ||
|
||||
(sampler->MinFilter != GL_NEAREST &&
|
||||
sampler->MinFilter != GL_NEAREST_MIPMAP_NEAREST))) {
|
||||
/* If the format is integer, only nearest filtering is allowed */
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
if (_mesa_is_mipmap_filter(sampler))
|
||||
return texObj->_MipmapComplete;
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue