lima/ppir: don't attempt to clone tex coords if it's not varying
authorVasily Khoruzhick <anarsoul@gmail.com>
Tue, 24 Sep 2019 04:20:07 +0000 (21:20 -0700)
committerVasily Khoruzhick <anarsoul@gmail.com>
Wed, 25 Sep 2019 03:07:16 +0000 (03:07 +0000)
It makes no sense to clone texture coords if it's not varying, moreover
we don't support cloning ALU nodes.

Fixes: 1c1890fa7077 ("lima/ppir: clone uniforms and load_coords into each successor")
Reviewed-by: Andreas Baierl <ichgeh@imkreisrum.de>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
src/gallium/drivers/lima/ir/pp/node.c

index 20c48a1..ded556d 100644 (file)
@@ -635,9 +635,16 @@ ppir_node_clone_tex(ppir_block *block, ppir_node *node)
    list_addtail(&new_tnode->node.list, &block->node_list);
 
    if (tex_coords) {
-      new_tex_coords = ppir_node_clone(block, tex_coords);
-      if (!new_tex_coords)
-         return NULL;
+      switch (tex_coords->op) {
+      case ppir_op_load_varying:
+      case ppir_op_load_coords:
+         new_tex_coords = ppir_node_clone(block, tex_coords);
+         assert(new_tex_coords);
+         break;
+      default:
+         new_tex_coords = tex_coords;
+         break;
+      }
    }
 
    ppir_dest *dest = ppir_node_get_dest(node);