Mesa (master): vc4: Move qir_uniform() and the constant-value versions to vc4_qir.c/h.

Eric Anholt anholt at kemper.freedesktop.org
Fri Feb 20 07:36:16 UTC 2015


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

Author: Eric Anholt <eric at anholt.net>
Date:   Thu Feb 19 12:19:44 2015 -0800

vc4: Move qir_uniform() and the constant-value versions to vc4_qir.c/h.

I may want them in optimization passes, and they're not really particular
to the program translation stage.

---

 src/gallium/drivers/vc4/vc4_program.c |   45 ---------------------------------
 src/gallium/drivers/vc4/vc4_qir.c     |   33 ++++++++++++++++++++++++
 src/gallium/drivers/vc4/vc4_qir.h     |   16 ++++++++++++
 3 files changed, 49 insertions(+), 45 deletions(-)

diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index b904679..56a3a96 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -110,51 +110,6 @@ resize_qreg_array(struct vc4_compile *c,
 }
 
 static struct qreg
-qir_uniform(struct vc4_compile *c,
-            enum quniform_contents contents,
-            uint32_t data)
-{
-        for (int i = 0; i < c->num_uniforms; i++) {
-                if (c->uniform_contents[i] == contents &&
-                    c->uniform_data[i] == data) {
-                        return (struct qreg) { QFILE_UNIF, i };
-                }
-        }
-
-        uint32_t uniform = c->num_uniforms++;
-        struct qreg u = { QFILE_UNIF, uniform };
-
-        if (uniform >= c->uniform_array_size) {
-                c->uniform_array_size = MAX2(MAX2(16, uniform + 1),
-                                             c->uniform_array_size * 2);
-
-                c->uniform_data = reralloc(c, c->uniform_data,
-                                           uint32_t,
-                                           c->uniform_array_size);
-                c->uniform_contents = reralloc(c, c->uniform_contents,
-                                               enum quniform_contents,
-                                               c->uniform_array_size);
-        }
-
-        c->uniform_contents[uniform] = contents;
-        c->uniform_data[uniform] = data;
-
-        return u;
-}
-
-static struct qreg
-qir_uniform_ui(struct vc4_compile *c, uint32_t ui)
-{
-        return qir_uniform(c, QUNIFORM_CONSTANT, ui);
-}
-
-static struct qreg
-qir_uniform_f(struct vc4_compile *c, float f)
-{
-        return qir_uniform(c, QUNIFORM_CONSTANT, fui(f));
-}
-
-static struct qreg
 indirect_uniform_load(struct vc4_compile *c,
                       struct tgsi_full_src_register *src, int swiz)
 {
diff --git a/src/gallium/drivers/vc4/vc4_qir.c b/src/gallium/drivers/vc4/vc4_qir.c
index 5c1fdbd..9addf9c 100644
--- a/src/gallium/drivers/vc4/vc4_qir.c
+++ b/src/gallium/drivers/vc4/vc4_qir.c
@@ -423,6 +423,39 @@ qir_get_stage_name(enum qstage stage)
         return names[stage];
 }
 
+struct qreg
+qir_uniform(struct vc4_compile *c,
+            enum quniform_contents contents,
+            uint32_t data)
+{
+        for (int i = 0; i < c->num_uniforms; i++) {
+                if (c->uniform_contents[i] == contents &&
+                    c->uniform_data[i] == data) {
+                        return (struct qreg) { QFILE_UNIF, i };
+                }
+        }
+
+        uint32_t uniform = c->num_uniforms++;
+        struct qreg u = { QFILE_UNIF, uniform };
+
+        if (uniform >= c->uniform_array_size) {
+                c->uniform_array_size = MAX2(MAX2(16, uniform + 1),
+                                             c->uniform_array_size * 2);
+
+                c->uniform_data = reralloc(c, c->uniform_data,
+                                           uint32_t,
+                                           c->uniform_array_size);
+                c->uniform_contents = reralloc(c, c->uniform_contents,
+                                               enum quniform_contents,
+                                               c->uniform_array_size);
+        }
+
+        c->uniform_contents[uniform] = contents;
+        c->uniform_data[uniform] = data;
+
+        return u;
+}
+
 void
 qir_SF(struct vc4_compile *c, struct qreg src)
 {
diff --git a/src/gallium/drivers/vc4/vc4_qir.h b/src/gallium/drivers/vc4/vc4_qir.h
index a1b5560..af92c8c 100644
--- a/src/gallium/drivers/vc4/vc4_qir.h
+++ b/src/gallium/drivers/vc4/vc4_qir.h
@@ -33,6 +33,7 @@
 
 #include "util/macros.h"
 #include "util/simple_list.h"
+#include "util/u_math.h"
 #include "tgsi/tgsi_parse.h"
 
 enum qfile {
@@ -368,6 +369,9 @@ struct qinst *qir_inst4(enum qop op, struct qreg dst,
                         struct qreg c,
                         struct qreg d);
 void qir_remove_instruction(struct qinst *qinst);
+struct qreg qir_uniform(struct vc4_compile *c,
+                        enum quniform_contents contents,
+                        uint32_t data);
 void qir_reorder_uniforms(struct vc4_compile *c);
 void qir_emit(struct vc4_compile *c, struct qinst *inst);
 struct qreg qir_get_temp(struct vc4_compile *c);
@@ -400,6 +404,18 @@ void qpu_schedule_instructions(struct vc4_compile *c);
 
 void qir_SF(struct vc4_compile *c, struct qreg src);
 
+static inline struct qreg
+qir_uniform_ui(struct vc4_compile *c, uint32_t ui)
+{
+        return qir_uniform(c, QUNIFORM_CONSTANT, ui);
+}
+
+static inline struct qreg
+qir_uniform_f(struct vc4_compile *c, float f)
+{
+        return qir_uniform(c, QUNIFORM_CONSTANT, fui(f));
+}
+
 #define QIR_ALU0(name)                                                   \
 static inline struct qreg                                                \
 qir_##name(struct vc4_compile *c)                                        \




More information about the mesa-commit mailing list