Mesa (master): tu: use intrinsic builders

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 6 14:51:28 UTC 2021


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

Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date:   Sat Jan  2 08:31:11 2021 +0100

tu: use intrinsic builders

Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8295>

---

 src/freedreno/vulkan/tu_shader.c | 43 ++++++++++------------------------------
 1 file changed, 11 insertions(+), 32 deletions(-)

diff --git a/src/freedreno/vulkan/tu_shader.c b/src/freedreno/vulkan/tu_shader.c
index 2cc87c56205..7dd90e125f3 100644
--- a/src/freedreno/vulkan/tu_shader.c
+++ b/src/freedreno/vulkan/tu_shader.c
@@ -188,21 +188,17 @@ static void
 lower_load_push_constant(nir_builder *b, nir_intrinsic_instr *instr,
                          struct tu_shader *shader)
 {
-   nir_intrinsic_instr *load =
-      nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_uniform);
-   load->num_components = instr->num_components;
    uint32_t base = nir_intrinsic_base(instr);
    assert(base % 4 == 0);
    assert(base >= shader->push_consts.lo * 16);
    base -= shader->push_consts.lo * 16;
-   nir_intrinsic_set_base(load, base / 4);
-   load->src[0] =
-      nir_src_for_ssa(nir_ushr(b, instr->src[0].ssa, nir_imm_int(b, 2)));
-   nir_ssa_dest_init(&load->instr, &load->dest,
-                     load->num_components, instr->dest.ssa.bit_size,
-                     instr->dest.ssa.name);
-   nir_builder_instr_insert(b, &load->instr);
-   nir_ssa_def_rewrite_uses(&instr->dest.ssa, nir_src_for_ssa(&load->dest.ssa));
+
+   nir_ssa_def *load =
+      nir_load_uniform(b, instr->num_components, instr->dest.ssa.bit_size,
+                       nir_ushr(b, instr->src[0].ssa, nir_imm_int(b, 2)),
+                       .base = base / 4);
+
+   nir_ssa_def_rewrite_uses(&instr->dest.ssa, nir_src_for_ssa(load));
 
    nir_instr_remove(&instr->instr);
 }
@@ -281,15 +277,8 @@ lower_ssbo_ubo_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin)
       /* if (base_idx == i) { ... */
       nir_if *nif = nir_push_if(b, nir_ieq_imm(b, base_idx, i));
 
-      nir_intrinsic_instr *bindless =
-         nir_intrinsic_instr_create(b->shader,
-                                    nir_intrinsic_bindless_resource_ir3);
-      bindless->num_components = 0;
-      nir_ssa_dest_init(&bindless->instr, &bindless->dest,
-                        1, 32, NULL);
-      nir_intrinsic_set_desc_set(bindless, i);
-      bindless->src[0] = nir_src_for_ssa(descriptor_idx);
-      nir_builder_instr_insert(b, &bindless->instr);
+      nir_ssa_def *bindless =
+         nir_bindless_resource_ir3(b, 32, descriptor_idx, .desc_set = i);
 
       nir_intrinsic_instr *copy =
          nir_intrinsic_instr_create(b->shader, intrin->intrinsic);
@@ -298,7 +287,7 @@ lower_ssbo_ubo_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin)
 
       for (unsigned src = 0; src < info->num_srcs; src++) {
          if (src == buffer_src)
-            copy->src[src] = nir_src_for_ssa(&bindless->dest.ssa);
+            copy->src[src] = nir_src_for_ssa(bindless);
          else
             copy->src[src] = nir_src_for_ssa(intrin->src[src].ssa);
       }
@@ -391,17 +380,7 @@ build_bindless(nir_builder *b, nir_deref_instr *deref, bool is_sampler,
                              nir_imul_imm(b, arr_index, descriptor_stride));
    }
 
-   nir_intrinsic_instr *bindless =
-      nir_intrinsic_instr_create(b->shader,
-                                 nir_intrinsic_bindless_resource_ir3);
-   bindless->num_components = 0;
-   nir_ssa_dest_init(&bindless->instr, &bindless->dest,
-                     1, 32, NULL);
-   nir_intrinsic_set_desc_set(bindless, set);
-   bindless->src[0] = nir_src_for_ssa(desc_offset);
-   nir_builder_instr_insert(b, &bindless->instr);
-
-   return &bindless->dest.ssa;
+   return nir_bindless_resource_ir3(b, 32, desc_offset, .desc_set = set);
 }
 
 static void



More information about the mesa-commit mailing list