From 196fcb9d3c8539c0978a33cef0a37c07956242e3 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 26 Sep 2024 12:36:53 -0400 Subject: [PATCH] hk: fix tess with notess Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/vulkan/hk_cmd_draw.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/asahi/vulkan/hk_cmd_draw.c b/src/asahi/vulkan/hk_cmd_draw.c index 753aa385543..10dcdd69eef 100644 --- a/src/asahi/vulkan/hk_cmd_draw.c +++ b/src/asahi/vulkan/hk_cmd_draw.c @@ -3382,6 +3382,7 @@ hk_draw(struct hk_cmd_buffer *cmd, uint16_t draw_id, struct hk_draw draw_) cmd, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT); bool ia_stats = stat_ia_verts || stat_vs_inv; + struct hk_device *dev = hk_cmd_buffer_device(cmd); hk_foreach_view(cmd) { struct hk_draw draw = draw_; @@ -3392,14 +3393,17 @@ hk_draw(struct hk_cmd_buffer *cmd, uint16_t draw_id, struct hk_draw draw_) if (!cs) return; - cs->stats.calls++; - bool geom = cmd->state.gfx.shaders[MESA_SHADER_GEOMETRY]; bool tess = cmd->state.gfx.shaders[MESA_SHADER_TESS_EVAL]; struct hk_cs *ccs = NULL; uint8_t *out = cs->current; assert(cs->current + 0x1000 < cs->end); + if (unlikely(tess && (dev->dev.debug & AGX_DBG_NOTESS))) + continue; + + cs->stats.calls++; + if (geom || tess || ia_stats) { ccs = hk_cmd_buffer_get_cs_general(cmd, &cmd->current_cs.pre_gfx, true); @@ -3412,11 +3416,6 @@ hk_draw(struct hk_cmd_buffer *cmd, uint16_t draw_id, struct hk_draw draw_) } if (tess) { - struct hk_device *dev = hk_cmd_buffer_device(cmd); - if (unlikely(dev->dev.debug & AGX_DBG_NOTESS)) { - continue; - } - draw = hk_launch_tess(cmd, ccs, draw); if (draw.raw) {