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

Reply via email to