X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fstate_tracker%2Fst_cb_condrender.c;h=f02472aec8b632a7c8a2ebbcc1744056850412f2;hb=5530cb1296cef759ea2f94e581da0a4d853a9f5f;hp=1ced560e1607e98834085af31014556cfa4a1dc4;hpb=636d01bd61cac83e13c3c64874e7e34e828ca93a;p=mesa.git diff --git a/src/mesa/state_tracker/st_cb_condrender.c b/src/mesa/state_tracker/st_cb_condrender.c index 1ced560e160..f02472aec8b 100644 --- a/src/mesa/state_tracker/st_cb_condrender.c +++ b/src/mesa/state_tracker/st_cb_condrender.c @@ -38,6 +38,7 @@ #include "pipe/p_context.h" #include "pipe/p_defines.h" +#include "cso_cache/cso_context.h" #include "st_context.h" #include "st_cb_queryobj.h" #include "st_cb_condrender.h" @@ -53,8 +54,9 @@ st_BeginConditionalRender(struct gl_context *ctx, struct gl_query_object *q, { struct st_query_object *stq = st_query_object(q); struct st_context *st = st_context(ctx); - struct pipe_context *pipe = st->pipe; uint m; + /* Don't invert the condition for rendering by default */ + boolean inverted = FALSE; st_flush_bitmap_cache(st); @@ -71,32 +73,43 @@ st_BeginConditionalRender(struct gl_context *ctx, struct gl_query_object *q, case GL_QUERY_BY_REGION_NO_WAIT: m = PIPE_RENDER_COND_BY_REGION_NO_WAIT; break; + case GL_QUERY_WAIT_INVERTED: + m = PIPE_RENDER_COND_WAIT; + inverted = TRUE; + break; + case GL_QUERY_NO_WAIT_INVERTED: + m = PIPE_RENDER_COND_NO_WAIT; + inverted = TRUE; + break; + case GL_QUERY_BY_REGION_WAIT_INVERTED: + m = PIPE_RENDER_COND_BY_REGION_WAIT; + inverted = TRUE; + break; + case GL_QUERY_BY_REGION_NO_WAIT_INVERTED: + m = PIPE_RENDER_COND_BY_REGION_NO_WAIT; + inverted = TRUE; + break; default: assert(0 && "bad mode in st_BeginConditionalRender"); m = PIPE_RENDER_COND_WAIT; } - st->render_condition = stq->pq; - st->condition_mode = m; - - pipe->render_condition(pipe, stq->pq, m); + cso_set_render_condition(st->cso_context, stq->pq, inverted, m); } /** - * Called via ctx->Driver.BeginConditionalRender() + * Called via ctx->Driver.EndConditionalRender() */ static void st_EndConditionalRender(struct gl_context *ctx, struct gl_query_object *q) { struct st_context *st = st_context(ctx); - struct pipe_context *pipe = st->pipe; (void) q; st_flush_bitmap_cache(st); - pipe->render_condition(pipe, NULL, 0); - st->render_condition = NULL; + cso_set_render_condition(st->cso_context, NULL, FALSE, 0); }