diff options
-rw-r--r-- | src/gallium/drivers/v3d/v3dx_draw.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gallium/drivers/v3d/v3dx_draw.c b/src/gallium/drivers/v3d/v3dx_draw.c index 9c533a46255..af079bd0d5a 100644 --- a/src/gallium/drivers/v3d/v3dx_draw.c +++ b/src/gallium/drivers/v3d/v3dx_draw.c @@ -425,6 +425,20 @@ v3d_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info) struct v3d_job *job = v3d_get_job_for_fbo(v3d); + /* If vertex texturing depends on the output of rendering, we need to + * ensure that that rendering is complete before we run a coordinate + * shader that depends on it. + * + * Given that doing that is unusual, for now we just block the binner + * on the last submitted render, rather than tracking the last + * rendering to each texture's BO. + */ + if (v3d->verttex.num_textures) { + perf_debug("Blocking binner on last render " + "due to vertex texturing.\n"); + job->submit.in_sync_bcl = v3d->out_sync; + } + /* Get space to emit our draw call into the BCL, using a branch to * jump to a new BO if necessary. */ |