Module: Mesa Branch: master Commit: 40cc265888d0f82458ffa00672caf6e2eb67e735 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=40cc265888d0f82458ffa00672caf6e2eb67e735
Author: Mike Blumenkrantz <[email protected]> Date: Fri Feb 5 17:36:44 2021 -0500 zink: toggle conditional render when beginning/ending a renderpass this resumes the same conditional render which was previously active Reviewed-by: Erik Faye-Lund <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9783> --- src/gallium/drivers/zink/zink_context.c | 7 ++++++- src/gallium/drivers/zink/zink_query.c | 9 +++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 2a908b61495..2a6f8f74d4b 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -1316,14 +1316,19 @@ zink_begin_render_pass(struct zink_context *ctx, struct zink_batch *batch) vkCmdBeginRenderPass(batch->state->cmdbuf, &rpbi, VK_SUBPASS_CONTENTS_INLINE); batch->in_rp = true; + if (ctx->render_condition.query) + zink_start_conditional_render(ctx); zink_clear_framebuffer(ctx, clear_buffers); } static void zink_end_render_pass(struct zink_context *ctx, struct zink_batch *batch) { - if (batch->in_rp) + if (batch->in_rp) { + if (ctx->render_condition.query) + zink_stop_conditional_render(ctx); vkCmdEndRenderPass(batch->state->cmdbuf); + } batch->in_rp = false; } diff --git a/src/gallium/drivers/zink/zink_query.c b/src/gallium/drivers/zink/zink_query.c index 7821443f4cf..7723852ebbe 100644 --- a/src/gallium/drivers/zink/zink_query.c +++ b/src/gallium/drivers/zink/zink_query.c @@ -689,7 +689,11 @@ zink_render_condition(struct pipe_context *pctx, VkQueryResultFlagBits flags = 0; if (query == NULL) { - zink_stop_conditional_render(ctx); + /* force conditional clears if they exist */ + if (ctx->clears_enabled && !ctx->batch.in_rp) + zink_batch_rp(ctx); + if (ctx->batch.in_rp) + zink_stop_conditional_render(ctx); ctx->render_condition_active = false; ctx->render_condition.query = NULL; return; @@ -725,7 +729,8 @@ zink_render_condition(struct pipe_context *pctx, ctx->render_condition.inverted = condition; ctx->render_condition_active = true; ctx->render_condition.query = query; - zink_start_conditional_render(ctx); + if (ctx->batch.in_rp) + zink_start_conditional_render(ctx); } static void _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
