agx: Implement direct st_vary

Indirection can come later, if at all..

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10582>
This commit is contained in:
Alyssa Rosenzweig
2021-04-11 15:09:03 -04:00
committed by Alyssa Rosenzweig
parent fde66f0aa8
commit 22886f50f9

View File

@@ -77,7 +77,18 @@ agx_emit_load_vary(agx_builder *b, nir_intrinsic_instr *instr)
static void
agx_emit_store_vary(agx_builder *b, nir_intrinsic_instr *instr)
{
unreachable("stub");
nir_src *offset = nir_get_io_offset_src(instr);
assert(nir_src_is_const(*offset) && "todo: indirects");
unsigned imm_index = nir_intrinsic_base(instr);
imm_index += nir_intrinsic_component(instr);
imm_index += nir_src_as_uint(*offset);
/* nir_lower_io_to_scalar */
assert(nir_intrinsic_write_mask(instr) == 0x1);
agx_st_vary(b,
agx_immediate(imm_index),
agx_src_index(&instr->src[0]));
}
static void