Module: Mesa Branch: master Commit: cbef2dc7d3ca60df2307d04032395b2beeece2ec URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbef2dc7d3ca60df2307d04032395b2beeece2ec
Author: Erik Faye-Lund <[email protected]> Date: Thu Sep 24 22:25:28 2020 +0200 zink: only set stencil-ref for back if two-sided Otherwise, we want to set both front and back to the same state. Reviewed-By: Mike Blumenkrantz <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6853> --- src/gallium/drivers/zink/zink_draw.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index 36be5cc5dde..2b6b9fc31d9 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -210,6 +210,7 @@ zink_draw_vbo(struct pipe_context *pctx, struct zink_context *ctx = zink_context(pctx); struct zink_screen *screen = zink_screen(pctx->screen); struct zink_rasterizer_state *rast_state = ctx->rast_state; + struct zink_depth_stencil_alpha_state *dsa_state = ctx->dsa_state; struct zink_so_target *so_target = zink_so_target(dinfo->count_from_stream_output); VkBuffer counter_buffers[PIPE_MAX_SO_OUTPUTS]; VkDeviceSize counter_buffer_offsets[PIPE_MAX_SO_OUTPUTS] = {}; @@ -413,8 +414,17 @@ zink_draw_vbo(struct pipe_context *pctx, debug_printf("BUG: wide lines not supported, needs fallback!"); } - vkCmdSetStencilReference(batch->cmdbuf, VK_STENCIL_FACE_FRONT_BIT, ctx->stencil_ref.ref_value[0]); - vkCmdSetStencilReference(batch->cmdbuf, VK_STENCIL_FACE_BACK_BIT, ctx->stencil_ref.ref_value[1]); + if (dsa_state->base.stencil[0].enabled) { + if (dsa_state->base.stencil[1].enabled) { + vkCmdSetStencilReference(batch->cmdbuf, VK_STENCIL_FACE_FRONT_BIT, + ctx->stencil_ref.ref_value[0]); + vkCmdSetStencilReference(batch->cmdbuf, VK_STENCIL_FACE_BACK_BIT, + ctx->stencil_ref.ref_value[1]); + } else + vkCmdSetStencilReference(batch->cmdbuf, + VK_STENCIL_FACE_FRONT_AND_BACK, + ctx->stencil_ref.ref_value[0]); + } if (depth_bias) vkCmdSetDepthBias(batch->cmdbuf, rast_state->offset_units, rast_state->offset_clamp, rast_state->offset_scale); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
