Mesa (main): radeonsi: scalarize IO instructions

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 22 22:47:27 UTC 2022


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sat Jan  1 23:03:23 2022 -0500

radeonsi: scalarize IO instructions

The next commit will rely on this.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14414>

---

 src/gallium/drivers/radeonsi/si_shader_nir.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 7e455ac2826..5c27d4a9e0f 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -266,6 +266,12 @@ static void si_lower_nir(struct si_screen *sscreen, struct nir_shader *nir)
    NIR_PASS_V(nir, nir_lower_system_values);
    NIR_PASS_V(nir, nir_lower_compute_system_values, NULL);
 
+   /* si_nir_kill_outputs and ac_nir_optimize_outputs require outputs to be scalar. */
+   if (nir->info.stage == MESA_SHADER_VERTEX ||
+       nir->info.stage == MESA_SHADER_TESS_EVAL ||
+       nir->info.stage == MESA_SHADER_GEOMETRY)
+      NIR_PASS_V(nir, nir_lower_io_to_scalar, nir_var_shader_out);
+
    if (nir->info.stage == MESA_SHADER_COMPUTE) {
       if (nir->info.cs.derivative_group == DERIVATIVE_GROUP_QUADS) {
          /* If we are shuffling local_invocation_id for quad derivatives, we



More information about the mesa-commit mailing list