Mesa (master): gallivm/nir: add load push constant support
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Aug 17 05:01:07 UTC 2020
Module: Mesa
Branch: master
Commit: 3abf548270bbe92aea17b976397813ba763f4ea0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3abf548270bbe92aea17b976397813ba763f4ea0
Author: Dave Airlie <airlied at redhat.com>
Date: Fri Jun 19 16:51:50 2020 +1000
gallivm/nir: add load push constant support
This convets the push constant load to a ubo load against the 0 constant buffer,
which is where the vallium layer will bind things.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6082>
---
src/gallium/auxiliary/gallivm/lp_bld_nir.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir.c b/src/gallium/auxiliary/gallivm/lp_bld_nir.c
index d2336c17365..702a0bd4ec4 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_nir.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_nir.c
@@ -1019,6 +1019,19 @@ static void visit_load_ubo(struct lp_build_nir_context *bld_base,
offset_is_uniform, idx, offset, result);
}
+static void visit_load_push_constant(struct lp_build_nir_context *bld_base,
+ nir_intrinsic_instr *instr,
+ LLVMValueRef result[4])
+{
+ struct gallivm_state *gallivm = bld_base->base.gallivm;
+ LLVMValueRef offset = get_src(bld_base, instr->src[0]);
+ LLVMValueRef idx = lp_build_const_int32(gallivm, 0);
+ bool offset_is_uniform = nir_src_is_dynamically_uniform(instr->src[0]);
+
+ bld_base->load_ubo(bld_base, nir_dest_num_components(instr->dest), nir_dest_bit_size(instr->dest),
+ offset_is_uniform, idx, offset, result);
+}
+
static void visit_load_ssbo(struct lp_build_nir_context *bld_base,
nir_intrinsic_instr *instr,
@@ -1396,6 +1409,9 @@ static void visit_intrinsic(struct lp_build_nir_context *bld_base,
case nir_intrinsic_load_ubo:
visit_load_ubo(bld_base, instr, result);
break;
+ case nir_intrinsic_load_push_constant:
+ visit_load_push_constant(bld_base, instr, result);
+ break;
case nir_intrinsic_load_ssbo:
visit_load_ssbo(bld_base, instr, result);
break;
More information about the mesa-commit
mailing list