v3d: only flush jobs accessing the query BO when reading query results
authorIago Toral Quiroga <itoral@igalia.com>
Mon, 17 Jun 2019 06:21:32 +0000 (08:21 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Tue, 18 Jun 2019 06:09:03 +0000 (08:09 +0200)
Reviewed-by: Eric Anholt <eric@anholt.net>
src/gallium/drivers/v3d/v3d_query.c

index d3447793b0a4c30306b962b18d81a647c6189ce5..f68c42321a1b81332355b46393ed253587aef2e7 100644 (file)
@@ -116,12 +116,12 @@ static boolean
 v3d_get_query_result(struct pipe_context *pctx, struct pipe_query *query,
                      boolean wait, union pipe_query_result *vresult)
 {
+        struct v3d_context *v3d = v3d_context(pctx);
         struct v3d_query *q = (struct v3d_query *)query;
         uint32_t result = 0;
 
         if (q->bo) {
-                /* XXX: Only flush the jobs using this BO. */
-                v3d_flush(pctx);
+                v3d_flush_jobs_using_bo(v3d, q->bo);
 
                 if (wait) {
                         if (!v3d_bo_wait(q->bo, 0, "query"))