pan/midgard: Remove indexing dependency of sysvals
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 10 Mar 2020 19:54:17 +0000 (15:54 -0400)
committerMarge Bot <eric+marge@anholt.net>
Wed, 11 Mar 2020 20:28:20 +0000 (20:28 +0000)
Ideally we would sync the compilers to use the same indexing scheme but
that's a lot more Midgard refactoring than I have time for right now.
This is good enough honestly.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4150>

src/panfrost/midgard/midgard_compile.c

index d1805a5f4d77685943b9169336a480585c36be08..db69619e0ec330b634de97370a20b52cdbec439e 100644 (file)
@@ -338,7 +338,7 @@ midgard_nir_sysval_for_intrinsic(nir_intrinsic_instr *instr)
 }
 
 static int
-sysval_for_instr(nir_instr *instr, unsigned *dest)
+sysval_for_instr(nir_instr *instr, nir_dest *dest)
 {
         nir_intrinsic_instr *intr;
         nir_dest *dst = NULL;
@@ -368,7 +368,7 @@ sysval_for_instr(nir_instr *instr, unsigned *dest)
         }
 
         if (dest && dst)
-                *dest = nir_dest_index(dst);
+                *dest = *dst;
 
         return sysval;
 }
@@ -1371,12 +1371,14 @@ static void
 emit_sysval_read(compiler_context *ctx, nir_instr *instr, signed dest_override,
                 unsigned nr_components, unsigned offset)
 {
-        unsigned dest = 0;
+        nir_dest nir_dest;
 
         /* Figure out which uniform this is */
-        int sysval = sysval_for_instr(instr, &dest);
+        int sysval = sysval_for_instr(instr, &nir_dest);
         void *val = _mesa_hash_table_u64_search(ctx->sysval_to_id, sysval);
 
+        unsigned dest = nir_dest_index(&nir_dest);
+
         if (dest_override >= 0)
                 dest = dest_override;