summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/dri/i965/intel_batchbuffer.c17
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)) {