Mesa (master): zink: fix tcs slot map eval for user vars

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Apr 19 13:23:11 UTC 2021


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Thu Apr 15 10:23:21 2021 -0400

zink: fix tcs slot map eval for user vars

tcs user inputs need to have their size adjusted in order to determine whether
they'll overflow the existing slot map

Fixes: 5c5e1abea24 ("zink: evaluate existing slot map during program init and force new map as needed")

Acked-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10269>

---

 src/gallium/drivers/zink/zink_program.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c
index f9a7239db4a..32a81e8068d 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -519,7 +519,10 @@ init_slot_map(struct zink_context *ctx, struct zink_gfx_program *prog)
                      nir_variable *var = nir_find_variable_with_location(ctx->gfx_stages[i]->nir,
                                                                          nir_var_shader_out, slot);
                      assert(var);
-                     user_outputs_count += glsl_count_vec4_slots(var->type, false, false);
+                     if (i == PIPE_SHADER_TESS_CTRL && var->data.location >= VARYING_SLOT_VAR0)
+                        user_outputs_count += (glsl_count_vec4_slots(var->type, false, false) / 32 /*MAX_PATCH_VERTICES*/);
+                     else
+                        user_outputs_count += glsl_count_vec4_slots(var->type, false, false);
                   }
                }
                max_outputs = MAX2(max_outputs, user_outputs_count);



More information about the mesa-commit mailing list