Mesa (master): ac/nir: use binding chasing helpers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 27 13:30:58 UTC 2020


Module: Mesa
Branch: master
Commit: e732bea536be128afec8e364dc2b30f3d15498d5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e732bea536be128afec8e364dc2b30f3d15498d5

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Fri Oct 23 11:46:25 2020 +0100

ac/nir: use binding chasing helpers

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7291>

---

 src/amd/llvm/ac_nir_to_llvm.c | 21 +++------------------
 1 file changed, 3 insertions(+), 18 deletions(-)

diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c
index e4edd3f52a8..28de09cef84 100644
--- a/src/amd/llvm/ac_nir_to_llvm.c
+++ b/src/amd/llvm/ac_nir_to_llvm.c
@@ -2095,27 +2095,12 @@ static LLVMValueRef visit_load_ubo_buffer(struct ac_nir_context *ctx, nir_intrin
    LLVMValueRef rsrc = rsrc_base;
    LLVMValueRef offset = get_src(ctx, instr->src[1]);
    int num_components = instr->num_components;
-   unsigned desc_set = 0, binding = 0;
-   bool valid_binding = false;
 
-   /* Look for vulkan_resource_index to get the desc_set/binding values which
-    * are used to determine if it's an inline uniform UBO block.
-    */
-   if (instr->src[0].ssa->parent_instr->type == nir_instr_type_alu) {
-      nir_alu_instr *mov_instr = nir_instr_as_alu(instr->src[0].ssa->parent_instr);
-      if (mov_instr->src[0].src.ssa->parent_instr->type == nir_instr_type_intrinsic) {
-         nir_intrinsic_instr *idx_instr = nir_instr_as_intrinsic(mov_instr->src[0].src.ssa->parent_instr);
-         if (idx_instr->intrinsic == nir_intrinsic_vulkan_resource_index) {
-            desc_set = nir_intrinsic_desc_set(idx_instr);
-            binding = nir_intrinsic_binding(idx_instr);
-            valid_binding = true;
-         }
-      }
+   if (ctx->abi->load_ubo) {
+      nir_binding binding = nir_chase_binding(instr->src[0]);
+      rsrc = ctx->abi->load_ubo(ctx->abi, binding.desc_set, binding.binding, binding.success, rsrc);
    }
 
-   if (ctx->abi->load_ubo)
-      rsrc = ctx->abi->load_ubo(ctx->abi, desc_set, binding, valid_binding, rsrc);
-
    if (instr->dest.ssa.bit_size == 64)
       num_components *= 2;
 



More information about the mesa-commit mailing list