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

Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Mar 28 18:51:42 2023 -0400

zink: streamline nir cloning for assign_io

more relics from the time of pipe_shader_type

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22266>

---

 src/gallium/drivers/zink/zink_program.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_program.c 
b/src/gallium/drivers/zink/zink_program.c
index 4177085f5d8..87c78f3590e 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -937,15 +937,11 @@ assign_io(struct zink_screen *screen,
 {
 
    for (unsigned i = 0; i < MESA_SHADER_FRAGMENT;) {
-      nir_shader *producer = shaders[i]->nir;
+      nir_shader *producer = prog->nir[i];
       for (unsigned j = i + 1; j < ZINK_GFX_SHADER_COUNT; i++, j++) {
          struct zink_shader *consumer = shaders[j];
          if (!consumer)
             continue;
-         if (!prog->nir[producer->info.stage])
-            prog->nir[producer->info.stage] = nir_shader_clone(prog, producer);
-         if (!prog->nir[j])
-            prog->nir[j] = nir_shader_clone(prog, consumer->nir);
          zink_compiler_assign_io(screen, prog->nir[producer->info.stage], 
prog->nir[j]);
          i = j;
          break;
@@ -1045,13 +1041,15 @@ zink_create_gfx_program(struct zink_context *ctx,
          prog->stages_present |= BITFIELD_BIT(i);
          prog->optimal_keys &= !prog->shaders[i]->non_fs.is_generated;
          prog->needs_inlining |= prog->shaders[i]->needs_inlining;
+         prog->nir[i] = nir_shader_clone(NULL, stages[i]->nir);
       }
    }
    if (stages[MESA_SHADER_TESS_EVAL] && !stages[MESA_SHADER_TESS_CTRL]) {
       nir_shader *nir;
       prog->shaders[MESA_SHADER_TESS_EVAL]->non_fs.generated_tcs =
       prog->shaders[MESA_SHADER_TESS_CTRL] =
-        zink_shader_tcs_create(screen, stages[MESA_SHADER_VERTEX]->nir, 
vertices_per_patch, &nir);
+        zink_shader_tcs_create(screen, prog->nir[MESA_SHADER_VERTEX], 
vertices_per_patch, &nir);
+      prog->nir[MESA_SHADER_TESS_CTRL] = nir_shader_clone(NULL, nir);
       prog->stages_present |= BITFIELD_BIT(MESA_SHADER_TESS_CTRL);
    }
    prog->stages_remaining = prog->stages_present;

Reply via email to