diff options
author | Eric Anholt <[email protected]> | 2016-09-08 14:01:15 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2016-09-14 06:08:03 +0100 |
commit | 0ef1b32ebbcf9ad6316021a1059ba7d6a65b9588 (patch) | |
tree | 6129e29fd478e74f1ec6ae95ee690fdcaa64b120 /src/gallium/drivers/vc4 | |
parent | a2014c2eb9e03301b2f472adf2d46915579e4512 (diff) |
vc4: Move bin CL trailer to job_submit() time.
To implement job shuffling, I want to be able to call submit() on specific
jobs, turning vc4_flush() into the context's flush-all-jobs hook.
Diffstat (limited to 'src/gallium/drivers/vc4')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_context.c | 11 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_job.c | 14 |
2 files changed, 14 insertions, 11 deletions
diff --git a/src/gallium/drivers/vc4/vc4_context.c b/src/gallium/drivers/vc4/vc4_context.c index a85554a43dd..8b174f3e6b1 100644 --- a/src/gallium/drivers/vc4/vc4_context.c +++ b/src/gallium/drivers/vc4/vc4_context.c @@ -56,17 +56,6 @@ vc4_flush(struct pipe_context *pctx) return; } - /* 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); - if (cbuf && (vc4->resolve & PIPE_CLEAR_COLOR0)) { pipe_surface_reference(&vc4->color_write, cbuf->texture->nr_samples > 1 ? 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)); |