Much better. Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
On 05/25/2017 03:18 AM, Samuel Pitoiset wrote: > v2: add active_texture() with ALWAYS_INLINE and no_error param > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/mapi/glapi/gen/gl_API.xml | 2 +- > src/mesa/main/texstate.c | 36 +++++++++++++++++++++++++----------- > src/mesa/main/texstate.h | 3 +++ > 3 files changed, 29 insertions(+), 12 deletions(-) > > diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml > index 630d6b8a5b..8f93318b95 100644 > --- a/src/mapi/glapi/gen/gl_API.xml > +++ b/src/mapi/glapi/gen/gl_API.xml > @@ -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> > diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c > index 1aac3cdbd8..1949ec2a84 100644 > --- a/src/mesa/main/texstate.c > +++ b/src/mesa/main/texstate.c > @@ -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) > diff --git a/src/mesa/main/texstate.h b/src/mesa/main/texstate.h > index cb329b07bf..7c74329a64 100644 > --- a/src/mesa/main/texstate.h > +++ b/src/mesa/main/texstate.h > @@ -78,6 +78,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 ); > > extern void GLAPIENTRY > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev