From: Nicolai Hähnle <[email protected]>

The QBO workaround compute grid launch emits the render condition atom
when dirty, so install the render condition in the context only after
launching the compute grid. This avoids a redundant SET_PREDICATION.
---
 src/gallium/drivers/radeon/r600_query.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_query.c 
b/src/gallium/drivers/radeon/r600_query.c
index cf7ec49..2827891 100644
--- a/src/gallium/drivers/radeon/r600_query.c
+++ b/src/gallium/drivers/radeon/r600_query.c
@@ -1782,10 +1782,6 @@ static void r600_render_condition(struct pipe_context 
*ctx,
        struct r600_query_buffer *qbuf;
        struct r600_atom *atom = &rctx->render_cond_atom;
 
-       rctx->render_cond = query;
-       rctx->render_cond_invert = condition;
-       rctx->render_cond_mode = mode;
-
        /* Compute the size of SET_PREDICATION packets. */
        atom->num_dw = 0;
        if (query) {
@@ -1812,6 +1808,11 @@ static void r600_render_condition(struct pipe_context 
*ctx,
                                &rquery->workaround_offset,
                                (struct pipe_resource 
**)&rquery->workaround_buf);
 
+                       /* Reset to NULL to avoid a redundant SET_PREDICATION
+                        * from launching the compute grid.
+                        */
+                       rctx->render_cond = NULL;
+
                        ctx->get_query_result_resource(
                                ctx, query, true, PIPE_QUERY_TYPE_U64, 0,
                                &rquery->workaround_buf->b.b, 
rquery->workaround_offset);
@@ -1828,6 +1829,10 @@ static void r600_render_condition(struct pipe_context 
*ctx,
                }
        }
 
+       rctx->render_cond = query;
+       rctx->render_cond_invert = condition;
+       rctx->render_cond_mode = mode;
+
        rctx->set_atom_dirty(rctx, atom, query != NULL);
 }
 
-- 
2.9.3

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to