mesa: extract _mesa_is_legal_tex_storage_format helper

This is about to be used in teximagemultisample() when immutable=true.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Chris Forbes 2013-03-22 19:58:03 +13:00
parent fdc5941972
commit 7f32b9560b
2 changed files with 23 additions and 17 deletions

View File

@ -202,20 +202,9 @@ clear_texture_fields(struct gl_context *ctx,
}
/**
* Do error checking for calls to glTexStorage1/2/3D().
* If an error is found, record it with _mesa_error(), unless the target
* is a proxy texture.
* \return GL_TRUE if any error, GL_FALSE otherwise.
*/
static GLboolean
tex_storage_error_check(struct gl_context *ctx, GLuint dims, GLenum target,
GLsizei levels, GLenum internalformat,
GLsizei width, GLsizei height, GLsizei depth)
GLboolean
_mesa_is_legal_tex_storage_format(struct gl_context *ctx, GLenum internalformat)
{
struct gl_texture_object *texObj;
GLboolean legalFormat;
/* check internal format - note that only sized formats are allowed */
switch (internalformat) {
case GL_ALPHA:
@ -250,13 +239,27 @@ tex_storage_error_check(struct gl_context *ctx, GLuint dims, GLenum target,
case GL_LUMINANCE_INTEGER_EXT:
case GL_LUMINANCE_ALPHA_INTEGER_EXT:
/* these unsized formats are illegal */
legalFormat = GL_FALSE;
break;
return GL_FALSE;
default:
legalFormat = _mesa_base_tex_format(ctx, internalformat) > 0;
return _mesa_base_tex_format(ctx, internalformat) > 0;
}
}
if (!legalFormat) {
/**
* Do error checking for calls to glTexStorage1/2/3D().
* If an error is found, record it with _mesa_error(), unless the target
* is a proxy texture.
* \return GL_TRUE if any error, GL_FALSE otherwise.
*/
static GLboolean
tex_storage_error_check(struct gl_context *ctx, GLuint dims, GLenum target,
GLsizei levels, GLenum internalformat,
GLsizei width, GLsizei height, GLsizei depth)
{
struct gl_texture_object *texObj;
if (!_mesa_is_legal_tex_storage_format(ctx, internalformat)) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glTexStorage%uD(internalformat = %s)", dims,
_mesa_lookup_enum_by_nr(internalformat));

View File

@ -57,5 +57,8 @@ _mesa_TextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels,
GLenum internalformat,
GLsizei width, GLsizei height, GLsizei depth);
extern GLboolean
_mesa_is_legal_tex_storage_format(struct gl_context *ctx, GLenum internalformat);
#endif /* TEXSTORAGE_H */