diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index ebdfcf89bb5..2e795c697c6 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -164,6 +164,7 @@ struct rendering_state { VkRect2D render_area; bool suspending; + bool render_cond; uint32_t color_att_count; struct lvp_render_attachment *color_att; struct lvp_render_attachment depth_att; @@ -1488,6 +1489,9 @@ static void render_clear_fast(struct rendering_state *state) if (state->info.view_mask) goto slow_clear; + if (state->render_cond) + goto slow_clear; + uint32_t buffers = 0; bool has_color_value = false; VkClearValue color_value = {0}; @@ -3444,6 +3448,7 @@ static void handle_begin_conditional_rendering(struct vk_cmd_queue_entry *cmd, struct rendering_state *state) { struct VkConditionalRenderingBeginInfoEXT *bcr = cmd->u.begin_conditional_rendering_ext.conditional_rendering_begin; + state->render_cond = true; state->pctx->render_condition_mem(state->pctx, lvp_buffer_from_handle(bcr->buffer)->bo, bcr->offset, @@ -3452,6 +3457,7 @@ static void handle_begin_conditional_rendering(struct vk_cmd_queue_entry *cmd, static void handle_end_conditional_rendering(struct rendering_state *state) { + state->render_cond = false; state->pctx->render_condition_mem(state->pctx, NULL, 0, false); }