[Mesa-dev] [PATCH] radv/ac: Fix shared memory offset calculation

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Fri Mar 17 08:37:24 UTC 2017


Pushed.

On Thu, Mar 16, 2017 at 5:40 PM, Alex Smith <asmith at feralinteractive.com> wrote:
> 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 <asmith at feralinteractive.com>
> ---
>  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
>


More information about the mesa-dev mailing list