aboutsummaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorLionel Landwerlin <[email protected]>2019-08-23 20:14:34 +0300
committerLionel Landwerlin <[email protected]>2019-11-11 21:46:51 +0000
commit89de271bc2923834adf13d9b45bae9a1811c94f6 (patch)
tree4b5d7bcf55cd3764fd194afbf61bfb18fca955d8 /src/intel
parentf606c12731651c02ce8b70593946a4d7c7bb10c6 (diff)
anv: allow NULL batch parameter to anv_queue_submit_simple_batch
We can reuse device->trivial_batch_bo Signed-off-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/vulkan/anv_device.c12
-rw-r--r--src/intel/vulkan/anv_queue.c24
2 files changed, 17 insertions, 19 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index cc72b55f53e..3e1e6e1c804 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -2959,19 +2959,11 @@ VkResult anv_DeviceWaitIdle(
VkDevice _device)
{
ANV_FROM_HANDLE(anv_device, device, _device);
+
if (anv_device_is_lost(device))
return VK_ERROR_DEVICE_LOST;
- struct anv_batch batch;
-
- uint32_t cmds[8];
- batch.start = batch.next = cmds;
- batch.end = (void *) cmds + sizeof(cmds);
-
- anv_batch_emit(&batch, GEN7_MI_BATCH_BUFFER_END, bbe);
- anv_batch_emit(&batch, GEN7_MI_NOOP, noop);
-
- return anv_device_submit_simple_batch(device, &batch);
+ return anv_device_submit_simple_batch(device, NULL);
}
bool
diff --git a/src/intel/vulkan/anv_queue.c b/src/intel/vulkan/anv_queue.c
index 87abbebe8ab..dbe2febaef7 100644
--- a/src/intel/vulkan/anv_queue.c
+++ b/src/intel/vulkan/anv_queue.c
@@ -123,15 +123,20 @@ anv_device_submit_simple_batch(struct anv_device *device,
VkResult result = VK_SUCCESS;
uint32_t size;
- /* Kernel driver requires 8 byte aligned batch length */
- size = align_u32(batch->next - batch->start, 8);
- result = anv_bo_pool_alloc(&device->batch_bo_pool, size, &bo);
- if (result != VK_SUCCESS)
- return result;
+ if (batch) {
+ /* Kernel driver requires 8 byte aligned batch length */
+ size = align_u32(batch->next - batch->start, 8);
+ result = anv_bo_pool_alloc(&device->batch_bo_pool, size, &bo);
+ if (result != VK_SUCCESS)
+ return result;
- memcpy(bo->map, batch->start, size);
- if (!device->info.has_llc)
- gen_flush_range(bo->map, size);
+ memcpy(bo->map, batch->start, size);
+ if (!device->info.has_llc)
+ gen_flush_range(bo->map, size);
+ } else {
+ size = device->trivial_batch_bo->size;
+ bo = device->trivial_batch_bo;
+ }
exec2_objects[0].handle = bo->gem_handle;
exec2_objects[0].relocation_count = 0;
@@ -168,7 +173,8 @@ anv_device_submit_simple_batch(struct anv_device *device,
result = anv_device_wait(device, bo, INT64_MAX);
fail:
- anv_bo_pool_free(&device->batch_bo_pool, bo);
+ if (batch)
+ anv_bo_pool_free(&device->batch_bo_pool, bo);
return result;
}