[Mesa-dev] [PATCH] radv/ac: Use base in push constant loads.
Dave Airlie
airlied at gmail.com
Sat Jan 28 00:48:43 UTC 2017
On 28 January 2017 at 10:35, Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl> wrote:
> Apparently the source is not an address but an offset, so we actually
> need to use the base.
Nice find!
Reviewed-by: Dave Airlie <airlied at redhat.com>
>
> Signed-off-by: Bas Nieuwenhuizen <basni at google.com>
> ---
> 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 26b87e8782b..72ae6eb0730 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, "");
> --
> 2.11.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list