diff options
Diffstat (limited to 'src/gallium/drivers/r600')
-rw-r--r-- | src/gallium/drivers/r600/r600_blit.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_query.c | 2 |
4 files changed, 8 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 660f4f9aa96..dcc397851fc 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -88,6 +88,7 @@ static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op if ((op & R600_DISABLE_RENDER_COND) && rctx->current_render_cond) { util_blitter_save_render_condition(rctx->blitter, rctx->current_render_cond, + rctx->current_render_cond_cond, rctx->current_render_cond_mode); } } diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 71f555b0eab..74a650a01e7 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -162,13 +162,15 @@ static void r600_flush(struct pipe_context *ctx, unsigned flags) struct r600_context *rctx = (struct r600_context *)ctx; struct pipe_query *render_cond = NULL; unsigned render_cond_mode = 0; + boolean render_cond_cond = FALSE; rctx->rings.gfx.flushing = true; /* Disable render condition. */ if (rctx->current_render_cond) { render_cond = rctx->current_render_cond; + render_cond_cond = rctx->current_render_cond_cond; render_cond_mode = rctx->current_render_cond_mode; - ctx->render_condition(ctx, NULL, 0); + ctx->render_condition(ctx, NULL, FALSE, 0); } r600_context_flush(rctx, flags); @@ -177,7 +179,7 @@ static void r600_flush(struct pipe_context *ctx, unsigned flags) /* Re-enable render condition. */ if (render_cond) { - ctx->render_condition(ctx, render_cond, render_cond_mode); + ctx->render_condition(ctx, render_cond, render_cond_cond, render_cond_mode); } } diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 2a81434155e..1dc346f049f 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -629,6 +629,7 @@ struct r600_context { /* Render condition. */ struct pipe_query *current_render_cond; unsigned current_render_cond_mode; + boolean current_render_cond_cond; boolean predicate_drawing; void *sb_context; diff --git a/src/gallium/drivers/r600/r600_query.c b/src/gallium/drivers/r600/r600_query.c index d264b7f3970..f77e1a8f52d 100644 --- a/src/gallium/drivers/r600/r600_query.c +++ b/src/gallium/drivers/r600/r600_query.c @@ -669,6 +669,7 @@ static boolean r600_get_query_result(struct pipe_context *ctx, static void r600_render_condition(struct pipe_context *ctx, struct pipe_query *query, + boolean condition, uint mode) { struct r600_context *rctx = (struct r600_context *)ctx; @@ -676,6 +677,7 @@ static void r600_render_condition(struct pipe_context *ctx, bool wait_flag = false; rctx->current_render_cond = query; + rctx->current_render_cond_cond = condition; rctx->current_render_cond_mode = mode; if (query == NULL) { |