diff options
Diffstat (limited to 'src/gallium/auxiliary/cso_cache')
-rw-r--r-- | src/gallium/auxiliary/cso_cache/cso_context.c | 13 | ||||
-rw-r--r-- | src/gallium/auxiliary/cso_cache/cso_context.h | 3 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c index b06a070ad83..6805427b816 100644 --- a/src/gallium/auxiliary/cso_cache/cso_context.c +++ b/src/gallium/auxiliary/cso_cache/cso_context.c @@ -111,6 +111,7 @@ struct cso_context { void *velements, *velements_saved; struct pipe_query *render_condition, *render_condition_saved; uint render_condition_mode, render_condition_mode_saved; + boolean render_condition_cond, render_condition_cond_saved; struct pipe_clip_state clip; struct pipe_clip_state clip_saved; @@ -723,13 +724,17 @@ void cso_restore_stencil_ref(struct cso_context *ctx) } void cso_set_render_condition(struct cso_context *ctx, - struct pipe_query *query, uint mode) + struct pipe_query *query, + boolean condition, uint mode) { struct pipe_context *pipe = ctx->pipe; - if (ctx->render_condition != query || ctx->render_condition_mode != mode) { - pipe->render_condition(pipe, query, mode); + if (ctx->render_condition != query || + ctx->render_condition_mode != mode || + ctx->render_condition_cond != condition) { + pipe->render_condition(pipe, query, condition, mode); ctx->render_condition = query; + ctx->render_condition_cond = condition; ctx->render_condition_mode = mode; } } @@ -737,12 +742,14 @@ void cso_set_render_condition(struct cso_context *ctx, void cso_save_render_condition(struct cso_context *ctx) { ctx->render_condition_saved = ctx->render_condition; + ctx->render_condition_cond_saved = ctx->render_condition_cond; ctx->render_condition_mode_saved = ctx->render_condition_mode; } void cso_restore_render_condition(struct cso_context *ctx) { cso_set_render_condition(ctx, ctx->render_condition_saved, + ctx->render_condition_cond_saved, ctx->render_condition_mode_saved); } diff --git a/src/gallium/auxiliary/cso_cache/cso_context.h b/src/gallium/auxiliary/cso_cache/cso_context.h index 20ab4ef1aaa..82c8e18def0 100644 --- a/src/gallium/auxiliary/cso_cache/cso_context.h +++ b/src/gallium/auxiliary/cso_cache/cso_context.h @@ -170,7 +170,8 @@ void cso_save_stencil_ref(struct cso_context *cso); void cso_restore_stencil_ref(struct cso_context *cso); void cso_set_render_condition(struct cso_context *cso, - struct pipe_query *query, uint mode); + struct pipe_query *query, + boolean condition, uint mode); void cso_save_render_condition(struct cso_context *cso); void cso_restore_render_condition(struct cso_context *cso); |