vulkan/queue: Split vk_queue_submit into create and submit
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25576>
This commit is contained in:

committed by
Marge Bot

parent
f0392779d9
commit
c3bf1a67a1
@@ -803,10 +803,10 @@ struct vulkan_submit_info {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static VkResult
|
static VkResult
|
||||||
vk_queue_submit(struct vk_queue *queue,
|
vk_queue_submit_create(struct vk_queue *queue,
|
||||||
const struct vulkan_submit_info *info)
|
const struct vulkan_submit_info *info,
|
||||||
|
struct vk_queue_submit **submit_out)
|
||||||
{
|
{
|
||||||
struct vk_device *device = queue->base.device;
|
|
||||||
VkResult result;
|
VkResult result;
|
||||||
uint32_t sparse_memory_bind_entry_count = 0;
|
uint32_t sparse_memory_bind_entry_count = 0;
|
||||||
uint32_t sparse_memory_image_bind_entry_count = 0;
|
uint32_t sparse_memory_image_bind_entry_count = 0;
|
||||||
@@ -889,6 +889,22 @@ vk_queue_submit(struct vk_queue *queue,
|
|||||||
|
|
||||||
assert(signal_count == submit->signal_count);
|
assert(signal_count == submit->signal_count);
|
||||||
|
|
||||||
|
*submit_out = submit;
|
||||||
|
|
||||||
|
return VK_SUCCESS;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
vk_queue_submit_destroy(queue, submit);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static VkResult
|
||||||
|
vk_queue_submit(struct vk_queue *queue,
|
||||||
|
struct vk_queue_submit *submit)
|
||||||
|
{
|
||||||
|
struct vk_device *device = queue->base.device;
|
||||||
|
VkResult result;
|
||||||
|
|
||||||
/* If this device supports threaded submit, we can't rely on the client
|
/* If this device supports threaded submit, we can't rely on the client
|
||||||
* ordering requirements to ensure submits happen in the right order. Even
|
* ordering requirements to ensure submits happen in the right order. Even
|
||||||
* if this queue doesn't have a submit thread, another queue (possibly in a
|
* if this queue doesn't have a submit thread, another queue (possibly in a
|
||||||
@@ -1231,7 +1247,12 @@ vk_common_QueueSubmit2(VkQueue _queue,
|
|||||||
.signals = pSubmits[i].pSignalSemaphoreInfos,
|
.signals = pSubmits[i].pSignalSemaphoreInfos,
|
||||||
.fence = i == submitCount - 1 ? fence : NULL
|
.fence = i == submitCount - 1 ? fence : NULL
|
||||||
};
|
};
|
||||||
VkResult result = vk_queue_submit(queue, &info);
|
struct vk_queue_submit *submit;
|
||||||
|
VkResult result = vk_queue_submit_create(queue, &info, &submit);
|
||||||
|
if (unlikely(result != VK_SUCCESS))
|
||||||
|
return result;
|
||||||
|
|
||||||
|
result = vk_queue_submit(queue, submit);
|
||||||
if (unlikely(result != VK_SUCCESS))
|
if (unlikely(result != VK_SUCCESS))
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1333,7 +1354,10 @@ vk_common_QueueBindSparse(VkQueue _queue,
|
|||||||
.image_binds = pBindInfo[i].pImageBinds,
|
.image_binds = pBindInfo[i].pImageBinds,
|
||||||
.fence = i == bindInfoCount - 1 ? fence : NULL
|
.fence = i == bindInfoCount - 1 ? fence : NULL
|
||||||
};
|
};
|
||||||
VkResult result = vk_queue_submit(queue, &info);
|
struct vk_queue_submit *submit;
|
||||||
|
VkResult result = vk_queue_submit_create(queue, &info, &submit);
|
||||||
|
if (likely(result == VK_SUCCESS))
|
||||||
|
result = vk_queue_submit(queue, submit);
|
||||||
|
|
||||||
STACK_ARRAY_FINISH(wait_semaphore_infos);
|
STACK_ARRAY_FINISH(wait_semaphore_infos);
|
||||||
STACK_ARRAY_FINISH(signal_semaphore_infos);
|
STACK_ARRAY_FINISH(signal_semaphore_infos);
|
||||||
|
Reference in New Issue
Block a user