diff options
author | Lionel Landwerlin <[email protected]> | 2019-08-23 20:14:34 +0300 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2019-11-11 21:46:51 +0000 |
commit | 89de271bc2923834adf13d9b45bae9a1811c94f6 (patch) | |
tree | 4b5d7bcf55cd3764fd194afbf61bfb18fca955d8 /src/intel | |
parent | f606c12731651c02ce8b70593946a4d7c7bb10c6 (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.c | 12 | ||||
-rw-r--r-- | src/intel/vulkan/anv_queue.c | 24 |
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; } |