From 4358904c06838138b17e7e81b55d3a04d50dde1e Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 22 Apr 2019 10:40:47 -0700 Subject: [PATCH] v3d: Add a note about i/o indirection for future performance work. --- src/broadcom/compiler/nir_to_vir.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index 30fd4002ef9..3fa2e1de953 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -1737,6 +1737,9 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr) break; case nir_intrinsic_load_input: + /* Use ldvpmv (uniform offset) or ldvpmd (non-uniform offset) + * and enable PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR. + */ offset = (nir_intrinsic_base(instr) + nir_src_as_uint(instr->src[0])); if (c->s->info.stage != MESA_SHADER_FRAGMENT && @@ -1778,6 +1781,10 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr) break; case nir_intrinsic_store_output: + /* XXX perf: Use stvpmv with uniform non-constant offsets and + * stvpmd with non-uniform offsets and enable + * PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR. + */ if (c->s->info.stage == MESA_SHADER_FRAGMENT) { offset = ((nir_intrinsic_base(instr) + nir_src_as_uint(instr->src[1])) * 4 + -- 2.30.2