Module: Mesa Branch: main Commit: 60c61d7b68803ac7ea783f720bf91920ba966226 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=60c61d7b68803ac7ea783f720bf91920ba966226
Author: Dave Airlie <[email protected]> Date: Tue Apr 12 13:03:44 2022 +1000 draw: handle tess eval shader when getting num outputs This tripped up some pointsize/prim id interactions with zink. Acked-by: Mike Blumenkrantz <[email protected]> Cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15872> --- src/gallium/auxiliary/draw/draw_context.c | 2 ++ src/gallium/auxiliary/draw/draw_private.h | 1 + src/gallium/auxiliary/draw/draw_tess.c | 1 + 3 files changed, 4 insertions(+) diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index 7a94168894b..39d3a61b9cf 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -945,6 +945,8 @@ draw_current_shader_outputs(const struct draw_context *draw) { if (draw->gs.geometry_shader) return draw->gs.num_gs_outputs; + if (draw->tes.tess_eval_shader) + return draw->tes.num_tes_outputs; return draw->vs.num_vs_outputs; } diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h index ffdc8b987a0..bf3fc0810d1 100644 --- a/src/gallium/auxiliary/draw/draw_private.h +++ b/src/gallium/auxiliary/draw/draw_private.h @@ -359,6 +359,7 @@ struct draw_context struct { struct draw_tess_eval_shader *tess_eval_shader; + uint num_tes_outputs; /**< convenience, from tess_eval_shader */ uint position_output; uint clipvertex_output; diff --git a/src/gallium/auxiliary/draw/draw_tess.c b/src/gallium/auxiliary/draw/draw_tess.c index 7aa64f076e4..c1742eb0300 100644 --- a/src/gallium/auxiliary/draw/draw_tess.c +++ b/src/gallium/auxiliary/draw/draw_tess.c @@ -602,6 +602,7 @@ void draw_bind_tess_eval_shader(struct draw_context *draw, draw_do_flush(draw, DRAW_FLUSH_STATE_CHANGE); if (dtes) { draw->tes.tess_eval_shader = dtes; + draw->tes.num_tes_outputs = dtes->info.num_outputs; draw->tes.position_output = dtes->position_output; draw->tes.clipvertex_output = dtes->clipvertex_output; } else {
