[Mesa-dev] [PATCH] tgsi: fix incorrect tgsi_shader_info::num_tokens computation

Roland Scheidegger sroland at vmware.com
Thu May 17 20:59:47 UTC 2018


Oh yes, that looks quite wrong.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>

Am 17.05.2018 um 22:06 schrieb Brian Paul:
> We were incrementing num_tokens in each loop iteration while parsing
> the shader.  But each call to tgsi_parse_token() can consume more than
> one token (and often does).  Instead, just call the tgsi_num_tokens()
> function.
> 
> Luckily, this issue doesn't seem to effect any current users of this
> field (llvmpipe just checks for <= 1, for example).
> ---
>  src/gallium/auxiliary/tgsi/tgsi_scan.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
> index 18488d7..685a413 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
> @@ -836,13 +836,12 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
>            procType == PIPE_SHADER_TESS_EVAL ||
>            procType == PIPE_SHADER_COMPUTE);
>     info->processor = procType;
> +   info->num_tokens = tgsi_num_tokens(parse.Tokens);
>  
>     /**
>      ** Loop over incoming program tokens/instructions
>      */
>     while (!tgsi_parse_end_of_tokens(&parse)) {
> -      info->num_tokens++;
> -
>        tgsi_parse_token( &parse );
>  
>        switch( parse.FullToken.Token.Type ) {
> 



More information about the mesa-dev mailing list