vc4: Move qir_uniform() and the constant-value versions to vc4_qir.c/h.
authorEric Anholt <eric@anholt.net>
Thu, 19 Feb 2015 20:19:44 +0000 (12:19 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 20 Feb 2015 07:35:17 +0000 (23:35 -0800)
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
src/gallium/drivers/vc4/vc4_qir.c
src/gallium/drivers/vc4/vc4_qir.h

index b904679ef00a15665d2bfb82b5c136d782bcd554..56a3a96c1b5c0472c50ed36b6cfa9a698dfea840 100644 (file)
@@ -109,51 +109,6 @@ resize_qreg_array(struct vc4_compile *c,
                 (*regs)[i] = c->undef;
 }
 
-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)
index 5c1fdbddfb6369d93f95f79c3cdfded233461d95..9addf9cafc8e05bd6565cdbdb873d3b470cee8bc 100644 (file)
@@ -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)
 {
index a1b556055847fe3ec16c5b5dc38065fcb24dae09..af92c8c66a92176d91722219143c6afdb62041d3 100644 (file)
@@ -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)                                        \