• Home
  • Raw
  • Download

Lines Matching refs:job

34                struct v3dv_job *job,  in v3dv_clif_dump()  argument
44 set_foreach(job->bos, entry) { in v3dv_clif_dump()
81 struct v3dv_job *job,
154 handle_reset_query_cpu_job(struct v3dv_job *job) in handle_reset_query_cpu_job() argument
163 struct v3dv_reset_query_cpu_job_info *info = &job->cpu.query_reset; in handle_reset_query_cpu_job()
167 VkResult result = gpu_queue_wait_idle(&job->device->queue); in handle_reset_query_cpu_job()
194 handle_end_query_cpu_job(struct v3dv_job *job) in handle_end_query_cpu_job() argument
196 struct v3dv_end_query_cpu_job_info *info = &job->cpu.query_end; in handle_end_query_cpu_job()
205 handle_copy_query_results_cpu_job(struct v3dv_job *job) in handle_copy_query_results_cpu_job() argument
208 &job->cpu.query_copy_results; in handle_copy_query_results_cpu_job()
215 if (!bo->map && !v3dv_bo_map(job->device, bo, bo->size)) in handle_copy_query_results_cpu_job()
216 return vk_error(job->device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); in handle_copy_query_results_cpu_job()
222 v3dv_get_query_pool_results_cpu(job->device, in handle_copy_query_results_cpu_job()
234 handle_set_event_cpu_job(struct v3dv_job *job, bool is_wait_thread) in handle_set_event_cpu_job() argument
257 cpu_queue_wait_idle(&job->device->queue); in handle_set_event_cpu_job()
259 VkResult result = gpu_queue_wait_idle(&job->device->queue); in handle_set_event_cpu_job()
263 struct v3dv_event_set_cpu_job_info *info = &job->cpu.event_set; in handle_set_event_cpu_job()
270 check_wait_events_complete(struct v3dv_job *job) in check_wait_events_complete() argument
272 assert(job->type == V3DV_JOB_TYPE_CPU_WAIT_EVENTS); in check_wait_events_complete()
274 struct v3dv_event_wait_cpu_job_info *info = &job->cpu.event_wait; in check_wait_events_complete()
305 struct v3dv_job *job = (struct v3dv_job *) _job; in event_wait_thread_func() local
306 assert(job->type == V3DV_JOB_TYPE_CPU_WAIT_EVENTS); in event_wait_thread_func()
307 struct v3dv_event_wait_cpu_job_info *info = &job->cpu.event_wait; in event_wait_thread_func()
311 while (!check_wait_events_complete(job)) in event_wait_thread_func()
317 struct v3dv_queue *queue = &job->device->queue; in event_wait_thread_func()
318 list_for_each_entry_from(struct v3dv_job, pjob, job->list_link.next, in event_wait_thread_func()
319 &job->cmd_buffer->jobs, list_link) { in event_wait_thread_func()
343 spawn_event_wait_thread(struct v3dv_job *job, pthread_t *wait_thread) in spawn_event_wait_thread() argument
346 assert(job->type == V3DV_JOB_TYPE_CPU_WAIT_EVENTS); in spawn_event_wait_thread()
347 assert(job->cmd_buffer); in spawn_event_wait_thread()
350 if (pthread_create(wait_thread, NULL, event_wait_thread_func, job)) in spawn_event_wait_thread()
351 return vk_error(job->device->instance, VK_ERROR_DEVICE_LOST); in spawn_event_wait_thread()
357 handle_wait_events_cpu_job(struct v3dv_job *job, in handle_wait_events_cpu_job() argument
361 assert(job->type == V3DV_JOB_TYPE_CPU_WAIT_EVENTS); in handle_wait_events_cpu_job()
362 struct v3dv_event_wait_cpu_job_info *info = &job->cpu.event_wait; in handle_wait_events_cpu_job()
367 if (check_wait_events_complete(job)) in handle_wait_events_cpu_job()
383 return spawn_event_wait_thread(job, wait_thread); in handle_wait_events_cpu_job()
389 handle_copy_buffer_to_image_cpu_job(struct v3dv_job *job) in handle_copy_buffer_to_image_cpu_job() argument
391 assert(job->type == V3DV_JOB_TYPE_CPU_COPY_BUFFER_TO_IMAGE); in handle_copy_buffer_to_image_cpu_job()
393 &job->cpu.copy_buffer_to_image; in handle_copy_buffer_to_image_cpu_job()
398 v3dv_QueueWaitIdle(v3dv_queue_to_handle(&job->device->queue)); in handle_copy_buffer_to_image_cpu_job()
403 if (!dst_bo->map && !v3dv_bo_map(job->device, dst_bo, dst_bo->size)) in handle_copy_buffer_to_image_cpu_job()
404 return vk_error(job->device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); in handle_copy_buffer_to_image_cpu_job()
409 if (!src_bo->map && !v3dv_bo_map(job->device, src_bo, src_bo->size)) in handle_copy_buffer_to_image_cpu_job()
410 return vk_error(job->device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); in handle_copy_buffer_to_image_cpu_job()
438 handle_timestamp_query_cpu_job(struct v3dv_job *job) in handle_timestamp_query_cpu_job() argument
440 assert(job->type == V3DV_JOB_TYPE_CPU_TIMESTAMP_QUERY); in handle_timestamp_query_cpu_job()
441 struct v3dv_timestamp_query_cpu_job_info *info = &job->cpu.query_timestamp; in handle_timestamp_query_cpu_job()
444 v3dv_QueueWaitIdle(v3dv_queue_to_handle(&job->device->queue)); in handle_timestamp_query_cpu_job()
459 struct v3dv_job *job,
464 struct v3dv_job *job, in handle_csd_indirect_cpu_job() argument
467 assert(job->type == V3DV_JOB_TYPE_CPU_CSD_INDIRECT); in handle_csd_indirect_cpu_job()
468 struct v3dv_csd_indirect_cpu_job_info *info = &job->cpu.csd_indirect; in handle_csd_indirect_cpu_job()
479 if (!bo->map && !v3dv_bo_map(job->device, bo, bo->size)) in handle_csd_indirect_cpu_job()
480 return vk_error(job->device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); in handle_csd_indirect_cpu_job()
559 struct v3dv_job *job, in handle_cl_job() argument
569 assert(job->serialize || !job->needs_bcl_sync); in handle_cl_job()
574 assert(list_length(&job->rcl.bo_list) == 1); in handle_cl_job()
575 assert(list_length(&job->bcl.bo_list) >= 1); in handle_cl_job()
577 list_first_entry(&job->bcl.bo_list, struct v3dv_bo, list_link); in handle_cl_job()
579 submit.bcl_end = job->bcl.bo->offset + v3dv_cl_offset(&job->bcl); in handle_cl_job()
580 submit.rcl_start = job->rcl.bo->offset; in handle_cl_job()
581 submit.rcl_end = job->rcl.bo->offset + v3dv_cl_offset(&job->rcl); in handle_cl_job()
583 submit.qma = job->tile_alloc->offset; in handle_cl_job()
584 submit.qms = job->tile_alloc->size; in handle_cl_job()
585 submit.qts = job->tile_state->offset; in handle_cl_job()
591 if (job->tmu_dirty_rcl) in handle_cl_job()
594 submit.bo_handle_count = job->bo_count; in handle_cl_job()
598 set_foreach(job->bos, entry) { in handle_cl_job()
622 const bool needs_bcl_sync = do_sem_wait || job->needs_bcl_sync; in handle_cl_job()
623 const bool needs_rcl_sync = job->serialize && !needs_bcl_sync; in handle_cl_job()
629 v3dv_clif_dump(device, job, &submit); in handle_cl_job()
650 struct v3dv_job *job, in handle_tfu_job() argument
655 const bool needs_sync = do_sem_wait || job->serialize; in handle_tfu_job()
658 job->tfu.in_sync = needs_sync ? device->last_job_sync : 0; in handle_tfu_job()
659 job->tfu.out_sync = device->last_job_sync; in handle_tfu_job()
660 int ret = v3dv_ioctl(device->render_fd, DRM_IOCTL_V3D_SUBMIT_TFU, &job->tfu); in handle_tfu_job()
673 struct v3dv_job *job, in handle_csd_job() argument
678 struct drm_v3d_submit_csd *submit = &job->csd.submit; in handle_csd_job()
680 submit->bo_handle_count = job->bo_count; in handle_csd_job()
684 set_foreach(job->bos, entry) { in handle_csd_job()
691 const bool needs_sync = do_sem_wait || job->serialize; in handle_csd_job()
716 struct v3dv_job *job, in queue_submit_job() argument
720 assert(job); in queue_submit_job()
722 switch (job->type) { in queue_submit_job()
724 return handle_cl_job(queue, job, do_sem_wait); in queue_submit_job()
726 return handle_tfu_job(queue, job, do_sem_wait); in queue_submit_job()
728 return handle_csd_job(queue, job, do_sem_wait); in queue_submit_job()
730 return handle_reset_query_cpu_job(job); in queue_submit_job()
732 return handle_end_query_cpu_job(job); in queue_submit_job()
734 return handle_copy_query_results_cpu_job(job); in queue_submit_job()
736 return handle_set_event_cpu_job(job, wait_thread != NULL); in queue_submit_job()
738 return handle_wait_events_cpu_job(job, do_sem_wait, wait_thread); in queue_submit_job()
740 return handle_copy_buffer_to_image_cpu_job(job); in queue_submit_job()
742 return handle_csd_indirect_cpu_job(queue, job, do_sem_wait); in queue_submit_job()
744 return handle_timestamp_query_cpu_job(job); in queue_submit_job()
751 emit_noop_bin(struct v3dv_job *job) in emit_noop_bin() argument
753 v3dv_job_start_frame(job, 1, 1, 1, 1, V3D_INTERNAL_BPP_32, false); in emit_noop_bin()
754 v3dv_job_emit_binning_flush(job); in emit_noop_bin()
758 emit_noop_render(struct v3dv_job *job) in emit_noop_render() argument
760 struct v3dv_cl *rcl = &job->rcl; in emit_noop_render()
791 list.address = v3dv_cl_address(job->tile_alloc, 0); in emit_noop_render()
804 struct v3dv_cl *icl = &job->indirect; in emit_noop_render()
879 list_for_each_entry_safe(struct v3dv_job, job, in queue_submit_cmd_buffer()
881 VkResult result = queue_submit_job(queue, job, in queue_submit_cmd_buffer()