Module: Mesa Branch: main Commit: 508f917d8c53c25a1e656409e3228ad067c9369f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=508f917d8c53c25a1e656409e3228ad067c9369f
Author: Connor Abbott <[email protected]> Date: Mon Nov 8 15:06:33 2021 +0100 util/dag: Make edge data a uintptr_t Nobody was actually using it as a pointer, and I'm going to introduce a shared function which relies on it not being a pointer so let's fix this once and for all. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13722> --- src/broadcom/compiler/qpu_schedule.c | 2 +- src/compiler/nir/nir_schedule.c | 4 ++-- src/freedreno/ir3/ir3_postsched.c | 10 +++++----- src/freedreno/ir3/ir3_sched.c | 2 +- src/gallium/drivers/vc4/vc4_qir_schedule.c | 2 +- src/gallium/drivers/vc4/vc4_qpu_schedule.c | 2 +- src/util/dag.c | 4 ++-- src/util/dag.h | 4 ++-- src/util/tests/dag_test.cpp | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/broadcom/compiler/qpu_schedule.c b/src/broadcom/compiler/qpu_schedule.c index 055ad1f77d7..f987766a1b9 100644 --- a/src/broadcom/compiler/qpu_schedule.c +++ b/src/broadcom/compiler/qpu_schedule.c @@ -97,7 +97,7 @@ add_dep(struct schedule_state *state, bool write) { bool write_after_read = !write && state->dir == R; - void *edge_data = (void *)(uintptr_t)write_after_read; + uintptr_t edge_data = write_after_read; if (!before || !after) return; diff --git a/src/compiler/nir/nir_schedule.c b/src/compiler/nir/nir_schedule.c index d13623217de..8ae4fb2f1d8 100644 --- a/src/compiler/nir/nir_schedule.c +++ b/src/compiler/nir/nir_schedule.c @@ -212,9 +212,9 @@ add_dep(nir_deps_state *state, assert(before != after); if (state->dir == F) - dag_add_edge(&before->dag, &after->dag, NULL); + dag_add_edge(&before->dag, &after->dag, 0); else - dag_add_edge(&after->dag, &before->dag, NULL); + dag_add_edge(&after->dag, &before->dag, 0); } diff --git a/src/freedreno/ir3/ir3_postsched.c b/src/freedreno/ir3/ir3_postsched.c index 507302a0090..162c2dccb6c 100644 --- a/src/freedreno/ir3/ir3_postsched.c +++ b/src/freedreno/ir3/ir3_postsched.c @@ -382,9 +382,9 @@ add_dep(struct ir3_postsched_deps_state *state, assert(before != after); if (state->direction == F) { - dag_add_edge(&before->dag, &after->dag, NULL); + dag_add_edge(&before->dag, &after->dag, 0); } else { - dag_add_edge(&after->dag, &before->dag, NULL); + dag_add_edge(&after->dag, &before->dag, 0); } } @@ -593,7 +593,7 @@ sched_dag_init(struct ir3_postsched_ctx *ctx) if (src->block != instr->block) continue; - dag_add_edge(&sn->dag, &n->dag, NULL); + dag_add_edge(&sn->dag, &n->dag, 0); } if (is_input(instr)) { @@ -602,14 +602,14 @@ sched_dag_init(struct ir3_postsched_ctx *ctx) util_dynarray_foreach (&inputs, struct ir3_instruction *, instrp) { struct ir3_instruction *input = *instrp; struct ir3_postsched_node *in = input->data; - dag_add_edge(&in->dag, &n->dag, NULL); + dag_add_edge(&in->dag, &n->dag, 0); } util_dynarray_append(&kills, struct ir3_instruction *, instr); } else if (is_tex(instr) || is_mem(instr)) { util_dynarray_foreach (&kills, struct ir3_instruction *, instrp) { struct ir3_instruction *kill = *instrp; struct ir3_postsched_node *kn = kill->data; - dag_add_edge(&kn->dag, &n->dag, NULL); + dag_add_edge(&kn->dag, &n->dag, 0); } } } diff --git a/src/freedreno/ir3/ir3_sched.c b/src/freedreno/ir3/ir3_sched.c index c6893747118..6be356d17b0 100644 --- a/src/freedreno/ir3/ir3_sched.c +++ b/src/freedreno/ir3/ir3_sched.c @@ -994,7 +994,7 @@ sched_node_add_dep(struct ir3_instruction *instr, struct ir3_instruction *src, if (instr->opc == OPC_META_COLLECT) sn->collect = instr; - dag_add_edge(&sn->dag, &n->dag, NULL); + dag_add_edge(&sn->dag, &n->dag, 0); unsigned d = ir3_delayslots(src, instr, i, true); diff --git a/src/gallium/drivers/vc4/vc4_qir_schedule.c b/src/gallium/drivers/vc4/vc4_qir_schedule.c index fdd922fde4d..7286f731ff5 100644 --- a/src/gallium/drivers/vc4/vc4_qir_schedule.c +++ b/src/gallium/drivers/vc4/vc4_qir_schedule.c @@ -96,7 +96,7 @@ add_dep(enum direction dir, after = t; } - dag_add_edge(&after->dag, &before->dag, NULL); + dag_add_edge(&after->dag, &before->dag, 0); } static void diff --git a/src/gallium/drivers/vc4/vc4_qpu_schedule.c b/src/gallium/drivers/vc4/vc4_qpu_schedule.c index cfacc23b3b1..055bd0395ba 100644 --- a/src/gallium/drivers/vc4/vc4_qpu_schedule.c +++ b/src/gallium/drivers/vc4/vc4_qpu_schedule.c @@ -99,7 +99,7 @@ add_dep(struct schedule_state *state, bool write) { bool write_after_read = !write && state->dir == R; - void *edge_data = (void *)(uintptr_t)write_after_read; + uintptr_t edge_data = write_after_read; if (!before || !after) return; diff --git a/src/util/dag.c b/src/util/dag.c index 8e8d2d68506..97fd7386a49 100644 --- a/src/util/dag.c +++ b/src/util/dag.c @@ -31,7 +31,7 @@ * list may contain multiple edges to the same child with different data. */ void -dag_add_edge(struct dag_node *parent, struct dag_node *child, void *data) +dag_add_edge(struct dag_node *parent, struct dag_node *child, uintptr_t data) { util_dynarray_foreach(&parent->edges, struct dag_edge, edge) { if (edge->child == child && edge->data == data) @@ -67,7 +67,7 @@ dag_remove_edge(struct dag *dag, struct dag_edge *edge) list_addtail(&child->link, &dag->heads); edge->child = NULL; - edge->data = NULL; + edge->data = 0; } /** diff --git a/src/util/dag.h b/src/util/dag.h index bb46b483972..fbc3ed93d48 100644 --- a/src/util/dag.h +++ b/src/util/dag.h @@ -35,7 +35,7 @@ extern "C" { struct dag_edge { struct dag_node *child; /* User-defined data associated with the edge. */ - void *data; + uintptr_t data; }; struct dag_node { @@ -52,7 +52,7 @@ struct dag { struct dag *dag_create(void *mem_ctx); void dag_init_node(struct dag *dag, struct dag_node *node); -void dag_add_edge(struct dag_node *parent, struct dag_node *child, void *data); +void dag_add_edge(struct dag_node *parent, struct dag_node *child, uintptr_t data); void dag_remove_edge(struct dag *dag, struct dag_edge *edge); void dag_traverse_bottom_up(struct dag *dag, void (*cb)(struct dag_node *node, void *data), void *data); diff --git a/src/util/tests/dag_test.cpp b/src/util/tests/dag_test.cpp index f807962f793..d8c2ae9483c 100644 --- a/src/util/tests/dag_test.cpp +++ b/src/util/tests/dag_test.cpp @@ -53,7 +53,7 @@ struct node: public dag_node { /* Overload >> to make describing our test case graphs easier to read */ struct node &operator>>(struct node &child) { dag_add_edge(static_cast<struct dag_node *>(this), - static_cast<struct dag_node *>(&child), NULL); + static_cast<struct dag_node *>(&child), 0); return child; } };
