Mesa (staging/22.0): draw: handle tess eval shader when getting num outputs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 21 20:00:54 UTC 2022


Module: Mesa
Branch: staging/22.0
Commit: 65a09cd8d2c098cc4844e999cfd3b8980257bb09
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=65a09cd8d2c098cc4844e999cfd3b8980257bb09

Author: Dave Airlie <airlied at redhat.com>
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 <michael.blumenkrantz at gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15872>
(cherry picked from commit 60c61d7b68803ac7ea783f720bf91920ba966226)

---

 .pick_status.json                         | 2 +-
 src/gallium/auxiliary/draw/draw_context.c | 2 ++
 src/gallium/auxiliary/draw/draw_private.h | 1 +
 src/gallium/auxiliary/draw/draw_tess.c    | 1 +
 4 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/.pick_status.json b/.pick_status.json
index cdcc652822e..bb19f04cc89 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -2852,7 +2852,7 @@
         "description": "draw: handle tess eval shader when getting num outputs",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 5,
+        "resolution": 1,
         "because_sha": null
     },
     {
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 {



More information about the mesa-commit mailing list