The index passed to get_shared_memory_ptr is an attribute slot index,
i.e. the index of a vec4 within LDS. Therefore this must be scaled by
sizeof(vec4) to give the LDS byte offset.

Signed-off-by: Alex Smith <[email protected]>
---
 src/amd/common/ac_nir_to_llvm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 01346c3..6e36c19 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -297,7 +297,7 @@ static LLVMValueRef get_shared_memory_ptr(struct 
nir_to_llvm_context *ctx,
        LLVMValueRef ptr;
        int addr_space;
 
-       offset = LLVMConstInt(ctx->i32, idx, false);
+       offset = LLVMConstInt(ctx->i32, idx * 16, false);
 
        ptr = ctx->shared_memory;
        ptr = LLVMBuildGEP(ctx->builder, ptr, &offset, 1, "");
-- 
2.9.3

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

Reply via email to