[Mesa-dev] [PATCH 1/2] mesa: add active_texture() helper

Ian Romanick idr at freedesktop.org
Thu May 25 23:38:11 UTC 2017


On 05/23/2017 03:41 AM, Samuel Pitoiset wrote:
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/mesa/main/texstate.c | 24 ++++++++++++++----------
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
> index 1aac3cdbd8b..32d5c0b7f7c 100644
> --- a/src/mesa/main/texstate.c
> +++ b/src/mesa/main/texstate.c
> @@ -279,6 +279,19 @@ calculate_derived_texenv( struct gl_tex_env_combine_state *state,
>  }
>  
>  
> +static void active_texture(struct gl_context *ctx, const GLuint texUnit)

static void
active_texture(struct gl_context *ctx, const GLuint texUnit)

> +{
> +   if (ctx->Texture.CurrentUnit == texUnit)
> +      return;
> +
> +   FLUSH_VERTICES(ctx, _NEW_TEXTURE_STATE);
> +
> +   ctx->Texture.CurrentUnit = texUnit;
> +   if (ctx->Transform.MatrixMode == GL_TEXTURE) {
> +      /* update current stack pointer */
> +      ctx->CurrentStack = &ctx->TextureMatrixStack[texUnit];
> +   }
> +}
>  
>  
>  /* GL_ARB_multitexture */
> @@ -293,9 +306,6 @@ _mesa_ActiveTexture(GLenum texture)
>        _mesa_debug(ctx, "glActiveTexture %s\n",
>                    _mesa_enum_to_string(texture));
>  
> -   if (ctx->Texture.CurrentUnit == texUnit)
> -      return;
> -

Removing this is going to hurt performance in the (common) case that
isn't using no_error.

>     k = _mesa_max_tex_unit(ctx);
>  
>     assert(k <= ARRAY_SIZE(ctx->Texture.Unit));
> @@ -306,13 +316,7 @@ _mesa_ActiveTexture(GLenum texture)
>        return;
>     }
>  
> -   FLUSH_VERTICES(ctx, _NEW_TEXTURE_STATE);
> -
> -   ctx->Texture.CurrentUnit = texUnit;
> -   if (ctx->Transform.MatrixMode == GL_TEXTURE) {
> -      /* update current stack pointer */
> -      ctx->CurrentStack = &ctx->TextureMatrixStack[texUnit];
> -   }
> +   active_texture(ctx, texUnit);
>  }
>  
>  
> 



More information about the mesa-dev mailing list