Lines Matching refs:submit

94 vn_queue_submission_count_batch_semaphores(struct vn_queue_submission *submit,
103 switch (submit->batch_type) {
105 u.submit_batch = &submit->submit_batches[batch_index];
110 u.bind_sparse_batch = &submit->bind_sparse_batches[batch_index];
119 submit->wait_semaphore_count += wait_count;
125 submit->wait_wsi_count++;
130 vn_queue_submission_count_semaphores(struct vn_queue_submission *submit)
132 submit->wait_semaphore_count = 0;
133 submit->wait_wsi_count = 0;
135 for (uint32_t i = 0; i < submit->batch_count; i++)
136 vn_queue_submission_count_batch_semaphores(submit, i);
140 vn_queue_submission_alloc_storage(struct vn_queue_submission *submit)
142 struct vn_queue *queue = vn_queue_from_handle(submit->queue);
148 if (submit->wait_wsi_count) {
149 switch (submit->batch_type) {
151 alloc_size += sizeof(VkSubmitInfo) * submit->batch_count;
154 alloc_size += sizeof(VkBindSparseInfo) * submit->batch_count;
162 alloc_size += sizeof(*submit->temp.semaphores) *
163 (submit->wait_semaphore_count - submit->wait_wsi_count);
167 submit->temp.storage = NULL;
171 submit->temp.storage = vk_alloc(alloc, alloc_size, VN_DEFAULT_ALIGN,
173 if (!submit->temp.storage)
176 submit->temp.batches = submit->temp.storage;
177 submit->temp.semaphores = submit->temp.storage + semaphores_offset;
184 struct vn_queue_submission *submit,
188 struct vn_queue *queue = vn_queue_from_handle(submit->queue);
196 switch (submit->batch_type) {
198 u.submit_batch = &submit->temp.submit_batches[batch_index];
203 u.bind_sparse_batch = &submit->temp.bind_sparse_batches[batch_index];
212 VkSemaphore *dst_sems = &submit->temp.semaphores[sem_base];
226 switch (submit->batch_type) {
243 vn_queue_submission_setup_batches(struct vn_queue_submission *submit)
245 if (!submit->temp.storage)
249 if (submit->wait_wsi_count) {
250 switch (submit->batch_type) {
252 memcpy(submit->temp.submit_batches, submit->submit_batches,
253 sizeof(submit->submit_batches[0]) * submit->batch_count);
254 submit->submit_batches = submit->temp.submit_batches;
257 memcpy(submit->temp.bind_sparse_batches, submit->bind_sparse_batches,
258 sizeof(submit->bind_sparse_batches[0]) * submit->batch_count);
259 submit->bind_sparse_batches = submit->temp.bind_sparse_batches;
268 for (uint32_t i = 0; i < submit->batch_count; i++) {
269 if (submit->wait_wsi_count) {
271 submit, i, wait_sem_base);
277 vn_queue_submission_prepare_submit(struct vn_queue_submission *submit,
283 submit->batch_type = VK_STRUCTURE_TYPE_SUBMIT_INFO;
284 submit->queue = queue;
285 submit->batch_count = batch_count;
286 submit->submit_batches = submit_batches;
287 submit->fence = fence;
289 vn_queue_submission_count_semaphores(submit);
291 VkResult result = vn_queue_submission_alloc_storage(submit);
295 vn_queue_submission_setup_batches(submit);
302 struct vn_queue_submission *submit,
308 submit->batch_type = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO;
309 submit->queue = queue;
310 submit->batch_count = batch_count;
311 submit->bind_sparse_batches = bind_sparse_batches;
312 submit->fence = fence;
314 vn_queue_submission_count_semaphores(submit);
316 VkResult result = vn_queue_submission_alloc_storage(submit);
320 vn_queue_submission_setup_batches(submit);
326 vn_queue_submission_cleanup(struct vn_queue_submission *submit)
328 struct vn_queue *queue = vn_queue_from_handle(submit->queue);
331 vk_free(alloc, submit->temp.storage);
343 struct vn_queue_submission submit;
345 &submit, _queue, submitCount, pSubmits, fence);
350 if (submit.batch_count == 1) {
352 submit.submit_batches[0].pNext, WSI_MEMORY_SIGNAL_SUBMIT_INFO_MESA);
360 vn_call_vkQueueSubmit(dev->instance, submit.queue, submit.batch_count,
361 submit.submit_batches, submit.fence);
363 vn_queue_submission_cleanup(&submit);
384 vn_QueueWaitIdle(submit.queue);
388 vn_queue_submission_cleanup(&submit);
402 struct vn_queue_submission submit;
404 &submit, _queue, bindInfoCount, pBindInfo, fence);
409 dev->instance, submit.queue, submit.batch_count,
410 submit.bind_sparse_batches, submit.fence);
412 vn_queue_submission_cleanup(&submit);
416 vn_queue_submission_cleanup(&submit);
679 const struct vn_renderer_submit submit = {
688 result = vn_renderer_submit(dev->renderer, &submit);