Mesa (master): vc4: Reuse uniform_data/ contents indices when making uniforms.

Eric Anholt anholt at kemper.freedesktop.org
Fri Oct 24 17:08:59 UTC 2014


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

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Oct 24 17:16:59 2014 +0100

vc4: Reuse uniform_data/contents indices when making uniforms.

This allows vc4_opt_cse.c to CSE-away operations involving the same
uniform values.

total instructions in shared programs: 37341 -> 36906 (-1.16%)
instructions in affected programs:     10233 -> 9798 (-4.25%)
total uniforms in shared programs: 10523 -> 10320 (-1.93%)
uniforms in affected programs:     2467 -> 2264 (-8.23%)

---

 src/gallium/drivers/vc4/vc4_program.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 0674e4f..c6b7edb 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -114,6 +114,13 @@ add_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 };
 




More information about the mesa-commit mailing list