From 9841afad57373a4271d9da996aa7428ecebdc663 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 7 Dec 2020 19:15:10 -0500 Subject: [PATCH] pan/bi: Implement bi_load_sysval via the builder Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/bifrost_compile.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index 531af4c1edd..b85db36c1bd 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -629,6 +629,24 @@ bi_emit_ld_ubo(bi_context *ctx, nir_intrinsic_instr *instr) bi_emit(ctx, ld); } +static void +bi_load_sysval(bi_builder *b, nir_instr *instr, + unsigned nr_components, unsigned offset) +{ + nir_dest nir_dest; + + /* Figure out which uniform this is */ + int sysval = panfrost_sysval_for_instr(instr, &nir_dest); + void *val = _mesa_hash_table_u64_search(b->shader->sysvals.sysval_to_id, sysval); + + /* Sysvals are prefix uniforms */ + unsigned uniform = ((uintptr_t) val) - 1; + unsigned idx = (uniform * 16) + offset; + + bi_load_to(b, nr_components * 32, bi_dest_index(&nir_dest), + bi_imm_u32(idx), bi_zero(), BI_SEG_UBO); +} + static void bi_emit_sysval(bi_context *ctx, nir_instr *instr, unsigned nr_components, unsigned offset)