[Mesa-dev] [PATCH 5/7] ac/radeonsi: pass bindless bool to load_sampler_desc()
Marek Olšák
maraeo at gmail.com
Tue Feb 20 22:42:13 UTC 2018
For patches 1-5:
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Tue, Feb 20, 2018 at 4:42 AM, Timothy Arceri <tarceri at itsqueeze.com> wrote:
> We also fix the base_index for bindless by using the driver
> location.
> ---
> src/amd/common/ac_nir_to_llvm.c | 14 +++++++++++---
> src/amd/common/ac_shader_abi.h | 3 ++-
> src/gallium/drivers/radeonsi/si_shader_nir.c | 2 +-
> 3 files changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
> index fc89779c12..9f55be0d45 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -4664,7 +4664,8 @@ static LLVMValueRef radv_get_sampler_desc(struct ac_shader_abi *abi,
> unsigned constant_index,
> LLVMValueRef index,
> enum ac_descriptor_type desc_type,
> - bool image, bool write)
> + bool image, bool write,
> + bool bindless)
> {
> struct radv_shader_context *ctx = radv_shader_context_from_abi(abi);
> LLVMValueRef list = ctx->descriptor_sets[descriptor_set];
> @@ -4744,6 +4745,7 @@ static LLVMValueRef get_sampler_desc(struct ac_nir_context *ctx,
> unsigned constant_index = 0;
> unsigned descriptor_set;
> unsigned base_index;
> + bool bindless = false;
>
> if (!deref) {
> assert(tex_instr && !image);
> @@ -4777,14 +4779,20 @@ static LLVMValueRef get_sampler_desc(struct ac_nir_context *ctx,
> tail = &child->deref;
> }
> descriptor_set = deref->var->data.descriptor_set;
> - base_index = deref->var->data.binding;
> +
> + if (deref->var->data.bindless) {
> + bindless = deref->var->data.bindless;
> + base_index = deref->var->data.driver_location;
> + } else {
> + base_index = deref->var->data.binding;
> + }
> }
>
> return ctx->abi->load_sampler_desc(ctx->abi,
> descriptor_set,
> base_index,
> constant_index, index,
> - desc_type, image, write);
> + desc_type, image, write, bindless);
> }
>
> static void set_tex_fetch_args(struct ac_llvm_context *ctx,
> diff --git a/src/amd/common/ac_shader_abi.h b/src/amd/common/ac_shader_abi.h
> index 62b8b7a5dc..de3034e32f 100644
> --- a/src/amd/common/ac_shader_abi.h
> +++ b/src/amd/common/ac_shader_abi.h
> @@ -156,7 +156,8 @@ struct ac_shader_abi {
> unsigned constant_index,
> LLVMValueRef index,
> enum ac_descriptor_type desc_type,
> - bool image, bool write);
> + bool image, bool write,
> + bool bindless);
>
> /**
> * Load a Vulkan-specific resource.
> diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
> index 7a5acd3ff1..c2036a1509 100644
> --- a/src/gallium/drivers/radeonsi/si_shader_nir.c
> +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
> @@ -776,7 +776,7 @@ si_nir_load_sampler_desc(struct ac_shader_abi *abi,
> unsigned descriptor_set, unsigned base_index,
> unsigned constant_index, LLVMValueRef dynamic_index,
> enum ac_descriptor_type desc_type, bool image,
> - bool write)
> + bool write, bool bindless)
> {
> struct si_shader_context *ctx = si_shader_context_from_abi(abi);
> LLVMBuilderRef builder = ctx->ac.builder;
> --
> 2.14.3
>
> _______________________________________________
> 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