freedreno/ir3: avoid some spurious sync bits
authorRob Clark <robdclark@gmail.com>
Mon, 15 Jan 2018 19:58:41 +0000 (14:58 -0500)
committerRob Clark <robdclark@gmail.com>
Sat, 10 Feb 2018 19:54:58 +0000 (14:54 -0500)
Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/ir3/ir3_legalize.c

index b4d5db58ccb6ca4d11fe683614716fda0cb28356..9d443d72c33b06c61407a38e2ae6252ea1bcfd77 100644 (file)
@@ -116,6 +116,7 @@ legalize_block(struct ir3_legalize_ctx *ctx, struct ir3_block *block)
                                 */
                                if (regmask_get(&needs_ss, reg)) {
                                        n->flags |= IR3_INSTR_SS;
+                                       regmask_init(&needs_ss_war);
                                        regmask_init(&needs_ss);
                                }
 
@@ -137,7 +138,8 @@ legalize_block(struct ir3_legalize_ctx *ctx, struct ir3_block *block)
                        reg = n->regs[0];
                        if (regmask_get(&needs_ss_war, reg)) {
                                n->flags |= IR3_INSTR_SS;
-                               regmask_init(&needs_ss_war); // ??? I assume?
+                               regmask_init(&needs_ss_war);
+                               regmask_init(&needs_ss);
                        }
 
                        if (last_rel && (reg->num == regid(REG_A0, 0))) {