diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_batchbuffer.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c index 216b0276c3d..053c4baabd5 100644 --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c @@ -631,6 +631,8 @@ brw_finish_batch(struct brw_context *brw) { const struct gen_device_info *devinfo = &brw->screen->devinfo; + brw->no_batch_wrap = true; + /* Capture the closing pipeline statistics register values necessary to * support query objects (in the non-hardware context world). */ @@ -672,6 +674,8 @@ brw_finish_batch(struct brw_context *brw) /* Round batchbuffer usage to 2 DWORDs. */ intel_batchbuffer_emit_dword(&brw->batch, MI_NOOP); } + + brw->no_batch_wrap = false; } static void @@ -885,6 +889,12 @@ _intel_batchbuffer_flush_fence(struct brw_context *brw, if (USED_BATCH(brw->batch) == 0) return 0; + /* Check that we didn't just wrap our batchbuffer at a bad time. */ + assert(!brw->no_batch_wrap); + + brw_finish_batch(brw); + intel_upload_finish(brw); + if (brw->throttle_batch[0] == NULL) { brw->throttle_batch[0] = brw->batch.bo; brw_bo_reference(brw->throttle_batch[0]); @@ -904,13 +914,6 @@ _intel_batchbuffer_flush_fence(struct brw_context *brw, brw->batch.state_relocs.reloc_count); } - brw_finish_batch(brw); - - intel_upload_finish(brw); - - /* Check that we didn't just wrap our batchbuffer at a bad time. */ - assert(!brw->no_batch_wrap); - ret = do_flush_locked(brw, in_fence_fd, out_fence_fd); if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) { |