tgsi: fix incorrect tgsi_shader_info::num_tokens computation
authorBrian Paul <brianp@vmware.com>
Thu, 17 May 2018 19:38:05 +0000 (13:38 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 17 May 2018 21:02:05 +0000 (15:02 -0600)
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).

Reviewed-by: Neha Bhende<bhenden@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/auxiliary/tgsi/tgsi_scan.c

index 18488d776e9137a8fa61087c743b13d2a1797e95..685a413c4e6b5b29800d2839e6ce37ab04ea73a3 100644 (file)
@@ -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 ) {