r600g: disable render condition at the end of CS, re-enable at the beginning
This commit is contained in:
parent
9564185b0a
commit
578b211be6
|
@ -946,6 +946,11 @@ void r600_need_cs_space(struct r600_context *ctx, unsigned num_dw,
|
|||
/* Count in queries_suspend. */
|
||||
num_dw += ctx->num_cs_dw_queries_suspend;
|
||||
|
||||
/* Count in render_condition(NULL) at the end of CS. */
|
||||
if (ctx->predicate_drawing) {
|
||||
num_dw += 3;
|
||||
}
|
||||
|
||||
/* Flush if there's not enough space. */
|
||||
if (num_dw > ctx->pm4_ndwords) {
|
||||
r600_context_flush(ctx, RADEON_FLUSH_ASYNC);
|
||||
|
|
|
@ -122,11 +122,25 @@ void r600_flush(struct pipe_context *ctx, struct pipe_fence_handle **fence,
|
|||
{
|
||||
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
|
||||
struct r600_fence **rfence = (struct r600_fence**)fence;
|
||||
struct pipe_query *render_cond = NULL;
|
||||
unsigned render_cond_mode = 0;
|
||||
|
||||
if (rfence)
|
||||
*rfence = r600_create_fence(rctx);
|
||||
|
||||
/* Disable render condition. */
|
||||
if (rctx->current_render_cond) {
|
||||
render_cond = rctx->current_render_cond;
|
||||
render_cond_mode = rctx->current_render_cond_mode;
|
||||
ctx->render_condition(ctx, NULL, 0);
|
||||
}
|
||||
|
||||
r600_context_flush(&rctx->ctx, flags);
|
||||
|
||||
/* Re-enable render condition. */
|
||||
if (render_cond) {
|
||||
ctx->render_condition(ctx, render_cond, render_cond_mode);
|
||||
}
|
||||
}
|
||||
|
||||
static void r600_flush_from_st(struct pipe_context *ctx,
|
||||
|
|
Loading…
Reference in New Issue