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

We need to keep the workaround for older firmware, though.
---
 src/gallium/drivers/radeon/r600_query.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_query.c 
b/src/gallium/drivers/radeon/r600_query.c
index 03ff1018a71..76307ca0662 100644
--- a/src/gallium/drivers/radeon/r600_query.c
+++ b/src/gallium/drivers/radeon/r600_query.c
@@ -1796,25 +1796,27 @@ static void r600_render_condition(struct pipe_context 
*ctx,
        struct r600_common_context *rctx = (struct r600_common_context *)ctx;
        struct r600_query_hw *rquery = (struct r600_query_hw *)query;
        struct r600_query_buffer *qbuf;
        struct r600_atom *atom = &rctx->render_cond_atom;
 
        /* Compute the size of SET_PREDICATION packets. */
        atom->num_dw = 0;
        if (query) {
                bool needs_workaround = false;
 
-               /* There is a firmware regression in VI which causes successive
+               /* There was a firmware regression in VI which causes successive
                 * SET_PREDICATION packets to give the wrong answer for
                 * non-inverted stream overflow predication.
                 */
-               if (rctx->chip_class >= VI && !condition &&
+               if (((rctx->chip_class == VI && 
rctx->screen->info.pfp_fw_feature < 49) ||
+                    (rctx->chip_class == GFX9 && 
rctx->screen->info.pfp_fw_feature < 38)) &&
+                   !condition &&
                    (rquery->b.type == PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE ||
                     (rquery->b.type == PIPE_QUERY_SO_OVERFLOW_PREDICATE &&
                      (rquery->buffer.previous ||
                       rquery->buffer.results_end > rquery->result_size)))) {
                        needs_workaround = true;
                }
 
                if (needs_workaround && !rquery->workaround_buf) {
                        bool old_force_off = rctx->render_cond_force_off;
                        rctx->render_cond_force_off = true;
-- 
2.11.0

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

Reply via email to