Push constants are constant buffers.
Signed-off-by: Samuel Pitoiset <[email protected]>
---
src/amd/common/ac_nir_to_llvm.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index f9ce4feb61..1a52367602 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -2424,14 +2424,19 @@ static LLVMValueRef visit_load_push_constant(struct
nir_to_llvm_context *ctx,
nir_intrinsic_instr *instr)
{
LLVMValueRef ptr, addr;
+ LLVMValueRef result;
addr = LLVMConstInt(ctx->ac.i32, nir_intrinsic_base(instr), 0);
addr = LLVMBuildAdd(ctx->builder, addr, get_src(ctx->nir,
instr->src[0]), "");
ptr = ac_build_gep0(&ctx->ac, ctx->push_constants, addr);
ptr = cast_ptr(ctx, ptr, get_def_type(ctx->nir, &instr->dest.ssa));
+ LLVMSetMetadata(ptr, ctx->ac.uniform_md_kind, ctx->ac.empty_md);
+
+ result = LLVMBuildLoad(ctx->builder, ptr, "");
+ LLVMSetMetadata(result, ctx->ac.invariant_load_md_kind,
ctx->ac.empty_md);
- return LLVMBuildLoad(ctx->builder, ptr, "");
+ return result;
}
static LLVMValueRef visit_get_buffer_size(struct ac_nir_context *ctx,
--
2.16.0
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev