Lines Matching refs:submit

75 vn_queue_submission_count_batch_semaphores(struct vn_queue_submission *submit,
84 switch (submit->batch_type) {
86 u.submit_batch = &submit->submit_batches[batch_index];
91 u.bind_sparse_batch = &submit->bind_sparse_batches[batch_index];
100 submit->wait_semaphore_count += wait_count;
106 submit->wait_wsi_count++;
111 vn_queue_submission_count_semaphores(struct vn_queue_submission *submit)
113 submit->wait_semaphore_count = 0;
114 submit->wait_wsi_count = 0;
116 for (uint32_t i = 0; i < submit->batch_count; i++)
117 vn_queue_submission_count_batch_semaphores(submit, i);
121 vn_queue_submission_alloc_storage(struct vn_queue_submission *submit)
123 struct vn_queue *queue = vn_queue_from_handle(submit->queue);
129 if (submit->wait_wsi_count) {
130 switch (submit->batch_type) {
132 alloc_size += sizeof(VkSubmitInfo) * submit->batch_count;
135 alloc_size += sizeof(VkBindSparseInfo) * submit->batch_count;
143 alloc_size += sizeof(*submit->temp.semaphores) *
144 (submit->wait_semaphore_count - submit->wait_wsi_count);
148 submit->temp.storage = NULL;
152 submit->temp.storage = vk_alloc(alloc, alloc_size, VN_DEFAULT_ALIGN,
154 if (!submit->temp.storage)
157 submit->temp.batches = submit->temp.storage;
158 submit->temp.semaphores = submit->temp.storage + semaphores_offset;
165 struct vn_queue_submission *submit,
169 struct vn_queue *queue = vn_queue_from_handle(submit->queue);
177 switch (submit->batch_type) {
179 u.submit_batch = &submit->temp.submit_batches[batch_index];
184 u.bind_sparse_batch = &submit->temp.bind_sparse_batches[batch_index];
193 VkSemaphore *dst_sems = &submit->temp.semaphores[sem_base];
207 switch (submit->batch_type) {
224 vn_queue_submission_setup_batches(struct vn_queue_submission *submit)
226 if (!submit->temp.storage)
230 if (submit->wait_wsi_count) {
231 switch (submit->batch_type) {
233 memcpy(submit->temp.submit_batches, submit->submit_batches,
234 sizeof(submit->submit_batches[0]) * submit->batch_count);
235 submit->submit_batches = submit->temp.submit_batches;
238 memcpy(submit->temp.bind_sparse_batches, submit->bind_sparse_batches,
239 sizeof(submit->bind_sparse_batches[0]) * submit->batch_count);
240 submit->bind_sparse_batches = submit->temp.bind_sparse_batches;
249 for (uint32_t i = 0; i < submit->batch_count; i++) {
250 if (submit->wait_wsi_count) {
252 submit, i, wait_sem_base);
258 vn_queue_submission_prepare_submit(struct vn_queue_submission *submit,
264 submit->batch_type = VK_STRUCTURE_TYPE_SUBMIT_INFO;
265 submit->queue = queue;
266 submit->batch_count = batch_count;
267 submit->submit_batches = submit_batches;
268 submit->fence = fence;
270 vn_queue_submission_count_semaphores(submit);
272 VkResult result = vn_queue_submission_alloc_storage(submit);
276 vn_queue_submission_setup_batches(submit);
283 struct vn_queue_submission *submit,
289 submit->batch_type = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO;
290 submit->queue = queue;
291 submit->batch_count = batch_count;
292 submit->bind_sparse_batches = bind_sparse_batches;
293 submit->fence = fence;
295 vn_queue_submission_count_semaphores(submit);
297 VkResult result = vn_queue_submission_alloc_storage(submit);
301 vn_queue_submission_setup_batches(submit);
307 vn_queue_submission_cleanup(struct vn_queue_submission *submit)
309 struct vn_queue *queue = vn_queue_from_handle(submit->queue);
312 vk_free(alloc, submit->temp.storage);
333 /* skip no-op submit */
359 struct vn_queue_submission submit;
364 result = vn_queue_submission_prepare_submit(&submit, _queue, submitCount,
369 if (submit.batch_count == 1) {
371 submit.submit_batches[0].pNext, WSI_MEMORY_SIGNAL_SUBMIT_INFO_MESA);
386 * - defer the feedback fence to another submit to avoid deep copy
389 result = vn_queue_submit(dev->instance, submit.queue, submit.batch_count,
390 submit.submit_batches,
391 feedback_fence ? VK_NULL_HANDLE : submit.fence,
394 vn_queue_submission_cleanup(&submit);
398 /* TODO intercept original submit batches to append the fence feedback cmd
415 result = vn_queue_submit(dev->instance, submit.queue, 1, &info,
416 submit.fence, sync_submit);
418 vn_queue_submission_cleanup(&submit);
440 vn_QueueWaitIdle(submit.queue);
444 vn_queue_submission_cleanup(&submit);
462 struct vn_queue_submission submit;
464 &submit, _queue, bindInfoCount, pBindInfo, fence);
469 dev->instance, submit.queue, submit.batch_count,
470 submit.bind_sparse_batches, submit.fence);
472 vn_queue_submission_cleanup(&submit);
476 vn_queue_submission_cleanup(&submit);
858 const struct vn_renderer_submit submit = {
867 result = vn_renderer_submit(dev->renderer, &submit);