For patches 1-5: Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Marek On Tue, Feb 20, 2018 at 4:42 AM, Timothy Arceri <tarc...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev