freedreno/ir3: don't ignore local vars
authorRob Clark <robclark@freedesktop.org>
Sat, 7 Nov 2015 13:46:02 +0000 (08:46 -0500)
committerRob Clark <robclark@freedesktop.org>
Sat, 30 Jan 2016 17:27:57 +0000 (12:27 -0500)
With glsl_to_nir we end up with local variables, instead of global, for
arrays.

Note that we'll eventually have to do something more clever, I think,
when we support multiple functions, but that will probably take some
work in a few places.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c

index 2ab46d23ec04a5a99eb62fff33a5c71f006002a2..b564c4ab86413634028afa5fb22a52c387cdd9df 100644 (file)
@@ -2163,11 +2163,17 @@ emit_instructions(struct ir3_compile *ctx)
                setup_output(ctx, var);
        }
 
-       /* Setup variables (which should only be arrays): */
+       /* Setup global variables (which should only be arrays): */
        nir_foreach_variable(var, &ctx->s->globals) {
                declare_var(ctx, var);
        }
 
+       /* Setup local variables (which should only be arrays): */
+       /* NOTE: need to do something more clever when we support >1 fxn */
+       nir_foreach_variable(var, &fxn->locals) {
+               declare_var(ctx, var);
+       }
+
        /* And emit the body: */
        ctx->impl = fxn;
        emit_function(ctx, fxn);