lima/ppir: don't assume that load coords gets value from register
[mesa.git] / src / gallium / drivers / lima / ir / pp / codegen.c
index f08f83a9f4376728ea15060baa0c9000ebcc2e31..8dac09bd471347560710fe69ec29752825176c04 100644 (file)
@@ -94,14 +94,15 @@ static void ppir_codegen_encode_varying(ppir_node *node, void *code)
       f->reg.dest = index >> 2;
       f->reg.mask = dest->write_mask << (index & 0x3);
 
-      f->reg.source_type = 1;
-
-      ppir_src *src = &load->src;
-      index = ppir_target_get_src_reg_index(src);
-      f->reg.source = index >> 2;
-      f->reg.negate = src->negate;
-      f->reg.absolute = src->absolute;
-      f->reg.swizzle = encode_swizzle(src->swizzle, index & 0x3, 0);
+      if (load->num_src) {
+         f->reg.source_type = 1;
+         ppir_src *src = &load->src;
+         index = ppir_target_get_src_reg_index(src);
+         f->reg.source = index >> 2;
+         f->reg.negate = src->negate;
+         f->reg.absolute = src->absolute;
+         f->reg.swizzle = encode_swizzle(src->swizzle, index & 0x3, 0);
+      }
    }
 }