Mesa (master): vc4: Replace the qinst src[] with a fixed-size array.

Eric Anholt anholt at kemper.freedesktop.org
Tue Nov 29 17:04:59 UTC 2016


Module: Mesa
Branch: master
Commit: 51087327f2ba929739719b2ae243d8c69d31346f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=51087327f2ba929739719b2ae243d8c69d31346f

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Nov 15 12:36:20 2016 -0800

vc4: Replace the qinst src[] with a fixed-size array.

This may have made a tiny bit of sense when we had one 4-arg inst per
shader, but if we only ever put 2 things in, having a pointer to 2 things
almost every instruction is pointless indirection.

---

 src/gallium/drivers/vc4/vc4_qir.c      | 2 --
 src/gallium/drivers/vc4/vc4_qir.h      | 2 +-
 src/gallium/drivers/vc4/vc4_qpu_emit.c | 2 +-
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/vc4/vc4_qir.c b/src/gallium/drivers/vc4/vc4_qir.c
index 5999cc1..8bd016c 100644
--- a/src/gallium/drivers/vc4/vc4_qir.c
+++ b/src/gallium/drivers/vc4/vc4_qir.c
@@ -477,7 +477,6 @@ qir_inst(enum qop op, struct qreg dst, struct qreg src0, struct qreg src1)
 
         inst->op = op;
         inst->dst = dst;
-        inst->src = calloc(2, sizeof(inst->src[0]));
         inst->src[0] = src0;
         inst->src[1] = src1;
         inst->cond = QPU_COND_ALWAYS;
@@ -598,7 +597,6 @@ qir_remove_instruction(struct vc4_compile *c, struct qinst *qinst)
                 c->defs[qinst->dst.index] = NULL;
 
         list_del(&qinst->link);
-        free(qinst->src);
         free(qinst);
 }
 
diff --git a/src/gallium/drivers/vc4/vc4_qir.h b/src/gallium/drivers/vc4/vc4_qir.h
index 4c240c7..eec50c3 100644
--- a/src/gallium/drivers/vc4/vc4_qir.h
+++ b/src/gallium/drivers/vc4/vc4_qir.h
@@ -203,7 +203,7 @@ struct qinst {
 
         enum qop op;
         struct qreg dst;
-        struct qreg *src;
+        struct qreg src[2];
         bool sf;
         bool cond_is_exec_mask;
         uint8_t cond;
diff --git a/src/gallium/drivers/vc4/vc4_qpu_emit.c b/src/gallium/drivers/vc4/vc4_qpu_emit.c
index e2f0425..2cc0f30 100644
--- a/src/gallium/drivers/vc4/vc4_qpu_emit.c
+++ b/src/gallium/drivers/vc4/vc4_qpu_emit.c
@@ -288,7 +288,7 @@ vc4_generate_code_block(struct vc4_compile *c,
                 };
 
                 uint64_t unpack = 0;
-                struct qpu_reg src[4];
+                struct qpu_reg src[ARRAY_SIZE(qinst->src)];
                 for (int i = 0; i < qir_get_op_nsrc(qinst->op); i++) {
                         int index = qinst->src[i].index;
                         switch (qinst->src[i].file) {




More information about the mesa-commit mailing list