tgsi/ureg: return correct token count in ureg_get_tokens
authorGrazvydas Ignotas <notasas@gmail.com>
Thu, 2 Mar 2017 22:46:53 +0000 (00:46 +0200)
committerTimothy Arceri <tarceri@itsqueeze.com>
Fri, 3 Mar 2017 01:11:55 +0000 (12:11 +1100)
Valgrind reports that the shader cache writes uninitialized data to disk.
Turns out ureg_get_tokens() is returning the count of allocated tokens
instead of how many are actually used, so the cache writes out unused
space at the end. Use the real count instead.

This change should not cause regressions elsewhere because the only
ureg_get_tokens() user that cares about token count is the shader cache.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/gallium/auxiliary/tgsi/tgsi_ureg.c

index 8d1b6cc7da454193c84d395f0809ae63b4c54489..ab0a3ebe1a578b431339f30cb9a764636cc6bea4 100644 (file)
@@ -2141,7 +2141,7 @@ const struct tgsi_token *ureg_get_tokens( struct ureg_program *ureg,
    tokens = &ureg->domain[DOMAIN_DECL].tokens[0].token;
 
    if (nr_tokens) 
-      *nr_tokens = ureg->domain[DOMAIN_DECL].size;
+      *nr_tokens = ureg->domain[DOMAIN_DECL].count;
 
    ureg->domain[DOMAIN_DECL].tokens = 0;
    ureg->domain[DOMAIN_DECL].size = 0;