Lines Matching refs:submit
64 * at submit time.
786 tu_queue_submit_add_timeline_wait_locked(struct tu_queue_submit* submit,
791 if (submit->wait_timeline_count >= submit->wait_timeline_array_length) {
792 uint32_t new_len = MAX2(submit->wait_timeline_array_length * 2, 64);
794 submit->wait_timelines = vk_realloc(&device->vk.alloc,
795 submit->wait_timelines,
796 new_len * sizeof(*submit->wait_timelines),
799 if (submit->wait_timelines == NULL)
802 submit->wait_timeline_values = vk_realloc(&device->vk.alloc,
803 submit->wait_timeline_values,
804 new_len * sizeof(*submit->wait_timeline_values),
807 if (submit->wait_timeline_values == NULL) {
808 vk_free(&device->vk.alloc, submit->wait_timelines);
812 submit->wait_timeline_array_length = new_len;
815 submit->wait_timelines[submit->wait_timeline_count] = timeline;
816 submit->wait_timeline_values[submit->wait_timeline_count] = value;
818 submit->wait_timeline_count++;
824 tu_queue_submit_add_timeline_signal_locked(struct tu_queue_submit* submit,
829 if (submit->signal_timeline_count >= submit->signal_timeline_array_length) {
830 uint32_t new_len = MAX2(submit->signal_timeline_array_length * 2, 32);
832 submit->signal_timelines = vk_realloc(&device->vk.alloc,
833 submit->signal_timelines,
834 new_len * sizeof(*submit->signal_timelines),
837 if (submit->signal_timelines == NULL)
840 submit->signal_timeline_values = vk_realloc(&device->vk.alloc,
841 submit->signal_timeline_values,
842 new_len * sizeof(*submit->signal_timeline_values),
845 if (submit->signal_timeline_values == NULL) {
846 vk_free(&device->vk.alloc, submit->signal_timelines);
850 submit->signal_timeline_array_length = new_len;
853 submit->signal_timelines[submit->signal_timeline_count] = timeline;
854 submit->signal_timeline_values[submit->signal_timeline_count] = value;
856 submit->signal_timeline_count++;
868 struct tu_queue_submit **submit)
991 * a new timestamp buffer on every submit of reusable command buffer.
1034 *submit = new_submit;
1061 tu_queue_submit_free(struct tu_queue *queue, struct tu_queue_submit *submit)
1063 vk_free(&queue->device->vk.alloc, submit->wait_semaphores);
1064 vk_free(&queue->device->vk.alloc, submit->signal_semaphores);
1066 vk_free(&queue->device->vk.alloc, submit->wait_timelines);
1067 vk_free(&queue->device->vk.alloc, submit->wait_timeline_values);
1068 vk_free(&queue->device->vk.alloc, submit->signal_timelines);
1069 vk_free(&queue->device->vk.alloc, submit->signal_timeline_values);
1071 vk_free(&queue->device->vk.alloc, submit->cmds);
1072 vk_free(&queue->device->vk.alloc, submit->in_syncobjs);
1073 vk_free(&queue->device->vk.alloc, submit->out_syncobjs);
1074 vk_free(&queue->device->vk.alloc, submit->cmd_buffers);
1075 vk_free(&queue->device->vk.alloc, submit);
1080 struct tu_queue_submit *submit)
1082 struct drm_msm_gem_submit_cmd *cmds = submit->cmds;
1085 for (uint32_t j = 0; j < submit->cmd_buffer_count; ++j) {
1086 TU_FROM_HANDLE(tu_cmd_buffer, cmdbuf, submit->cmd_buffers[j]);
1090 if (submit->counter_pass_index != ~0) {
1092 &dev->perfcntrs_pass_cs_entries[submit->counter_pass_index];
1115 if (submit->cmd_buffer_trace_data) {
1116 struct tu_cs *ts_cs = submit->cmd_buffer_trace_data[j].timestamp_copy_cs;
1135 tu_queue_submit_locked(struct tu_queue *queue, struct tu_queue_submit *submit)
1145 if (submit->nr_in_syncobjs)
1148 if (submit->nr_out_syncobjs)
1151 if (submit->last_submit)
1157 * time when bo_mutex is not locked. So we build submit cmds here the real
1158 * place to submit.
1160 tu_queue_build_msm_gem_submit_cmds(queue, submit);
1167 .cmds = (uint64_t)(uintptr_t)submit->cmds,
1168 .nr_cmds = submit->entry_count,
1169 .in_syncobjs = (uint64_t)(uintptr_t)submit->in_syncobjs,
1170 .out_syncobjs = (uint64_t)(uintptr_t)submit->out_syncobjs,
1171 .nr_in_syncobjs = submit->nr_in_syncobjs - submit->wait_timeline_count,
1172 .nr_out_syncobjs = submit->nr_out_syncobjs,
1183 return tu_device_set_lost(queue->device, "submit failed: %s\n",
1187 for (uint32_t i = 0; i < submit->wait_semaphore_count; i++) {
1188 TU_FROM_HANDLE(tu_syncobj, sem, submit->wait_semaphores[i]);
1193 if (submit->last_submit) {
1200 for (uint32_t i = 0; i < submit->signal_timeline_count; i++) {
1201 struct tu_syncobj *sem = submit->signal_timelines[i];
1202 uint64_t signal_value = submit->signal_timeline_values[i];
1209 if (submit->cmd_buffer_trace_data) {
1220 flush_data->cmd_trace_data = submit->cmd_buffer_trace_data;
1221 flush_data->trace_count = submit->cmd_buffer_count;
1222 submit->cmd_buffer_trace_data = NULL;
1224 for (uint32_t i = 0; i < submit->cmd_buffer_count; i++) {
1225 bool free_data = i == (submit->cmd_buffer_count - 1);
1237 tu_queue_submit_ready_locked(struct tu_queue_submit *submit)
1239 for (uint32_t i = 0; i < submit->wait_timeline_count; i++) {
1240 if (submit->wait_timeline_values[i] >
1241 submit->wait_timelines[i]->timeline.highest_submitted) {
1287 struct tu_queue_submit *submit)
1291 submit->nr_out_syncobjs - submit->signal_timeline_count;
1293 for (uint32_t i = 0; i < submit->signal_timeline_count; i++) {
1294 struct tu_timeline *timeline = &submit->signal_timelines[i]->timeline;
1295 uint64_t signal_value = submit->signal_timeline_values[i];
1303 submit->out_syncobjs[timeline_idx + i] =
1310 return tu_queue_submit_locked(queue, submit);
1318 list_for_each_entry_safe(struct tu_queue_submit, submit,
1320 if (!tu_queue_submit_ready_locked(submit))
1325 result = tu_queue_submit_timeline_locked(queue, submit);
1327 list_del(&submit->link);
1328 tu_queue_submit_free(queue, submit);
1397 const VkSubmitInfo *submit = pSubmits + i;
1399 uint32_t out_syncobjs_size = submit->signalSemaphoreCount;
1411 VkResult ret = tu_queue_submit_create_locked(queue, submit,
1412 submit->waitSemaphoreCount, out_syncobjs_size,
1425 for (uint32_t i = 0; i < submit->waitSemaphoreCount; i++) {
1426 TU_FROM_HANDLE(tu_syncobj, sem, submit->pWaitSemaphores[i]);
1436 for (uint32_t i = 0; i < submit->signalSemaphoreCount; i++) {
1437 TU_FROM_HANDLE(tu_syncobj, sem, submit->pSignalSemaphores[i]);
1440 * and adding it at real submit time.
1458 /* Queue the current submit */
1468 /* signal fence imemediately since we don't have a submit to do it */