diff options
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_batchbuffer.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c index 9cd491b5ace..95ce4be3c11 100644 --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c @@ -662,31 +662,29 @@ do_flush_locked(struct brw_context *brw, int in_fence_fd, int *out_fence_fd) if (batch->needs_sol_reset) flags |= I915_EXEC_GEN7_SOL_RESET; - if (ret == 0) { - uint32_t hw_ctx = batch->ring == RENDER_RING ? brw->hw_ctx : 0; - - struct drm_i915_gem_exec_object2 *entry = &batch->validation_list[0]; - assert(entry->handle == batch->bo->gem_handle); - entry->relocation_count = batch->reloc_count; - entry->relocs_ptr = (uintptr_t) batch->relocs; - - if (batch->use_batch_first) { - flags |= I915_EXEC_BATCH_FIRST | I915_EXEC_HANDLE_LUT; - } else { - /* Move the batch to the end of the validation list */ - struct drm_i915_gem_exec_object2 tmp; - const unsigned index = batch->exec_count - 1; - - tmp = *entry; - *entry = batch->validation_list[index]; - batch->validation_list[index] = tmp; - } + uint32_t hw_ctx = batch->ring == RENDER_RING ? brw->hw_ctx : 0; + + struct drm_i915_gem_exec_object2 *entry = &batch->validation_list[0]; + assert(entry->handle == batch->bo->gem_handle); + entry->relocation_count = batch->reloc_count; + entry->relocs_ptr = (uintptr_t) batch->relocs; - ret = execbuffer(dri_screen->fd, batch, hw_ctx, - 4 * USED_BATCH(*batch), - in_fence_fd, out_fence_fd, flags); + if (batch->use_batch_first) { + flags |= I915_EXEC_BATCH_FIRST | I915_EXEC_HANDLE_LUT; + } else { + /* Move the batch to the end of the validation list */ + struct drm_i915_gem_exec_object2 tmp; + const unsigned index = batch->exec_count - 1; + + tmp = *entry; + *entry = batch->validation_list[index]; + batch->validation_list[index] = tmp; } + ret = execbuffer(dri_screen->fd, batch, hw_ctx, + 4 * USED_BATCH(*batch), + in_fence_fd, out_fence_fd, flags); + throttle(brw); } |