Module: Mesa Branch: master Commit: 92fa89a08d1e9905897dfb5cd30b8d572f83e941 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=92fa89a08d1e9905897dfb5cd30b8d572f83e941
Author: Timothy Arceri <[email protected]> Date: Tue Feb 20 11:08:11 2018 +1100 ac/radeonsi: pass bindless bool to load_sampler_desc() We also fix the base_index for bindless by using the driver location. Reviewed-by: Samuel Pitoiset <[email protected]> Reviewed-by: Marek Olšák <[email protected]> --- src/amd/common/ac_nir_to_llvm.c | 11 +++++++++-- src/amd/common/ac_shader_abi.h | 3 ++- src/amd/vulkan/radv_nir_to_llvm.c | 3 ++- src/gallium/drivers/radeonsi/si_shader_nir.c | 2 +- 4 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 0d85d047cd..7de59efcff 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -3030,6 +3030,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); @@ -3063,14 +3064,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 0737d697ff..2f222cf8d6 100644 --- a/src/amd/common/ac_shader_abi.h +++ b/src/amd/common/ac_shader_abi.h @@ -157,7 +157,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/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c index c8d383e021..23b58c37b2 100644 --- a/src/amd/vulkan/radv_nir_to_llvm.c +++ b/src/amd/vulkan/radv_nir_to_llvm.c @@ -1699,7 +1699,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]; diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 2245b39fe0..994fee0b02 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -784,7 +784,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; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
