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:
parent
2abf555496
commit
d53101a9f3
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue