Mesa (main): nir: Introduce new intrinsics for AMD specific mesh shader task ring.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 8 09:12:36 UTC 2022


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

Author: Timur Kristóf <timur.kristof at gmail.com>
Date:   Wed Jun  1 14:32:39 2022 +0200

nir: Introduce new intrinsics for AMD specific mesh shader task ring.

The mesh shader task ring is a buffer in VRAM which we will use to
store some mesh shader outputs that don't fit into LDS.

Signed-off-by: Timur Kristóf <timur.kristof at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16737>

---

 src/compiler/nir/nir_divergence_analysis.c | 2 ++
 src/compiler/nir/nir_intrinsics.py         | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c
index c221841c472..600a3d36092 100644
--- a/src/compiler/nir/nir_divergence_analysis.c
+++ b/src/compiler/nir/nir_divergence_analysis.c
@@ -146,6 +146,8 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
    case nir_intrinsic_load_ring_tess_offchip_amd:
    case nir_intrinsic_load_ring_tess_factors_offset_amd:
    case nir_intrinsic_load_ring_tess_offchip_offset_amd:
+   case nir_intrinsic_load_ring_mesh_scratch_amd:
+   case nir_intrinsic_load_ring_mesh_scratch_offset_amd:
    case nir_intrinsic_load_ring_esgs_amd:
    case nir_intrinsic_load_ring_es2gs_offset_amd:
    case nir_intrinsic_load_ring_task_draw_amd:
diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py
index 5fc4e93fd31..2276f424a8c 100644
--- a/src/compiler/nir/nir_intrinsics.py
+++ b/src/compiler/nir/nir_intrinsics.py
@@ -1296,6 +1296,9 @@ system_value("ring_es2gs_offset_amd", 1)
 system_value("ring_task_draw_amd", 4)
 # Address of the task shader payload ring (used for all other outputs)
 system_value("ring_task_payload_amd", 4)
+# Address of the mesh shader scratch ring (used for excess mesh shader outputs)
+system_value("ring_mesh_scratch_amd", 4)
+system_value("ring_mesh_scratch_offset_amd", 1)
 # Pointer into the draw and payload rings
 system_value("task_ring_entry_amd", 1)
 # Pointer into the draw and payload rings



More information about the mesa-commit mailing list