From b7674829a102b3e751e8d5fc9b29d9e9079dce4a Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 30 Oct 2019 13:57:21 +0100 Subject: [PATCH] zink: emit line-width when using polygon line-mode When switching this to dynamic state, I forgot that this also needs to be emitted when we use a polygon-mode set to lines. Signed-off-by: Erik Faye-Lund Fixes: 6d30abb4f14 ("zink: use dynamic state for line-width") --- src/gallium/drivers/zink/zink_context.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 219605d90a3..61760d06cd1 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -1000,6 +1000,25 @@ get_gfx_program(struct zink_context *ctx) return ctx->curr_program; } +static bool +line_width_needed(enum pipe_prim_type reduced_prim, + VkPolygonMode polygon_mode) +{ + switch (reduced_prim) { + case PIPE_PRIM_POINTS: + return false; + + case PIPE_PRIM_LINES: + return true; + + case PIPE_PRIM_TRIANGLES: + return polygon_mode == VK_POLYGON_MODE_LINE; + + default: + unreachable("unexpected reduced prim"); + } +} + static void zink_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *dinfo) @@ -1163,7 +1182,7 @@ zink_draw_vbo(struct pipe_context *pctx, vkCmdSetScissor(batch->cmdbuf, 0, 1, &fb_scissor); } - if (reduced_prim == PIPE_PRIM_LINES) { + if (line_width_needed(reduced_prim, rast_state->hw_state.polygon_mode)) { if (screen->feats.wideLines || ctx->line_width == 1.0f) vkCmdSetLineWidth(batch->cmdbuf, ctx->line_width); else -- 2.30.2