v3d: Sync indirect draws on the last rendering.
authorEric Anholt <eric@anholt.net>
Fri, 8 Feb 2019 18:41:25 +0000 (10:41 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 19 Feb 2019 02:09:06 +0000 (18:09 -0800)
Fixes intermittent fails in
dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_cmd_and_data_and_indices
and others (particularly when run as part of a CTS run)

src/gallium/drivers/v3d/v3dx_draw.c

index 2700208e3885f8c38317a8a0b7994373b2c72685..9ca6aaa8f9554a5beb003f83355891027eff182a 100644 (file)
@@ -479,9 +479,9 @@ v3d_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
          * on the last submitted render, rather than tracking the last
          * rendering to each texture's BO.
          */
-        if (v3d->tex[PIPE_SHADER_VERTEX].num_textures) {
+        if (v3d->tex[PIPE_SHADER_VERTEX].num_textures || info->indirect) {
                 perf_debug("Blocking binner on last render "
-                           "due to vertex texturing.\n");
+                           "due to vertex texturing or indirect drawing.\n");
                 job->submit.in_sync_bcl = v3d->out_sync;
         }