Mesa (master): vc4: Stop trying to reuse temporaries that store uniform values.

Eric Anholt anholt at kemper.freedesktop.org
Mon Sep 29 18:29:39 UTC 2014


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

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Sep 29 09:39:46 2014 -0700

vc4: Stop trying to reuse temporaries that store uniform values.

Almost always, the MOV will get copy propagated out.  Even if it doesn't,
it's probably better to just reload the uniform at next use (to reduce
register pressure) rather than try to save instruction count.

I was looking at this because in the presence of texturing (which calls
add_uniform() directly to get the uniform load forced into the
instruction) the c->uniform_contents indices don't match 1:1 with the
temporary qregs.

---

 src/gallium/drivers/vc4/vc4_program.c |   11 -----------
 src/gallium/drivers/vc4/vc4_qir.h     |    1 -
 2 files changed, 12 deletions(-)

diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 8d24337..a501103 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -111,19 +111,8 @@ static struct qreg
 get_temp_for_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 c->uniforms[i];
-        }
-
         struct qreg u = add_uniform(c, contents, data);
         struct qreg t = qir_MOV(c, u);
-
-        resize_qreg_array(c, &c->uniforms, &c->uniforms_array_size,
-                          u.index + 1);
-
-        c->uniforms[u.index] = t;
         return t;
 }
 
diff --git a/src/gallium/drivers/vc4/vc4_qir.h b/src/gallium/drivers/vc4/vc4_qir.h
index 6a2e3c4..f771c42 100644
--- a/src/gallium/drivers/vc4/vc4_qir.h
+++ b/src/gallium/drivers/vc4/vc4_qir.h
@@ -215,7 +215,6 @@ struct vc4_compile {
         struct qreg *temps;
         struct qreg *inputs;
         struct qreg *outputs;
-        struct qreg *uniforms;
         struct qreg *consts;
         uint32_t temps_array_size;
         uint32_t inputs_array_size;




More information about the mesa-commit mailing list