summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2014-09-29 09:39:46 -0700
committerEric Anholt <[email protected]>2014-09-29 10:07:24 -0700
commit7a85ebf6e211423c98bb045ad21026c5ffeaa9bb (patch)
tree5fec8f15cf8446ab6a98833e9d185c9e3c25670b /src
parent3386e95994ec77248f71dedf49f996e2078f8cea (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c11
-rw-r--r--src/gallium/drivers/vc4/vc4_qir.h1
2 files changed, 0 insertions, 12 deletions
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 8d243374dae..a5011039be2 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 6a2e3c4b2d6..f771c425415 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;