mesa: add KHR_no_error support for glActiveTexture()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Samuel Pitoiset 2017-05-25 12:18:45 +02:00
parent 48b91103ce
commit 5521dc2477
3 changed files with 29 additions and 12 deletions

View file

@ -4268,7 +4268,7 @@
<enum name="DOT3_RGB" value="0x86AE"/>
<enum name="DOT3_RGBA" value="0x86AF"/>
<function name="ActiveTexture" es1="1.0" es2="2.0">
<function name="ActiveTexture" es1="1.0" es2="2.0" no_error="true">
<param name="texture" type="GLenum"/>
<glx rop="197"/>
</function>

View file

@ -279,14 +279,12 @@ calculate_derived_texenv( struct gl_tex_env_combine_state *state,
}
/* GL_ARB_multitexture */
void GLAPIENTRY
_mesa_ActiveTexture(GLenum texture)
static ALWAYS_INLINE void
active_texture(GLenum texture, bool no_error)
{
const GLuint texUnit = texture - GL_TEXTURE0;
GLuint k;
GET_CURRENT_CONTEXT(ctx);
if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE))
@ -296,14 +294,16 @@ _mesa_ActiveTexture(GLenum texture)
if (ctx->Texture.CurrentUnit == texUnit)
return;
k = _mesa_max_tex_unit(ctx);
if (!no_error) {
GLuint k = _mesa_max_tex_unit(ctx);
assert(k <= ARRAY_SIZE(ctx->Texture.Unit));
assert(k <= ARRAY_SIZE(ctx->Texture.Unit));
if (texUnit >= k) {
_mesa_error(ctx, GL_INVALID_ENUM, "glActiveTexture(texture=%s)",
_mesa_enum_to_string(texture));
return;
if (texUnit >= k) {
_mesa_error(ctx, GL_INVALID_ENUM, "glActiveTexture(texture=%s)",
_mesa_enum_to_string(texture));
return;
}
}
FLUSH_VERTICES(ctx, _NEW_TEXTURE_STATE);
@ -316,6 +316,20 @@ _mesa_ActiveTexture(GLenum texture)
}
void GLAPIENTRY
_mesa_ActiveTexture_no_error(GLenum texture)
{
active_texture(texture, true);
}
void GLAPIENTRY
_mesa_ActiveTexture(GLenum texture)
{
active_texture(texture, false);
}
/* GL_ARB_multitexture */
void GLAPIENTRY
_mesa_ClientActiveTexture(GLenum texture)

View file

@ -77,6 +77,9 @@ _mesa_print_texunit_state( struct gl_context *ctx, GLuint unit );
*/
/*@{*/
extern void GLAPIENTRY
_mesa_ActiveTexture_no_error( GLenum target );
extern void GLAPIENTRY
_mesa_ActiveTexture( GLenum target );