- if (radeon->radeonScreen->kernel_mm) {
- struct radeon_query_object *query = (struct radeon_query_object *)q;
- uint32_t domain;
-
- /* Need to perform a flush, as per ARB_occlusion_query spec */
- if (!radeonQueryIsFlushed(ctx, q)) {
- ctx->Driver.Flush(ctx);
- }
-
- if (radeon_bo_is_busy(query->bo, &domain) == 0) {
- radeonQueryGetResult(ctx, q);
- query->Base.Ready = GL_TRUE;
- }
- } else {
- radeonWaitQuery(ctx, q);
+ struct radeon_query_object *query = (struct radeon_query_object *)q;
+ uint32_t domain;
+
+ /* Need to perform a flush, as per ARB_occlusion_query spec */
+ if (radeon_bo_is_referenced_by_cs(query->bo, radeon->cmdbuf.cs)) {
+ ctx->Driver.Flush(ctx);
+ }
+
+ if (radeon_bo_is_busy(query->bo, &domain) == 0) {
+ radeonQueryGetResult(ctx, q);
+ query->Base.Ready = GL_TRUE;