Module: Mesa
Branch: master
Commit: 96c60b7f07e626d9ca0fc5789117f0c725ba1da2
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=96c60b7f07e626d9ca0fc5789117f0c725ba1da2

Author: Bas Nieuwenhuizen <[email protected]>
Date:   Sat Jan 28 01:32:20 2017 +0100

radv/ac: Use base in push constant loads.

Apparently the source is not an address but an offset, so we actually
need to use the base.

Signed-off-by: Bas Nieuwenhuizen <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
CC: <[email protected]>

---

 src/amd/common/ac_nir_to_llvm.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 26b87e8..72ae6eb 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -1745,9 +1745,12 @@ static LLVMValueRef visit_vulkan_resource_index(struct 
nir_to_llvm_context *ctx,
 static LLVMValueRef visit_load_push_constant(struct nir_to_llvm_context *ctx,
                                              nir_intrinsic_instr *instr)
 {
-       LLVMValueRef ptr;
+       LLVMValueRef ptr, addr;
+
+       addr = LLVMConstInt(ctx->i32, nir_intrinsic_base(instr), 0);
+       addr = LLVMBuildAdd(ctx->builder, addr, get_src(ctx, instr->src[0]), 
"");
 
-       ptr = build_gep0(ctx, ctx->push_constants, get_src(ctx, instr->src[0]));
+       ptr = build_gep0(ctx, ctx->push_constants, addr);
        ptr = cast_ptr(ctx, ptr, get_def_type(ctx, &instr->dest.ssa));
 
        return LLVMBuildLoad(ctx->builder, ptr, "");

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to