diff options
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_job.c')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_job.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_job.c b/src/gallium/drivers/vc4/vc4_job.c index 41660f6ac4d..d8c11154e91 100644 --- a/src/gallium/drivers/vc4/vc4_job.c +++ b/src/gallium/drivers/vc4/vc4_job.c @@ -175,6 +175,20 @@ vc4_job_submit(struct vc4_context *vc4) vc4_dump_cl(vc4->bcl.base, cl_offset(&vc4->bcl), false); } + if (cl_offset(&vc4->bcl) > 0) { + /* Increment the semaphore indicating that binning is done and + * unblocking the render thread. Note that this doesn't act + * until the FLUSH completes. + */ + cl_ensure_space(&vc4->bcl, 8); + struct vc4_cl_out *bcl = cl_start(&vc4->bcl); + cl_u8(&bcl, VC4_PACKET_INCREMENT_SEMAPHORE); + /* The FLUSH caps all of our bin lists with a + * VC4_PACKET_RETURN. + */ + cl_u8(&bcl, VC4_PACKET_FLUSH); + cl_end(&vc4->bcl, bcl); + } struct drm_vc4_submit_cl submit; memset(&submit, 0, sizeof(submit)); |