Push constants are constant buffers.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 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
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to