uint64_t flags = batch->validation_list[i].flags;
assert(batch->validation_list[i].handle ==
batch->exec_bos[i]->gem_handle);
- fprintf(stderr, "[%2d]: %2d %-14s @ 0x%016llx (%"PRIu64"B)\t %2d refs %s\n",
+ fprintf(stderr, "[%2d]: %2d %-14s @ 0x%"PRIx64" (%"PRIu64"B)\t %2d refs %s\n",
i,
batch->validation_list[i].handle,
batch->exec_bos[i]->name,
- batch->validation_list[i].offset,
+ (uint64_t)batch->validation_list[i].offset,
batch->exec_bos[i]->size,
batch->exec_bos[i]->refcount,
(flags & EXEC_OBJECT_WRITE) ? " (write)" : "");
batch->cache.render = _mesa_hash_table_create(NULL, _mesa_hash_pointer,
_mesa_key_pointer_equal);
- batch->cache.depth = _mesa_set_create(NULL, _mesa_hash_pointer,
- _mesa_key_pointer_equal);
memset(batch->other_batches, 0, sizeof(batch->other_batches));
void
iris_use_pinned_bo(struct iris_batch *batch,
struct iris_bo *bo,
- bool writable)
+ bool writable, enum iris_domain access)
{
assert(bo->kflags & EXEC_OBJECT_PINNED);
if (bo == batch->screen->workaround_bo)
writable = false;
+ if (access < NUM_IRIS_DOMAINS) {
+ assert(batch->sync_region_depth);
+ iris_bo_bump_seqno(bo, batch->next_seqno, access);
+ }
+
struct drm_i915_gem_exec_object2 *existing_entry =
find_validation_entry(batch, bo);
batch->map = iris_bo_map(NULL, batch->bo, MAP_READ | MAP_WRITE);
batch->map_next = batch->map;
- iris_use_pinned_bo(batch, batch->bo, false);
+ iris_use_pinned_bo(batch, batch->bo, false, IRIS_DOMAIN_NONE);
}
static void
iris_batch_add_syncobj(batch, syncobj, I915_EXEC_FENCE_SIGNAL);
iris_syncobj_reference(screen, &syncobj, NULL);
- iris_cache_sets_clear(batch);
-
assert(!batch->sync_region_depth);
iris_batch_sync_boundary(batch);
+ iris_batch_mark_reset_sync(batch);
/* Always add the workaround BO, it contains a driver identifier at the
* beginning quite helpful to debug error states.
*/
- iris_use_pinned_bo(batch, screen->workaround_bo, false);
+ iris_use_pinned_bo(batch, screen->workaround_bo, false, IRIS_DOMAIN_NONE);
iris_batch_maybe_noop(batch);
}
iris_destroy_hw_context(bufmgr, batch->hw_ctx_id);
_mesa_hash_table_destroy(batch->cache.render, NULL);
- _mesa_set_destroy(batch->cache.depth, NULL);
if (unlikely(INTEL_DEBUG))
gen_batch_decode_ctx_finish(&batch->decoder);
/**
* Flush the batch buffer, submitting it to the GPU and resetting it so
* we're ready to emit the next batch.
- *
- * \param in_fence_fd is ignored if -1. Otherwise, this function takes
- * ownership of the fd.
- *
- * \param out_fence_fd is ignored if NULL. Otherwise, the caller must
- * take ownership of the returned fd.
*/
void
_iris_batch_flush(struct iris_batch *batch, const char *file, int line)