mesa: Refactor validate_texture_wrap_mode to use a switch-statement

This makes the next couple changes a little easier.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Ian Romanick 2011-10-03 12:46:23 -07:00
parent 2abf555496
commit d53101a9f3
1 changed files with 42 additions and 35 deletions

View File

@ -29,7 +29,7 @@
* glTexParameter-related functions * glTexParameter-related functions
*/ */
#include <stdbool.h>
#include "main/glheader.h" #include "main/glheader.h"
#include "main/colormac.h" #include "main/colormac.h"
#include "main/context.h" #include "main/context.h"
@ -56,43 +56,50 @@ static GLboolean
validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap)
{ {
const struct gl_extensions * const e = & ctx->Extensions; const struct gl_extensions * const e = & ctx->Extensions;
bool supported;
if (target == GL_TEXTURE_RECTANGLE_NV) { switch (wrap) {
if (wrap == GL_CLAMP || wrap == GL_CLAMP_TO_EDGE || case GL_CLAMP:
(wrap == GL_CLAMP_TO_BORDER && e->ARB_texture_border_clamp)) supported = (target != GL_TEXTURE_EXTERNAL_OES);
return GL_TRUE; break;
}
else if (target == GL_TEXTURE_EXTERNAL_OES) { case GL_CLAMP_TO_EDGE:
if (wrap == GL_CLAMP_TO_EDGE) supported = true;
return GL_TRUE; break;
}
else { case GL_CLAMP_TO_BORDER:
switch (wrap) { supported = e->ARB_texture_border_clamp
case GL_CLAMP: && (target != GL_TEXTURE_EXTERNAL_OES);
case GL_REPEAT: break;
case GL_CLAMP_TO_EDGE:
case GL_MIRRORED_REPEAT: case GL_REPEAT:
return GL_TRUE; case GL_MIRRORED_REPEAT:
case GL_CLAMP_TO_BORDER: supported = (target != GL_TEXTURE_RECTANGLE_NV)
if (e->ARB_texture_border_clamp) && (target != GL_TEXTURE_EXTERNAL_OES);
return GL_TRUE; break;
break;
case GL_MIRROR_CLAMP_EXT: case GL_MIRROR_CLAMP_EXT:
case GL_MIRROR_CLAMP_TO_EDGE_EXT: case GL_MIRROR_CLAMP_TO_EDGE_EXT:
if (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp) supported = (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp)
return GL_TRUE; && (target != GL_TEXTURE_RECTANGLE_NV)
break; && (target != GL_TEXTURE_EXTERNAL_OES);
case GL_MIRROR_CLAMP_TO_BORDER_EXT: break;
if (e->EXT_texture_mirror_clamp)
return GL_TRUE; case GL_MIRROR_CLAMP_TO_BORDER_EXT:
break; supported = e->EXT_texture_mirror_clamp
default: && (target != GL_TEXTURE_RECTANGLE_NV)
break; && (target != GL_TEXTURE_EXTERNAL_OES);
} break;
default:
supported = false;
break;
} }
_mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)", wrap ); if (!supported)
return GL_FALSE; _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)", wrap );
return supported;
} }