Lines Matching refs:submit
88 struct anv_queue_submit *submit) in anv_queue_submit_free() argument
90 const VkAllocationCallbacks *alloc = submit->alloc; in anv_queue_submit_free()
92 for (uint32_t i = 0; i < submit->temporary_semaphore_count; i++) in anv_queue_submit_free()
93 anv_semaphore_impl_cleanup(device, &submit->temporary_semaphores[i]); in anv_queue_submit_free()
95 if (submit->in_fence != -1) { in anv_queue_submit_free()
97 close(submit->in_fence); in anv_queue_submit_free()
99 if (submit->out_fence != -1) { in anv_queue_submit_free()
101 close(submit->out_fence); in anv_queue_submit_free()
103 vk_free(alloc, submit->fences); in anv_queue_submit_free()
104 vk_free(alloc, submit->fence_values); in anv_queue_submit_free()
105 vk_free(alloc, submit->temporary_semaphores); in anv_queue_submit_free()
106 vk_free(alloc, submit->wait_timelines); in anv_queue_submit_free()
107 vk_free(alloc, submit->wait_timeline_values); in anv_queue_submit_free()
108 vk_free(alloc, submit->signal_timelines); in anv_queue_submit_free()
109 vk_free(alloc, submit->signal_timeline_values); in anv_queue_submit_free()
110 vk_free(alloc, submit->fence_bos); in anv_queue_submit_free()
111 vk_free(alloc, submit->cmd_buffers); in anv_queue_submit_free()
112 vk_free(alloc, submit); in anv_queue_submit_free()
116 anv_queue_submit_ready_locked(struct anv_queue_submit *submit) in anv_queue_submit_ready_locked() argument
118 for (uint32_t i = 0; i < submit->wait_timeline_count; i++) { in anv_queue_submit_ready_locked()
119 if (submit->wait_timeline_values[i] > submit->wait_timelines[i]->highest_pending) in anv_queue_submit_ready_locked()
241 struct anv_queue_submit *submit,
247 struct anv_queue_submit *submit) in anv_queue_submit_timeline_locked() argument
251 for (uint32_t i = 0; i < submit->wait_timeline_count; i++) { in anv_queue_submit_timeline_locked()
252 struct anv_timeline *timeline = submit->wait_timelines[i]; in anv_queue_submit_timeline_locked()
253 uint64_t wait_value = submit->wait_timeline_values[i]; in anv_queue_submit_timeline_locked()
261 result = anv_queue_submit_add_fence_bo(queue, submit, point->bo, false); in anv_queue_submit_timeline_locked()
267 for (uint32_t i = 0; i < submit->signal_timeline_count; i++) { in anv_queue_submit_timeline_locked()
268 struct anv_timeline *timeline = submit->signal_timelines[i]; in anv_queue_submit_timeline_locked()
269 uint64_t signal_value = submit->signal_timeline_values[i]; in anv_queue_submit_timeline_locked()
277 result = anv_queue_submit_add_fence_bo(queue, submit, point->bo, true); in anv_queue_submit_timeline_locked()
282 result = anv_queue_execbuf_locked(queue, submit); in anv_queue_submit_timeline_locked()
286 for (uint32_t i = 0; i < submit->signal_timeline_count; i++) { in anv_queue_submit_timeline_locked()
287 struct anv_timeline *timeline = submit->signal_timelines[i]; in anv_queue_submit_timeline_locked()
288 uint64_t signal_value = submit->signal_timeline_values[i]; in anv_queue_submit_timeline_locked()
297 for (uint32_t i = 0; i < submit->signal_timeline_count; i++) { in anv_queue_submit_timeline_locked()
298 struct anv_timeline *timeline = submit->signal_timelines[i]; in anv_queue_submit_timeline_locked()
299 uint64_t signal_value = submit->signal_timeline_values[i]; in anv_queue_submit_timeline_locked()
317 list_for_each_entry_safe(struct anv_queue_submit, submit, in anv_queue_submit_deferred_locked()
319 if (!anv_queue_submit_ready_locked(submit)) in anv_queue_submit_deferred_locked()
323 list_del(&submit->link); in anv_queue_submit_deferred_locked()
325 result = anv_queue_submit_timeline_locked(queue, submit); in anv_queue_submit_deferred_locked()
327 anv_queue_submit_free(queue->device, submit); in anv_queue_submit_deferred_locked()
357 struct anv_queue_submit *submit) in anv_queue_submit_signal_fences() argument
359 for (uint32_t i = 0; i < submit->fence_count; i++) { in anv_queue_submit_signal_fences()
360 if (submit->fences[i].flags & I915_EXEC_FENCE_SIGNAL) { in anv_queue_submit_signal_fences()
361 anv_gem_syncobj_timeline_signal(device, &submit->fences[i].handle, in anv_queue_submit_signal_fences()
362 &submit->fence_values[i], 1); in anv_queue_submit_signal_fences()
376 struct anv_queue_submit *submit = in anv_queue_task() local
378 list_del(&submit->link); in anv_queue_task()
392 if (!queue->lost && submit->wait_timeline_count > 0) { in anv_queue_task()
395 queue->device, submit->wait_timeline_syncobjs, in anv_queue_task()
396 submit->wait_timeline_values, submit->wait_timeline_count, in anv_queue_task()
408 result = anv_queue_execbuf_locked(queue, submit); in anv_queue_task()
418 anv_queue_submit_signal_fences(queue->device, submit); in anv_queue_task()
421 anv_queue_submit_free(queue->device, submit); in anv_queue_task()
440 struct anv_queue_submit *submit = *_submit; in anv_queue_submit_post() local
450 list_addtail(&submit->link, &queue->queued_submits); in anv_queue_submit_post()
455 list_addtail(&submit->link, &queue->queued_submits); in anv_queue_submit_post()
550 struct anv_queue_submit *submit, in anv_queue_submit_add_fence_bo() argument
554 if (submit->fence_bo_count >= submit->fence_bo_array_length) { in anv_queue_submit_add_fence_bo()
555 uint32_t new_len = MAX2(submit->fence_bo_array_length * 2, 64); in anv_queue_submit_add_fence_bo()
557 vk_realloc(submit->alloc, in anv_queue_submit_add_fence_bo()
558 submit->fence_bos, new_len * sizeof(*submit->fence_bos), in anv_queue_submit_add_fence_bo()
559 8, submit->alloc_scope); in anv_queue_submit_add_fence_bo()
563 submit->fence_bos = new_fence_bos; in anv_queue_submit_add_fence_bo()
564 submit->fence_bo_array_length = new_len; in anv_queue_submit_add_fence_bo()
570 submit->fence_bos[submit->fence_bo_count++] = anv_pack_ptr(bo, 1, signal); in anv_queue_submit_add_fence_bo()
577 struct anv_queue_submit* submit, in anv_queue_submit_add_syncobj() argument
584 if (submit->wait_timeline_count >= submit->wait_timeline_array_length) { in anv_queue_submit_add_syncobj()
585 uint32_t new_len = MAX2(submit->wait_timeline_array_length * 2, 64); in anv_queue_submit_add_syncobj()
588 vk_realloc(submit->alloc, in anv_queue_submit_add_syncobj()
589 submit->wait_timeline_syncobjs, in anv_queue_submit_add_syncobj()
590 new_len * sizeof(*submit->wait_timeline_syncobjs), in anv_queue_submit_add_syncobj()
591 8, submit->alloc_scope); in anv_queue_submit_add_syncobj()
595 submit->wait_timeline_syncobjs = new_wait_timeline_syncobjs; in anv_queue_submit_add_syncobj()
598 vk_realloc(submit->alloc, in anv_queue_submit_add_syncobj()
599 … submit->wait_timeline_values, new_len * sizeof(*submit->wait_timeline_values), in anv_queue_submit_add_syncobj()
600 8, submit->alloc_scope); in anv_queue_submit_add_syncobj()
604 submit->wait_timeline_values = new_wait_timeline_values; in anv_queue_submit_add_syncobj()
605 submit->wait_timeline_array_length = new_len; in anv_queue_submit_add_syncobj()
608 submit->wait_timeline_syncobjs[submit->wait_timeline_count] = handle; in anv_queue_submit_add_syncobj()
609 submit->wait_timeline_values[submit->wait_timeline_count] = value; in anv_queue_submit_add_syncobj()
611 submit->wait_timeline_count++; in anv_queue_submit_add_syncobj()
614 if (submit->fence_count >= submit->fence_array_length) { in anv_queue_submit_add_syncobj()
615 uint32_t new_len = MAX2(submit->fence_array_length * 2, 64); in anv_queue_submit_add_syncobj()
617 vk_realloc(submit->alloc, in anv_queue_submit_add_syncobj()
618 submit->fences, new_len * sizeof(*submit->fences), in anv_queue_submit_add_syncobj()
619 8, submit->alloc_scope); in anv_queue_submit_add_syncobj()
623 submit->fences = new_fences; in anv_queue_submit_add_syncobj()
626 vk_realloc(submit->alloc, in anv_queue_submit_add_syncobj()
627 submit->fence_values, new_len * sizeof(*submit->fence_values), in anv_queue_submit_add_syncobj()
628 8, submit->alloc_scope); in anv_queue_submit_add_syncobj()
632 submit->fence_values = new_fence_values; in anv_queue_submit_add_syncobj()
633 submit->fence_array_length = new_len; in anv_queue_submit_add_syncobj()
636 submit->fences[submit->fence_count] = (struct drm_i915_gem_exec_fence) { in anv_queue_submit_add_syncobj()
640 submit->fence_values[submit->fence_count] = value; in anv_queue_submit_add_syncobj()
641 submit->fence_count++; in anv_queue_submit_add_syncobj()
648 struct anv_queue_submit* submit, in anv_queue_submit_add_timeline_wait() argument
652 if (submit->wait_timeline_count >= submit->wait_timeline_array_length) { in anv_queue_submit_add_timeline_wait()
653 uint32_t new_len = MAX2(submit->wait_timeline_array_length * 2, 64); in anv_queue_submit_add_timeline_wait()
655 vk_realloc(submit->alloc, in anv_queue_submit_add_timeline_wait()
656 submit->wait_timelines, new_len * sizeof(*submit->wait_timelines), in anv_queue_submit_add_timeline_wait()
657 8, submit->alloc_scope); in anv_queue_submit_add_timeline_wait()
661 submit->wait_timelines = new_wait_timelines; in anv_queue_submit_add_timeline_wait()
664 vk_realloc(submit->alloc, in anv_queue_submit_add_timeline_wait()
665 submit->wait_timeline_values, new_len * sizeof(*submit->wait_timeline_values), in anv_queue_submit_add_timeline_wait()
666 8, submit->alloc_scope); in anv_queue_submit_add_timeline_wait()
670 submit->wait_timeline_values = new_wait_timeline_values; in anv_queue_submit_add_timeline_wait()
672 submit->wait_timeline_array_length = new_len; in anv_queue_submit_add_timeline_wait()
675 submit->wait_timelines[submit->wait_timeline_count] = timeline; in anv_queue_submit_add_timeline_wait()
676 submit->wait_timeline_values[submit->wait_timeline_count] = value; in anv_queue_submit_add_timeline_wait()
678 submit->wait_timeline_count++; in anv_queue_submit_add_timeline_wait()
685 struct anv_queue_submit* submit, in anv_queue_submit_add_timeline_signal() argument
691 if (submit->signal_timeline_count >= submit->signal_timeline_array_length) { in anv_queue_submit_add_timeline_signal()
692 uint32_t new_len = MAX2(submit->signal_timeline_array_length * 2, 64); in anv_queue_submit_add_timeline_signal()
694 vk_realloc(submit->alloc, in anv_queue_submit_add_timeline_signal()
695 submit->signal_timelines, new_len * sizeof(*submit->signal_timelines), in anv_queue_submit_add_timeline_signal()
696 8, submit->alloc_scope); in anv_queue_submit_add_timeline_signal()
700 submit->signal_timelines = new_signal_timelines; in anv_queue_submit_add_timeline_signal()
703 vk_realloc(submit->alloc, in anv_queue_submit_add_timeline_signal()
704 … submit->signal_timeline_values, new_len * sizeof(*submit->signal_timeline_values), in anv_queue_submit_add_timeline_signal()
705 8, submit->alloc_scope); in anv_queue_submit_add_timeline_signal()
709 submit->signal_timeline_values = new_signal_timeline_values; in anv_queue_submit_add_timeline_signal()
711 submit->signal_timeline_array_length = new_len; in anv_queue_submit_add_timeline_signal()
714 submit->signal_timelines[submit->signal_timeline_count] = timeline; in anv_queue_submit_add_timeline_signal()
715 submit->signal_timeline_values[submit->signal_timeline_count] = value; in anv_queue_submit_add_timeline_signal()
717 submit->signal_timeline_count++; in anv_queue_submit_add_timeline_signal()
728 struct anv_queue_submit *submit = vk_zalloc(alloc, sizeof(*submit), 8, alloc_scope); in anv_queue_submit_alloc() local
729 if (!submit) in anv_queue_submit_alloc()
732 submit->alloc = alloc; in anv_queue_submit_alloc()
733 submit->alloc_scope = alloc_scope; in anv_queue_submit_alloc()
734 submit->in_fence = -1; in anv_queue_submit_alloc()
735 submit->out_fence = -1; in anv_queue_submit_alloc()
736 submit->perf_query_pass = -1; in anv_queue_submit_alloc()
738 return submit; in anv_queue_submit_alloc()
749 struct anv_queue_submit *submit = anv_queue_submit_alloc(device); in anv_queue_submit_simple_batch() local
750 if (!submit) in anv_queue_submit_simple_batch()
765 result = anv_queue_submit_add_syncobj(queue, submit, syncobj, in anv_queue_submit_simple_batch()
776 result = anv_queue_submit_add_fence_bo(queue, submit, sync_bo, in anv_queue_submit_simple_batch()
793 submit->simple_bo = batch_bo; in anv_queue_submit_simple_batch()
794 submit->simple_bo_size = size; in anv_queue_submit_simple_batch()
797 result = anv_queue_submit_post(queue, &submit, true); in anv_queue_submit_simple_batch()
815 if (submit) in anv_queue_submit_simple_batch()
816 anv_queue_submit_free(device, submit); in anv_queue_submit_simple_batch()
826 if (submit) in anv_queue_submit_simple_batch()
827 anv_queue_submit_free(device, submit); in anv_queue_submit_simple_batch()
834 struct anv_queue_submit *submit, in add_temporary_semaphore() argument
851 if (submit->temporary_semaphore_count >= submit->temporary_semaphore_array_length) { in add_temporary_semaphore()
852 uint32_t new_len = MAX2(submit->temporary_semaphore_array_length * 2, 8); in add_temporary_semaphore()
857 vk_realloc(submit->alloc, in add_temporary_semaphore()
858 submit->temporary_semaphores, in add_temporary_semaphore()
859 new_len * sizeof(*submit->temporary_semaphores), in add_temporary_semaphore()
860 8, submit->alloc_scope); in add_temporary_semaphore()
864 submit->temporary_semaphores = new_array; in add_temporary_semaphore()
865 submit->temporary_semaphore_array_length = new_len; in add_temporary_semaphore()
869 submit->temporary_semaphores[submit->temporary_semaphore_count++] = *impl; in add_temporary_semaphore()
870 *out_impl = &submit->temporary_semaphores[submit->temporary_semaphore_count - 1]; in add_temporary_semaphore()
920 struct anv_queue_submit *submit, in maybe_transfer_temporary_semaphore() argument
954 result = add_temporary_semaphore(queue, submit, &template, out_impl); in maybe_transfer_temporary_semaphore()
971 result = add_temporary_semaphore(queue, submit, impl, out_impl); in maybe_transfer_temporary_semaphore()
983 struct anv_queue_submit *submit, in anv_queue_submit_add_in_semaphore() argument
1012 result = maybe_transfer_temporary_semaphore(queue, submit, semaphore, &impl); in anv_queue_submit_add_in_semaphore()
1024 result = anv_queue_submit_add_fence_bo(queue, submit, impl->bo, in anv_queue_submit_add_in_semaphore()
1031 result = anv_queue_submit_add_syncobj(queue, submit, in anv_queue_submit_add_in_semaphore()
1042 result = anv_queue_submit_add_timeline_wait(queue, submit, in anv_queue_submit_add_in_semaphore()
1052 result = anv_queue_submit_add_syncobj(queue, submit, in anv_queue_submit_add_in_semaphore()
1069 struct anv_queue_submit *submit, in anv_queue_submit_add_out_semaphore() argument
1100 result = anv_queue_submit_add_syncobj(queue, submit, impl->syncobj, in anv_queue_submit_add_out_semaphore()
1111 result = anv_queue_submit_add_timeline_signal(queue, submit, in anv_queue_submit_add_out_semaphore()
1121 result = anv_queue_submit_add_syncobj(queue, submit, impl->syncobj, in anv_queue_submit_add_out_semaphore()
1137 struct anv_queue_submit *submit, in anv_queue_submit_add_fence() argument
1160 result = anv_queue_submit_add_fence_bo(queue, submit, impl->bo.bo, in anv_queue_submit_add_fence()
1174 result = anv_queue_submit_add_syncobj(queue, submit, impl->syncobj, in anv_queue_submit_add_fence()
1222 struct anv_queue_submit *submit, in anv_queue_submit_add_cmd_buffer() argument
1226 if (submit->cmd_buffer_count >= submit->cmd_buffer_array_length) { in anv_queue_submit_add_cmd_buffer()
1227 uint32_t new_len = MAX2(submit->cmd_buffer_array_length * 2, 4); in anv_queue_submit_add_cmd_buffer()
1229 vk_realloc(submit->alloc, in anv_queue_submit_add_cmd_buffer()
1230 submit->cmd_buffers, new_len * sizeof(*submit->cmd_buffers), in anv_queue_submit_add_cmd_buffer()
1231 8, submit->alloc_scope); in anv_queue_submit_add_cmd_buffer()
1235 submit->cmd_buffers = new_cmd_buffers; in anv_queue_submit_add_cmd_buffer()
1236 submit->cmd_buffer_array_length = new_len; in anv_queue_submit_add_cmd_buffer()
1239 submit->cmd_buffers[submit->cmd_buffer_count++] = cmd_buffer; in anv_queue_submit_add_cmd_buffer()
1245 submit->perf_query_pool = cmd_buffer->perf_query_pool; in anv_queue_submit_add_cmd_buffer()
1246 submit->perf_query_pass = perf_pass; in anv_queue_submit_add_cmd_buffer()
1252 anv_queue_submit_can_add_cmd_buffer(const struct anv_queue_submit *submit, in anv_queue_submit_can_add_cmd_buffer() argument
1257 if (submit->cmd_buffer_count == 0) in anv_queue_submit_can_add_cmd_buffer()
1261 if (!anv_cmd_buffer_is_chainable(submit->cmd_buffers[submit->cmd_buffer_count - 1])) in anv_queue_submit_can_add_cmd_buffer()
1268 submit->perf_query_pool && in anv_queue_submit_can_add_cmd_buffer()
1269 submit->perf_query_pool != cmd_buffer->perf_query_pool) in anv_queue_submit_can_add_cmd_buffer()
1274 if (submit->perf_query_pass != -1 && in anv_queue_submit_can_add_cmd_buffer()
1275 submit->perf_query_pass != perf_pass) in anv_queue_submit_can_add_cmd_buffer()
1282 anv_queue_submit_can_add_submit(const struct anv_queue_submit *submit, in anv_queue_submit_can_add_submit() argument
1288 if (submit->cmd_buffer_count == 0 && in anv_queue_submit_can_add_submit()
1289 submit->fence_count == 0 && in anv_queue_submit_can_add_submit()
1290 submit->wait_timeline_count == 0 && in anv_queue_submit_can_add_submit()
1291 submit->signal_timeline_count == 0 && in anv_queue_submit_can_add_submit()
1292 submit->fence_bo_count == 0) in anv_queue_submit_can_add_submit()
1296 if (perf_pass != submit->perf_query_pass) in anv_queue_submit_can_add_submit()
1300 if (submit->signal_timeline_count) in anv_queue_submit_can_add_submit()
1314 struct anv_queue_submit **submit) in anv_queue_submit_post_and_alloc_new() argument
1316 VkResult result = anv_queue_submit_post(queue, submit, false); in anv_queue_submit_post_and_alloc_new()
1320 *submit = anv_queue_submit_alloc(queue->device); in anv_queue_submit_post_and_alloc_new()
1321 if (!*submit) in anv_queue_submit_post_and_alloc_new()
1350 struct anv_queue_submit *submit = anv_queue_submit_alloc(device); in anv_QueueSubmit2KHR() local
1351 if (!submit) in anv_QueueSubmit2KHR()
1367 if (!anv_queue_submit_can_add_submit(submit, in anv_QueueSubmit2KHR()
1371 result = anv_queue_submit_post_and_alloc_new(queue, &submit); in anv_QueueSubmit2KHR()
1378 result = anv_queue_submit_add_in_semaphore(queue, submit, in anv_QueueSubmit2KHR()
1396 if (!anv_queue_submit_can_add_cmd_buffer(submit, cmd_buffer, perf_pass)) { in anv_QueueSubmit2KHR()
1397 result = anv_queue_submit_post_and_alloc_new(queue, &submit); in anv_QueueSubmit2KHR()
1402 result = anv_queue_submit_add_cmd_buffer(queue, submit, in anv_QueueSubmit2KHR()
1410 result = anv_queue_submit_add_out_semaphore(queue, submit, in anv_QueueSubmit2KHR()
1419 result = anv_queue_submit_add_fence_bo(queue, submit, wsi_signal_bo, in anv_QueueSubmit2KHR()
1427 result = anv_queue_submit_add_fence(queue, submit, fence); in anv_QueueSubmit2KHR()
1432 result = anv_queue_submit_post(queue, &submit, false); in anv_QueueSubmit2KHR()
1440 if (submit) in anv_QueueSubmit2KHR()
1441 anv_queue_submit_free(device, submit); in anv_QueueSubmit2KHR()