projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
anv: add no reloc flags on empty and simple bo paths.
[mesa.git]
/
src
/
intel
/
vulkan
/
anv_batch_chain.c
diff --git
a/src/intel/vulkan/anv_batch_chain.c
b/src/intel/vulkan/anv_batch_chain.c
index acbc07816b18e7c9ef1e056883c2e507d8d7a80d..823345eeec19a855da2f1a6451919155bb9b8a35 100644
(file)
--- a/
src/intel/vulkan/anv_batch_chain.c
+++ b/
src/intel/vulkan/anv_batch_chain.c
@@
-409,9
+409,8
@@
static void
anv_batch_bo_start(struct anv_batch_bo *bbo, struct anv_batch *batch,
size_t batch_padding)
{
anv_batch_bo_start(struct anv_batch_bo *bbo, struct anv_batch *batch,
size_t batch_padding)
{
- batch->start_addr = (struct anv_address) { .bo = bbo->bo, };
- batch->next = batch->start = bbo->bo->map;
- batch->end = bbo->bo->map + bbo->bo->size - batch_padding;
+ anv_batch_set_storage(batch, (struct anv_address) { .bo = bbo->bo, },
+ bbo->bo->map, bbo->bo->size - batch_padding);
batch->relocs = &bbo->relocs;
anv_reloc_list_clear(&bbo->relocs);
}
batch->relocs = &bbo->relocs;
anv_reloc_list_clear(&bbo->relocs);
}
@@
-929,7
+928,7
@@
anv_cmd_buffer_end_batch_buffer(struct anv_cmd_buffer *cmd_buffer)
const uint32_t length = cmd_buffer->batch.next - cmd_buffer->batch.start;
if (!cmd_buffer->device->can_chain_batches) {
cmd_buffer->exec_mode = ANV_CMD_BUFFER_EXEC_MODE_GROW_AND_EMIT;
const uint32_t length = cmd_buffer->batch.next - cmd_buffer->batch.start;
if (!cmd_buffer->device->can_chain_batches) {
cmd_buffer->exec_mode = ANV_CMD_BUFFER_EXEC_MODE_GROW_AND_EMIT;
- } else if (cmd_buffer->device->physical->use_
softpin
) {
+ } else if (cmd_buffer->device->physical->use_
call_secondary
) {
cmd_buffer->exec_mode = ANV_CMD_BUFFER_EXEC_MODE_CALL_AND_RETURN;
/* If the secondary command buffer begins & ends in the same BO and
* its length is less than the length of CS prefetch, add some NOOPs
cmd_buffer->exec_mode = ANV_CMD_BUFFER_EXEC_MODE_CALL_AND_RETURN;
/* If the secondary command buffer begins & ends in the same BO and
* its length is less than the length of CS prefetch, add some NOOPs
@@
-1637,7
+1636,7
@@
setup_empty_execbuf(struct anv_execbuf *execbuf, struct anv_device *device)
.buffer_count = execbuf->bo_count,
.batch_start_offset = 0,
.batch_len = 8, /* GEN7_MI_BATCH_BUFFER_END and NOOP */
.buffer_count = execbuf->bo_count,
.batch_start_offset = 0,
.batch_len = 8, /* GEN7_MI_BATCH_BUFFER_END and NOOP */
- .flags = I915_EXEC_HANDLE_LUT | I915_EXEC_RENDER,
+ .flags = I915_EXEC_HANDLE_LUT | I915_EXEC_RENDER
| I915_EXEC_NO_RELOC
,
.rsvd1 = device->context_id,
.rsvd2 = 0,
};
.rsvd1 = device->context_id,
.rsvd2 = 0,
};
@@
-1680,7
+1679,13
@@
anv_queue_execbuf_locked(struct anv_queue *queue,
execbuf.alloc_scope = submit->alloc_scope;
execbuf.perf_query_pass = submit->perf_query_pass;
execbuf.alloc_scope = submit->alloc_scope;
execbuf.perf_query_pass = submit->perf_query_pass;
- VkResult result;
+ /* Always add the workaround BO as it includes a driver identifier for the
+ * error_state.
+ */
+ VkResult result =
+ anv_execbuf_add_bo(device, &execbuf, device->workaround_bo, NULL, 0);
+ if (result != VK_SUCCESS)
+ goto error;
for (uint32_t i = 0; i < submit->fence_bo_count; i++) {
int signaled;
for (uint32_t i = 0; i < submit->fence_bo_count; i++) {
int signaled;
@@
-1704,7
+1709,7
@@
anv_queue_execbuf_locked(struct anv_queue *queue,
.buffer_count = execbuf.bo_count,
.batch_start_offset = 0,
.batch_len = submit->simple_bo_size,
.buffer_count = execbuf.bo_count,
.batch_start_offset = 0,
.batch_len = submit->simple_bo_size,
- .flags = I915_EXEC_HANDLE_LUT | I915_EXEC_RENDER,
+ .flags = I915_EXEC_HANDLE_LUT | I915_EXEC_RENDER
| I915_EXEC_NO_RELOC
,
.rsvd1 = device->context_id,
.rsvd2 = 0,
};
.rsvd1 = device->context_id,
.rsvd2 = 0,
};