Lines Matching refs:job
29 v3dv_job_add_bo(struct v3dv_job *job, struct v3dv_bo *bo) in v3dv_job_add_bo() argument
34 if (job->bo_handle_mask & bo->handle_bit) { in v3dv_job_add_bo()
35 if (_mesa_set_search(job->bos, bo)) in v3dv_job_add_bo()
39 _mesa_set_add(job->bos, bo); in v3dv_job_add_bo()
40 job->bo_count++; in v3dv_job_add_bo()
41 job->bo_handle_mask |= bo->handle_bit; in v3dv_job_add_bo()
45 v3dv_job_add_bo_unchecked(struct v3dv_job *job, struct v3dv_bo *bo) in v3dv_job_add_bo_unchecked() argument
48 _mesa_set_add(job->bos, bo); in v3dv_job_add_bo_unchecked()
49 job->bo_count++; in v3dv_job_add_bo_unchecked()
50 job->bo_handle_mask |= bo->handle_bit; in v3dv_job_add_bo_unchecked()
109 job_destroy_gpu_cl_resources(struct v3dv_job *job) in job_destroy_gpu_cl_resources() argument
111 assert(job->type == V3DV_JOB_TYPE_GPU_CL || in job_destroy_gpu_cl_resources()
112 job->type == V3DV_JOB_TYPE_GPU_CL_SECONDARY); in job_destroy_gpu_cl_resources()
114 v3dv_cl_destroy(&job->bcl); in job_destroy_gpu_cl_resources()
115 v3dv_cl_destroy(&job->rcl); in job_destroy_gpu_cl_resources()
116 v3dv_cl_destroy(&job->indirect); in job_destroy_gpu_cl_resources()
122 _mesa_set_destroy(job->bos, NULL); in job_destroy_gpu_cl_resources()
124 v3dv_bo_free(job->device, job->tile_alloc); in job_destroy_gpu_cl_resources()
125 v3dv_bo_free(job->device, job->tile_state); in job_destroy_gpu_cl_resources()
129 job_destroy_cloned_gpu_cl_resources(struct v3dv_job *job) in job_destroy_cloned_gpu_cl_resources() argument
131 assert(job->type == V3DV_JOB_TYPE_GPU_CL); in job_destroy_cloned_gpu_cl_resources()
133 list_for_each_entry_safe(struct v3dv_bo, bo, &job->bcl.bo_list, list_link) { in job_destroy_cloned_gpu_cl_resources()
135 vk_free(&job->device->vk.alloc, bo); in job_destroy_cloned_gpu_cl_resources()
138 list_for_each_entry_safe(struct v3dv_bo, bo, &job->rcl.bo_list, list_link) { in job_destroy_cloned_gpu_cl_resources()
140 vk_free(&job->device->vk.alloc, bo); in job_destroy_cloned_gpu_cl_resources()
143 list_for_each_entry_safe(struct v3dv_bo, bo, &job->indirect.bo_list, list_link) { in job_destroy_cloned_gpu_cl_resources()
145 vk_free(&job->device->vk.alloc, bo); in job_destroy_cloned_gpu_cl_resources()
150 job_destroy_gpu_csd_resources(struct v3dv_job *job) in job_destroy_gpu_csd_resources() argument
152 assert(job->type == V3DV_JOB_TYPE_GPU_CSD); in job_destroy_gpu_csd_resources()
153 assert(job->cmd_buffer); in job_destroy_gpu_csd_resources()
155 v3dv_cl_destroy(&job->indirect); in job_destroy_gpu_csd_resources()
157 _mesa_set_destroy(job->bos, NULL); in job_destroy_gpu_csd_resources()
159 if (job->csd.shared_memory) in job_destroy_gpu_csd_resources()
160 v3dv_bo_free(job->device, job->csd.shared_memory); in job_destroy_gpu_csd_resources()
164 job_destroy_cpu_wait_events_resources(struct v3dv_job *job) in job_destroy_cpu_wait_events_resources() argument
166 assert(job->type == V3DV_JOB_TYPE_CPU_WAIT_EVENTS); in job_destroy_cpu_wait_events_resources()
167 assert(job->cmd_buffer); in job_destroy_cpu_wait_events_resources()
168 vk_free(&job->cmd_buffer->device->vk.alloc, job->cpu.event_wait.events); in job_destroy_cpu_wait_events_resources()
172 v3dv_job_destroy(struct v3dv_job *job) in v3dv_job_destroy() argument
174 assert(job); in v3dv_job_destroy()
176 list_del(&job->list_link); in v3dv_job_destroy()
182 if (!job->is_clone) { in v3dv_job_destroy()
183 switch (job->type) { in v3dv_job_destroy()
186 job_destroy_gpu_cl_resources(job); in v3dv_job_destroy()
189 job_destroy_gpu_csd_resources(job); in v3dv_job_destroy()
192 job_destroy_cpu_wait_events_resources(job); in v3dv_job_destroy()
199 if (job->type == V3DV_JOB_TYPE_GPU_CL) in v3dv_job_destroy()
200 job_destroy_cloned_gpu_cl_resources(job); in v3dv_job_destroy()
203 vk_free(&job->device->vk.alloc, job); in v3dv_job_destroy()
240 list_for_each_entry_safe(struct v3dv_job, job, in cmd_buffer_free_resources()
242 v3dv_job_destroy(job); in cmd_buffer_free_resources()
245 if (cmd_buffer->state.job) in cmd_buffer_free_resources()
246 v3dv_job_destroy(cmd_buffer->state.job); in cmd_buffer_free_resources()
292 if (!cmd_buffer->state.job) in cmd_buffer_can_merge_subpass()
295 if (cmd_buffer->state.job->always_flush) in cmd_buffer_can_merge_subpass()
354 job_compute_frame_tiling(struct v3dv_job *job, in job_compute_frame_tiling() argument
362 assert(job); in job_compute_frame_tiling()
363 struct v3dv_frame_tiling *tiling = &job->frame_tiling; in job_compute_frame_tiling()
416 v3dv_job_start_frame(struct v3dv_job *job, in v3dv_job_start_frame() argument
425 assert(job); in v3dv_job_start_frame()
429 job_compute_frame_tiling(job, in v3dv_job_start_frame()
433 v3dv_cl_ensure_space_with_branch(&job->bcl, 256); in v3dv_job_start_frame()
434 v3dv_return_if_oom(NULL, job); in v3dv_job_start_frame()
468 job->tile_alloc = v3dv_bo_alloc(job->device, tile_alloc_size, in v3dv_job_start_frame()
470 if (!job->tile_alloc) { in v3dv_job_start_frame()
471 v3dv_flag_oom(NULL, job); in v3dv_job_start_frame()
475 v3dv_job_add_bo_unchecked(job, job->tile_alloc); in v3dv_job_start_frame()
482 job->tile_state = v3dv_bo_alloc(job->device, tile_state_size, "TSDA", true); in v3dv_job_start_frame()
483 if (!job->tile_state) { in v3dv_job_start_frame()
484 v3dv_flag_oom(NULL, job); in v3dv_job_start_frame()
488 v3dv_job_add_bo_unchecked(job, job->tile_state); in v3dv_job_start_frame()
490 v3dv_X(job->device, job_emit_binning_prolog)(job, tiling, layers); in v3dv_job_start_frame() local
492 job->ez_state = V3D_EZ_UNDECIDED; in v3dv_job_start_frame()
493 job->first_ez_state = V3D_EZ_UNDECIDED; in v3dv_job_start_frame()
499 assert(cmd_buffer->state.job); in cmd_buffer_end_render_pass_frame()
509 if (v3dv_cl_offset(&cmd_buffer->state.job->rcl) == 0) in cmd_buffer_end_render_pass_frame()
512 v3dv_X(cmd_buffer->device, job_emit_binning_flush)(cmd_buffer->state.job); in cmd_buffer_end_render_pass_frame()
521 struct v3dv_job *job = vk_zalloc(&device->vk.alloc, in v3dv_cmd_buffer_create_cpu_job() local
524 if (!job) { in v3dv_cmd_buffer_create_cpu_job()
529 v3dv_job_init(job, type, device, cmd_buffer, subpass_idx); in v3dv_cmd_buffer_create_cpu_job()
530 return job; in v3dv_cmd_buffer_create_cpu_job()
542 struct v3dv_job *job = in cmd_buffer_add_cpu_jobs_for_pending_state() local
548 job->cpu.query_end = state->query.end.states[i]; in cmd_buffer_add_cpu_jobs_for_pending_state()
549 list_addtail(&job->list_link, &cmd_buffer->jobs); in cmd_buffer_add_cpu_jobs_for_pending_state()
557 struct v3dv_job *job = cmd_buffer->state.job; in v3dv_cmd_buffer_finish_job() local
558 if (!job) in v3dv_cmd_buffer_finish_job()
573 v3dv_job_destroy(job); in v3dv_cmd_buffer_finish_job()
574 cmd_buffer->state.job = NULL; in v3dv_cmd_buffer_finish_job()
585 v3dv_cl_offset(&job->bcl) > 0); in v3dv_cmd_buffer_finish_job()
592 assert(v3dv_cl_offset(&job->rcl) != 0 || cmd_buffer->state.pass); in v3dv_cmd_buffer_finish_job()
606 if (job->type == V3DV_JOB_TYPE_GPU_CL) { in v3dv_cmd_buffer_finish_job()
609 assert(job->type == V3DV_JOB_TYPE_GPU_CL_SECONDARY); in v3dv_cmd_buffer_finish_job()
614 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_cmd_buffer_finish_job()
615 cmd_buffer->state.job = NULL; in v3dv_cmd_buffer_finish_job()
630 v3dv_job_type_is_gpu(struct v3dv_job *job) in v3dv_job_type_is_gpu() argument
632 switch (job->type) { in v3dv_job_type_is_gpu()
645 struct v3dv_job *job) in cmd_buffer_serialize_job_if_needed() argument
647 assert(cmd_buffer && job); in cmd_buffer_serialize_job_if_needed()
652 if (!v3dv_job_type_is_gpu(job)) in cmd_buffer_serialize_job_if_needed()
661 if (job->type == V3DV_JOB_TYPE_GPU_CSD) { in cmd_buffer_serialize_job_if_needed()
662 assert(!job->is_transfer); in cmd_buffer_serialize_job_if_needed()
665 } else if (job->is_transfer) { in cmd_buffer_serialize_job_if_needed()
666 assert(job->type == V3DV_JOB_TYPE_GPU_CL || in cmd_buffer_serialize_job_if_needed()
667 job->type == V3DV_JOB_TYPE_GPU_CL_SECONDARY || in cmd_buffer_serialize_job_if_needed()
668 job->type == V3DV_JOB_TYPE_GPU_TFU); in cmd_buffer_serialize_job_if_needed()
672 assert(job->type == V3DV_JOB_TYPE_GPU_CL || in cmd_buffer_serialize_job_if_needed()
673 job->type == V3DV_JOB_TYPE_GPU_CL_SECONDARY); in cmd_buffer_serialize_job_if_needed()
679 job->serialize = *src_mask; in cmd_buffer_serialize_job_if_needed()
686 v3dv_job_init(struct v3dv_job *job, in v3dv_job_init() argument
692 assert(job); in v3dv_job_init()
695 assert(!cmd_buffer || cmd_buffer->state.job != job); in v3dv_job_init()
697 job->type = type; in v3dv_job_init()
699 job->device = device; in v3dv_job_init()
700 job->cmd_buffer = cmd_buffer; in v3dv_job_init()
702 list_inithead(&job->list_link); in v3dv_job_init()
707 job->bos = in v3dv_job_init()
709 job->bo_count = 0; in v3dv_job_init()
711 v3dv_cl_init(job, &job->indirect); in v3dv_job_init()
714 job->always_flush = true; in v3dv_job_init()
719 v3dv_cl_init(job, &job->bcl); in v3dv_job_init()
720 v3dv_cl_init(job, &job->rcl); in v3dv_job_init()
744 job->first_subpass = subpass_idx; in v3dv_job_init()
746 job->is_transfer = cmd_buffer->state.is_transfer; in v3dv_job_init()
748 cmd_buffer_serialize_job_if_needed(cmd_buffer, job); in v3dv_job_init()
750 job->perf = cmd_buffer->state.query.active_query.perf; in v3dv_job_init()
765 cmd_buffer->state.job->is_subpass_finish = false; in v3dv_cmd_buffer_start_job()
766 return cmd_buffer->state.job; in v3dv_cmd_buffer_start_job()
770 if (cmd_buffer->state.job != NULL) in v3dv_cmd_buffer_start_job()
773 assert(cmd_buffer->state.job == NULL); in v3dv_cmd_buffer_start_job()
774 struct v3dv_job *job = vk_zalloc(&cmd_buffer->device->vk.alloc, in v3dv_cmd_buffer_start_job() local
778 if (!job) { in v3dv_cmd_buffer_start_job()
784 v3dv_job_init(job, type, cmd_buffer->device, cmd_buffer, subpass_idx); in v3dv_cmd_buffer_start_job()
785 cmd_buffer->state.job = job; in v3dv_cmd_buffer_start_job()
787 return job; in v3dv_cmd_buffer_start_job()
862 if (cmd_buffer->state.job) in cmd_buffer_subpass_handle_pending_resolves()
958 struct v3dv_job *job = in cmd_buffer_begin_render_pass_secondary() local
961 if (!job) { in cmd_buffer_begin_render_pass_secondary()
1417 struct v3dv_job *job = in cmd_buffer_subpass_create_job() local
1419 if (!job) in cmd_buffer_subpass_create_job()
1430 job->first_subpass == state->subpass_idx) { in cmd_buffer_subpass_create_job()
1438 v3dv_X(job->device, framebuffer_compute_internal_bpp_msaa) in cmd_buffer_subpass_create_job()
1457 v3dv_job_start_frame(job, in cmd_buffer_subpass_create_job()
1467 return job; in cmd_buffer_subpass_create_job()
1477 struct v3dv_job *job = in v3dv_cmd_buffer_subpass_start() local
1480 if (!job) in v3dv_cmd_buffer_subpass_start()
1505 return job; in v3dv_cmd_buffer_subpass_start()
1515 struct v3dv_job *job; in v3dv_cmd_buffer_subpass_resume() local
1517 job = cmd_buffer_subpass_create_job(cmd_buffer, subpass_idx, in v3dv_cmd_buffer_subpass_resume()
1521 job = cmd_buffer_subpass_create_job(cmd_buffer, subpass_idx, in v3dv_cmd_buffer_subpass_resume()
1525 if (!job) in v3dv_cmd_buffer_subpass_resume()
1528 job->is_subpass_continue = true; in v3dv_cmd_buffer_subpass_resume()
1530 return job; in v3dv_cmd_buffer_subpass_resume()
1541 struct v3dv_job *job = cmd_buffer->state.job; in v3dv_cmd_buffer_subpass_finish() local
1542 if (job) in v3dv_cmd_buffer_subpass_finish()
1543 job->is_subpass_finish = true; in v3dv_cmd_buffer_subpass_finish()
1581 if (cmd_buffer->state.job) { in v3dv_EndCommandBuffer()
1621 v3dv_job_clone_in_cmd_buffer(struct v3dv_job *job, in v3dv_job_clone_in_cmd_buffer() argument
1624 struct v3dv_job *clone_job = vk_alloc(&job->device->vk.alloc, in v3dv_job_clone_in_cmd_buffer()
1633 *clone_job = *job; in v3dv_job_clone_in_cmd_buffer()
1641 if (job->type == V3DV_JOB_TYPE_GPU_CL) { in v3dv_job_clone_in_cmd_buffer()
1642 clone_bo_list(cmd_buffer, &clone_job->bcl.bo_list, &job->bcl.bo_list); in v3dv_job_clone_in_cmd_buffer()
1643 clone_bo_list(cmd_buffer, &clone_job->rcl.bo_list, &job->rcl.bo_list); in v3dv_job_clone_in_cmd_buffer()
1645 &job->indirect.bo_list); in v3dv_job_clone_in_cmd_buffer()
1694 struct v3dv_job *job = v3dv_job_clone_in_cmd_buffer(secondary_job, primary); in cmd_buffer_execute_outside_pass() local
1695 if (!job) in cmd_buffer_execute_outside_pass()
1702 job->serialize = pending_barrier.src_mask_graphics | in cmd_buffer_execute_outside_pass()
1707 job->needs_bcl_sync = true; in cmd_buffer_execute_outside_pass()
2063 (cmd_buffer->state.job, &cmd_buffer->state.clip_window); in emit_scissor()
2323 struct v3dv_job *job = cmd_buffer->state.job; in cmd_buffer_pre_draw_split_job() local
2324 assert(job); in cmd_buffer_pre_draw_split_job()
2329 if (job->always_flush && job->draw_count > 0) { in cmd_buffer_pre_draw_split_job()
2334 job->is_subpass_finish = false; in cmd_buffer_pre_draw_split_job()
2339 job = v3dv_cmd_buffer_subpass_resume(cmd_buffer, in cmd_buffer_pre_draw_split_job()
2341 assert(job->draw_count == 0); in cmd_buffer_pre_draw_split_job()
2344 job->always_flush = true; in cmd_buffer_pre_draw_split_job()
2347 assert(job->draw_count == 0 || !job->always_flush); in cmd_buffer_pre_draw_split_job()
2348 return job; in cmd_buffer_pre_draw_split_job()
2375 assert(cmd_buffer->state.job); in cmd_buffer_restart_job_for_msaa_if_needed()
2381 if (cmd_buffer->state.job->draw_count > 0) in cmd_buffer_restart_job_for_msaa_if_needed()
2388 cmd_buffer->state.job->frame_tiling.msaa) { in cmd_buffer_restart_job_for_msaa_if_needed()
2403 struct v3dv_job *old_job = cmd_buffer->state.job; in cmd_buffer_restart_job_for_msaa_if_needed()
2404 cmd_buffer->state.job = NULL; in cmd_buffer_restart_job_for_msaa_if_needed()
2406 struct v3dv_job *job = vk_zalloc(&cmd_buffer->device->vk.alloc, in cmd_buffer_restart_job_for_msaa_if_needed() local
2409 if (!job) { in cmd_buffer_restart_job_for_msaa_if_needed()
2414 v3dv_job_init(job, V3DV_JOB_TYPE_GPU_CL, cmd_buffer->device, cmd_buffer, in cmd_buffer_restart_job_for_msaa_if_needed()
2416 cmd_buffer->state.job = job; in cmd_buffer_restart_job_for_msaa_if_needed()
2418 v3dv_job_start_frame(job, in cmd_buffer_restart_job_for_msaa_if_needed()
2509 consume_bcl_sync(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_job *job) in consume_bcl_sync() argument
2511 job->needs_bcl_sync = true; in consume_bcl_sync()
2527 if (!cmd_buffer->state.job) { in v3dv_cmd_buffer_emit_pre_draw()
2538 struct v3dv_job *job = cmd_buffer_pre_draw_split_job(cmd_buffer); in v3dv_cmd_buffer_emit_pre_draw() local
2539 job->draw_count++; in v3dv_cmd_buffer_emit_pre_draw()
2543 job->uses_buffer_device_address |= pipeline->uses_buffer_device_address; in v3dv_cmd_buffer_emit_pre_draw()
2549 if (job->serialize && (cmd_buffer->state.barrier.bcl_buffer_access || in v3dv_cmd_buffer_emit_pre_draw()
2551 assert(!job->needs_bcl_sync); in v3dv_cmd_buffer_emit_pre_draw()
2554 consume_bcl_sync(cmd_buffer, job); in v3dv_cmd_buffer_emit_pre_draw()
2805 struct v3dv_job *job = cmd_buffer->state.job; in v3dv_CmdPipelineBarrier() local
2806 if (job) in v3dv_CmdPipelineBarrier()
3159 assert(cmd_buffer->state.job == NULL); in v3dv_cmd_buffer_reset_queries()
3164 struct v3dv_job *job = in v3dv_cmd_buffer_reset_queries() local
3170 job->cpu.query_reset.pool = pool; in v3dv_cmd_buffer_reset_queries()
3171 job->cpu.query_reset.first = first; in v3dv_cmd_buffer_reset_queries()
3172 job->cpu.query_reset.count = count; in v3dv_cmd_buffer_reset_queries()
3174 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_cmd_buffer_reset_queries()
3288 struct v3dv_job *job = in v3dv_cmd_buffer_schedule_end_query() local
3294 job->cpu.query_end.pool = pool; in v3dv_cmd_buffer_schedule_end_query()
3295 job->cpu.query_end.query = query; in v3dv_cmd_buffer_schedule_end_query()
3298 job->cpu.query_end.count = 1; in v3dv_cmd_buffer_schedule_end_query()
3300 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_cmd_buffer_schedule_end_query()
3367 assert(cmd_buffer->state.job == NULL); in v3dv_cmd_buffer_copy_query_results()
3372 struct v3dv_job *job = in v3dv_cmd_buffer_copy_query_results() local
3378 job->cpu.query_copy_results.pool = pool; in v3dv_cmd_buffer_copy_query_results()
3379 job->cpu.query_copy_results.first = first; in v3dv_cmd_buffer_copy_query_results()
3380 job->cpu.query_copy_results.count = count; in v3dv_cmd_buffer_copy_query_results()
3381 job->cpu.query_copy_results.dst = dst; in v3dv_cmd_buffer_copy_query_results()
3382 job->cpu.query_copy_results.offset = offset; in v3dv_cmd_buffer_copy_query_results()
3383 job->cpu.query_copy_results.stride = stride; in v3dv_cmd_buffer_copy_query_results()
3384 job->cpu.query_copy_results.flags = flags; in v3dv_cmd_buffer_copy_query_results()
3386 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_cmd_buffer_copy_query_results()
3394 struct v3dv_job *job = vk_zalloc(&device->vk.alloc, in v3dv_cmd_buffer_add_tfu_job() local
3397 if (!job) { in v3dv_cmd_buffer_add_tfu_job()
3402 v3dv_job_init(job, V3DV_JOB_TYPE_GPU_TFU, device, cmd_buffer, -1); in v3dv_cmd_buffer_add_tfu_job()
3403 job->tfu = *tfu; in v3dv_cmd_buffer_add_tfu_job()
3404 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_cmd_buffer_add_tfu_job()
3419 assert(cmd_buffer->state.job == NULL); in v3dv_CmdSetEvent()
3421 struct v3dv_job *job = in v3dv_CmdSetEvent() local
3427 job->cpu.event_set.event = event; in v3dv_CmdSetEvent()
3428 job->cpu.event_set.state = 1; in v3dv_CmdSetEvent()
3430 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_CmdSetEvent()
3445 assert(cmd_buffer->state.job == NULL); in v3dv_CmdResetEvent()
3447 struct v3dv_job *job = in v3dv_CmdResetEvent() local
3453 job->cpu.event_set.event = event; in v3dv_CmdResetEvent()
3454 job->cpu.event_set.state = 0; in v3dv_CmdResetEvent()
3456 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_CmdResetEvent()
3476 struct v3dv_job *job = in v3dv_CmdWaitEvents() local
3484 job->cpu.event_wait.events = in v3dv_CmdWaitEvents()
3487 if (!job->cpu.event_wait.events) { in v3dv_CmdWaitEvents()
3491 job->cpu.event_wait.event_count = eventCount; in v3dv_CmdWaitEvents()
3494 job->cpu.event_wait.events[i] = v3dv_event_from_handle(pEvents[i]); in v3dv_CmdWaitEvents()
3508 assert(cmd_buffer->state.pass || !cmd_buffer->state.job); in v3dv_CmdWaitEvents()
3509 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_CmdWaitEvents()
3528 struct v3dv_job *job = in v3dv_CmdWriteTimestamp() local
3534 job->cpu.query_timestamp.pool = query_pool; in v3dv_CmdWriteTimestamp()
3535 job->cpu.query_timestamp.query = query; in v3dv_CmdWriteTimestamp()
3538 job->cpu.query_timestamp.count = 1; in v3dv_CmdWriteTimestamp()
3542 job->cpu.query_timestamp.count = util_bitcount(subpass->view_mask); in v3dv_CmdWriteTimestamp()
3545 list_addtail(&job->list_link, &cmd_buffer->jobs); in v3dv_CmdWriteTimestamp()
3546 cmd_buffer->state.job = NULL; in v3dv_CmdWriteTimestamp()
3588 struct v3dv_job *job = info->csd_job; in v3dv_cmd_buffer_rewrite_indirect_csd_job() local
3590 assert(job->type == V3DV_JOB_TYPE_GPU_CSD); in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3593 struct drm_v3d_submit_csd *submit = &job->csd.submit; in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3595 job->csd.wg_count[0] = wg_counts[0]; in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3596 job->csd.wg_count[1] = wg_counts[1]; in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3597 job->csd.wg_count[2] = wg_counts[2]; in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3611 v3dv_bo_wait(job->device, job->indirect.bo, PIPE_TIMEOUT_INFINITE); in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3618 assert(info->wg_uniform_offsets[i] >= (uint32_t *) job->indirect.base); in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3619 assert(info->wg_uniform_offsets[i] < (uint32_t *) job->indirect.next); in v3dv_cmd_buffer_rewrite_indirect_csd_job()
3642 struct v3dv_job *job = vk_zalloc(&cmd_buffer->device->vk.alloc, in cmd_buffer_create_csd_job() local
3645 if (!job) { in cmd_buffer_create_csd_job()
3650 v3dv_job_init(job, V3DV_JOB_TYPE_GPU_CSD, cmd_buffer->device, cmd_buffer, -1); in cmd_buffer_create_csd_job()
3651 cmd_buffer->state.job = job; in cmd_buffer_create_csd_job()
3653 struct drm_v3d_submit_csd *submit = &job->csd.submit; in cmd_buffer_create_csd_job()
3655 job->csd.wg_count[0] = group_count_x; in cmd_buffer_create_csd_job()
3656 job->csd.wg_count[1] = group_count_y; in cmd_buffer_create_csd_job()
3657 job->csd.wg_count[2] = group_count_z; in cmd_buffer_create_csd_job()
3659 job->csd.wg_base[0] = base_offset_x; in cmd_buffer_create_csd_job()
3660 job->csd.wg_base[1] = base_offset_y; in cmd_buffer_create_csd_job()
3661 job->csd.wg_base[2] = base_offset_z; in cmd_buffer_create_csd_job()
3709 job->csd.shared_memory = in cmd_buffer_create_csd_job()
3713 if (!job->csd.shared_memory) { in cmd_buffer_create_csd_job()
3715 return job; in cmd_buffer_create_csd_job()
3719 v3dv_job_add_bo_unchecked(job, cs_assembly_bo); in cmd_buffer_create_csd_job()
3728 job->uses_buffer_device_address |= pipeline->uses_buffer_device_address; in cmd_buffer_create_csd_job()
3730 v3dv_job_add_bo(job, uniforms.bo); in cmd_buffer_create_csd_job()
3732 return job; in cmd_buffer_create_csd_job()
3747 struct v3dv_job *job = in cmd_buffer_dispatch() local
3757 list_addtail(&job->list_link, &cmd_buffer->jobs); in cmd_buffer_dispatch()
3758 cmd_buffer->state.job = NULL; in cmd_buffer_dispatch()
3801 struct v3dv_job *job = in cmd_buffer_dispatch_indirect() local
3818 &job->cpu.csd_indirect.wg_uniform_offsets[0], in cmd_buffer_dispatch_indirect()
3819 &job->cpu.csd_indirect.wg_size); in cmd_buffer_dispatch_indirect()
3823 job->cpu.csd_indirect.buffer = buffer; in cmd_buffer_dispatch_indirect()
3824 job->cpu.csd_indirect.offset = offset; in cmd_buffer_dispatch_indirect()
3825 job->cpu.csd_indirect.csd_job = csd_job; in cmd_buffer_dispatch_indirect()
3830 job->cpu.csd_indirect.needs_wg_uniform_rewrite = in cmd_buffer_dispatch_indirect()
3831 job->cpu.csd_indirect.wg_uniform_offsets[0] || in cmd_buffer_dispatch_indirect()
3832 job->cpu.csd_indirect.wg_uniform_offsets[1] || in cmd_buffer_dispatch_indirect()
3833 job->cpu.csd_indirect.wg_uniform_offsets[2]; in cmd_buffer_dispatch_indirect()
3835 list_addtail(&job->list_link, &cmd_buffer->jobs); in cmd_buffer_dispatch_indirect()
3837 cmd_buffer->state.job = NULL; in cmd_buffer_dispatch_indirect()