intel: intel_bo instead of intel_mem in intel_cmd_reloc
The spec states that
The rules for rebinding memory are different for images and all other object
types. Rebinding of a given non-image object should not occur from the time
of building a command buffer or a descriptor set which references that
object to the time at which the GPU has finished execution of that command
buffer or descriptor set. If a new memory location is bound to a non-image
object while that object is referenced in a command buffer scheduled for
execution on GPU, the execution results are not guaranteed after memory
rebinding.
and
Image memory can be rebound at any time, even during command buffer
construction or descriptor set building. A snapshot of image memory binding
at the time of building a command buffer or descriptor set data is taken and
recorded in command buffer or descriptor set on binding image to state or
referencing image otherwise.
diff --git a/icd/intel/cmd_pipeline.c b/icd/intel/cmd_pipeline.c
index 2bfc59d..d23371a 100644
--- a/icd/intel/cmd_pipeline.c
+++ b/icd/intel/cmd_pipeline.c
@@ -182,8 +182,8 @@
cmd_batch_reserve_reloc(cmd, cmd_len, 2);
cmd_batch_write(cmd, dw0);
- cmd_batch_reloc(cmd, offset, mem, INTEL_DOMAIN_VERTEX, 0);
- cmd_batch_reloc(cmd, end_offset, mem, INTEL_DOMAIN_VERTEX, 0);
+ cmd_batch_reloc(cmd, offset, mem->bo, INTEL_DOMAIN_VERTEX, 0);
+ cmd_batch_reloc(cmd, end_offset, mem->bo, INTEL_DOMAIN_VERTEX, 0);
}
static inline void
@@ -244,7 +244,7 @@
cmd_batch_write(cmd, dw0);
cmd_batch_write(cmd, view->cmd[0]);
if (view->img) {
- cmd_batch_reloc(cmd, view->cmd[1], view->img->obj.mem,
+ cmd_batch_reloc(cmd, view->cmd[1], view->img->obj.mem->bo,
INTEL_DOMAIN_RENDER,
INTEL_DOMAIN_RENDER);
} else {
@@ -273,7 +273,7 @@
cmd_batch_write(cmd, dw0);
cmd_batch_write(cmd, view->cmd[6]);
if (view->img) {
- cmd_batch_reloc(cmd, view->cmd[7], view->img->obj.mem,
+ cmd_batch_reloc(cmd, view->cmd[7], view->img->obj.mem->bo,
INTEL_DOMAIN_RENDER,
INTEL_DOMAIN_RENDER);
} else {
@@ -298,7 +298,7 @@
cmd_batch_write(cmd, dw0);
cmd_batch_write(cmd, view->cmd[8]);
if (view->img) {
- cmd_batch_reloc(cmd, view->cmd[9], view->img->obj.mem,
+ cmd_batch_reloc(cmd, view->cmd[9], view->img->obj.mem->bo,
INTEL_DOMAIN_RENDER,
INTEL_DOMAIN_RENDER);
} else {
@@ -617,7 +617,7 @@
memcpy(dw, view->cmd, sizeof(uint32_t) * view->cmd_len);
cmd_writer_add_reloc(cmd, &cmd->state,
- 1, view->cmd[1], view->img->obj.mem,
+ 1, view->cmd[1], view->img->obj.mem->bo,
INTEL_DOMAIN_RENDER, INTEL_DOMAIN_RENDER);
cmd_state_advance(cmd, view->cmd_len);
}
@@ -632,7 +632,7 @@
memcpy(dw, view->cmd, sizeof(uint32_t) * view->cmd_len);
cmd_writer_add_reloc(cmd, &cmd->state,
- 1, view->cmd[1], view->mem,
+ 1, view->cmd[1], view->mem->bo,
INTEL_DOMAIN_RENDER, INTEL_DOMAIN_RENDER);
cmd_state_advance(cmd, view->cmd_len);
}