summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2016-08-04 16:33:16 -0700
committerEric Anholt <eric@anholt.net>2016-08-19 13:11:36 -0700
commitf8fecc396abf00bb6e3e31087875c834981fa699 (patch)
tree09e61e1140e5102df74747f2a1c84f552c6bc8ec
parentcbf8c1941033fd543aa81cffd02672b5ca81a788 (diff)
vc4: Use the intrinsic's first_component for vattr VPM index.
Avoids another multiplication by 4 of the base in the NIR.
-rw-r--r--src/gallium/drivers/vc4/vc4_nir_lower_io.c4
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c6
2 files changed, 3 insertions, 7 deletions
diff --git a/src/gallium/drivers/vc4/vc4_nir_lower_io.c b/src/gallium/drivers/vc4/vc4_nir_lower_io.c
index d2b27bd7c8a..ad96ef5ad82 100644
--- a/src/gallium/drivers/vc4/vc4_nir_lower_io.c
+++ b/src/gallium/drivers/vc4/vc4_nir_lower_io.c
@@ -196,8 +196,8 @@ vc4_nir_lower_vertex_attr(struct vc4_compile *c, nir_builder *b,
nir_intrinsic_instr_create(c->s,
nir_intrinsic_load_input);
intr_comp->num_components = 1;
- nir_intrinsic_set_base(intr_comp,
- nir_intrinsic_base(intr) * 4 + i);
+ nir_intrinsic_set_base(intr_comp, nir_intrinsic_base(intr));
+ nir_intrinsic_set_component(intr_comp, i);
intr_comp->src[0] = nir_src_for_ssa(nir_imm_int(b, 0));
nir_ssa_dest_init(&intr_comp->instr, &intr_comp->dest, 1, 32, NULL);
nir_builder_instr_insert(b, &intr_comp->instr);
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 4d1d6237a0c..454202753a5 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -1627,15 +1627,11 @@ ntq_emit_intrinsic(struct vc4_compile *c, nir_intrinsic_instr *instr)
}
ntq_store_dest(c, &instr->dest, 0,
c->color_reads[sample_index]);
- } else if (c->stage == QSTAGE_FRAG) {
+ } else {
offset = nir_intrinsic_base(instr) + const_offset->u32[0];
int comp = nir_intrinsic_component(instr);
ntq_store_dest(c, &instr->dest, 0,
c->inputs[offset * 4 + comp]);
- } else {
- offset = nir_intrinsic_base(instr) + const_offset->u32[0];
- ntq_store_dest(c, &instr->dest, 0,
- c->inputs[offset]);
}
break;