[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