summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/lima/ir/pp/ppir.h
diff options
context:
space:
mode:
authorVasily Khoruzhick <anarsoul@gmail.com>2019-09-14 11:01:03 -0700
committerVasily Khoruzhick <anarsoul@gmail.com>2019-09-24 20:33:13 -0700
commit780985d1b848db8727eb7c96599cc68e242e0368 (patch)
tree1cc1a3ae2ea9db389f550407afeccdb37979f8bc /src/gallium/drivers/lima/ir/pp/ppir.h
parent4fcfed426aa0b44dc4e94ec919428346ff0a33a0 (diff)
downloadmesa-780985d1b848db8727eb7c96599cc68e242e0368.tar.gz
lima/ppir: add node dependency types
Currently we add dependecies in 3 cases: 1) One node consumes value produced by another node 2) Sequency dependencies 3) Write after read dependencies 2) and 3) only affect scheduler decisions since we still can use pipeline register if we have only 1 dependency of type 1). Add 3 dependency types and mark dependencies as we add them. Reviewed-by: Qiang Yu <yuq825@gmail.com> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Diffstat (limited to 'src/gallium/drivers/lima/ir/pp/ppir.h')
-rw-r--r--src/gallium/drivers/lima/ir/pp/ppir.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gallium/drivers/lima/ir/pp/ppir.h b/src/gallium/drivers/lima/ir/pp/ppir.h
index cac6fb88f73..96ae1e0df2c 100644
--- a/src/gallium/drivers/lima/ir/pp/ppir.h
+++ b/src/gallium/drivers/lima/ir/pp/ppir.h
@@ -136,8 +136,15 @@ typedef struct {
extern const ppir_op_info ppir_op_infos[];
+typedef enum {
+ ppir_dep_src,
+ ppir_dep_write_after_read,
+ ppir_dep_sequence,
+} ppir_dep_type;
+
typedef struct {
void *pred, *succ;
+ ppir_dep_type type;
struct list_head pred_link;
struct list_head succ_link;
} ppir_dep;
@@ -377,7 +384,7 @@ typedef struct ppir_compiler {
} ppir_compiler;
void *ppir_node_create(ppir_block *block, ppir_op op, int index, unsigned mask);
-void ppir_node_add_dep(ppir_node *succ, ppir_node *pred);
+void ppir_node_add_dep(ppir_node *succ, ppir_node *pred, ppir_dep_type type);
void ppir_node_remove_dep(ppir_dep *dep);
void ppir_node_delete(ppir_node *node);
void ppir_node_print_prog(ppir_compiler *comp);
@@ -404,6 +411,8 @@ static inline bool ppir_node_has_single_succ(ppir_node *node)
return list_is_singular(&node->succ_list);
}
+bool ppir_node_has_single_src_succ(ppir_node *node);
+
static inline ppir_node *ppir_node_first_succ(ppir_node *node)
{
return list_first_entry(&node->succ_list, ppir_dep, succ_link)->succ;