Mesa (main): broadcom/compiler: move vertex shader output handling to its own function

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue May 11 09:58:36 UTC 2021


Module: Mesa
Branch: main
Commit: 067ad7eccc1ab56e9777c9e69ff20418bfc4e2c0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=067ad7eccc1ab56e9777c9e69ff20418bfc4e2c0

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Mon May 10 08:50:04 2021 +0200

broadcom/compiler: move vertex shader output handling to its own function

Reviewed-by: Juan A. Suarez <jasuarez at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10723>

---

 src/broadcom/compiler/nir_to_vir.c | 45 +++++++++++++++++++++-----------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index d55dce530b3..7f645118991 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -2474,33 +2474,38 @@ emit_store_output_gs(struct v3d_compile *c, nir_intrinsic_instr *instr)
 }
 
 static void
-ntq_emit_store_output(struct v3d_compile *c, nir_intrinsic_instr *instr)
+emit_store_output_vs(struct v3d_compile *c, nir_intrinsic_instr *instr)
 {
         /* XXX perf: Use stvpmv with uniform non-constant offsets and
          * stvpmd with non-uniform offsets and enable
          * PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR.
          */
-        if (c->s->info.stage == MESA_SHADER_FRAGMENT) {
+       assert(c->s->info.stage == MESA_SHADER_VERTEX);
+       assert(instr->num_components == 1);
+
+       uint32_t base = nir_intrinsic_base(instr);
+       if (nir_src_is_const(instr->src[1])) {
+               vir_VPM_WRITE(c,
+                             ntq_get_src(c, instr->src[0], 0),
+                             base + nir_src_as_uint(instr->src[1]));
+       } else {
+               vir_VPM_WRITE_indirect(c,
+                                      ntq_get_src(c, instr->src[0], 0),
+                                      vir_ADD(c,
+                                              ntq_get_src(c, instr->src[1], 1),
+                                              vir_uniform_ui(c, base)));
+       }
+}
+
+static void
+ntq_emit_store_output(struct v3d_compile *c, nir_intrinsic_instr *instr)
+{
+        if (c->s->info.stage == MESA_SHADER_FRAGMENT)
                ntq_emit_color_write(c, instr);
-        } else if (c->s->info.stage == MESA_SHADER_GEOMETRY)  {
+        else if (c->s->info.stage == MESA_SHADER_GEOMETRY)
                emit_store_output_gs(c, instr);
-        } else {
-               assert(c->s->info.stage == MESA_SHADER_VERTEX);
-               assert(instr->num_components == 1);
-
-               uint32_t base = nir_intrinsic_base(instr);
-               if (nir_src_is_const(instr->src[1])) {
-                  vir_VPM_WRITE(c,
-                                ntq_get_src(c, instr->src[0], 0),
-                                base + nir_src_as_uint(instr->src[1]));
-               } else {
-                  vir_VPM_WRITE_indirect(c,
-                                         ntq_get_src(c, instr->src[0], 0),
-                                         vir_ADD(c,
-                                                 ntq_get_src(c, instr->src[1], 1),
-                                                 vir_uniform_ui(c, base)));
-               }
-        }
+        else
+               emit_store_output_vs(c, instr);
 }
 
 /**



More information about the mesa-commit mailing list