Lines Matching full:job
174 static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i) in emit_render_cache_flush() argument
176 struct xe_gt *gt = job->q->gt; in emit_render_cache_flush()
192 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in emit_render_cache_flush()
222 static u32 get_ppgtt_flag(struct xe_sched_job *job) in get_ppgtt_flag() argument
224 if (job->q->vm && !job->ggtt) in get_ppgtt_flag()
244 static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_simple() argument
248 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_simple()
249 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_simple()
253 if (job->ring_ops_flush_tlb) { in __emit_job_gen12_simple()
265 if (job->user_fence.used) { in __emit_job_gen12_simple()
267 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_simple()
268 job->user_fence.value, in __emit_job_gen12_simple()
295 static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_video() argument
299 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_video()
300 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_video()
302 bool decode = job->q->class == XE_ENGINE_CLASS_VIDEO_DECODE; in __emit_job_gen12_video()
316 if (job->ring_ops_flush_tlb) in __emit_job_gen12_video()
322 if (!job->ring_ops_flush_tlb) in __emit_job_gen12_video()
328 if (job->user_fence.used) { in __emit_job_gen12_video()
330 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_video()
331 job->user_fence.value, in __emit_job_gen12_video()
344 static void __emit_job_gen12_render_compute(struct xe_sched_job *job, in __emit_job_gen12_render_compute() argument
349 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_render_compute()
350 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_render_compute()
360 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in __emit_job_gen12_render_compute()
364 i = emit_pipe_invalidate(mask_flags, job->ring_ops_flush_tlb, dw, i); in __emit_job_gen12_render_compute()
377 i = emit_render_cache_flush(job, dw, i); in __emit_job_gen12_render_compute()
379 if (job->user_fence.used) in __emit_job_gen12_render_compute()
380 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_render_compute()
381 job->user_fence.value, in __emit_job_gen12_render_compute()
388 i = emit_pipe_control_to_ring_end(job->q->hwe, dw, i); in __emit_job_gen12_render_compute()
395 static void emit_migration_job_gen12(struct xe_sched_job *job, in emit_migration_job_gen12() argument
407 i = emit_bb_start(job->ptrs[0].batch_addr, BIT(8), dw, i); in emit_migration_job_gen12()
409 if (!IS_SRIOV_VF(gt_to_xe(job->q->gt))) { in emit_migration_job_gen12()
416 i = emit_bb_start(job->ptrs[1].batch_addr, BIT(8), dw, i); in emit_migration_job_gen12()
418 dw[i++] = MI_FLUSH_DW | MI_INVALIDATE_TLB | job->migrate_flush_flags | in emit_migration_job_gen12()
426 xe_gt_assert(job->q->gt, i <= MAX_JOB_SIZE_DW); in emit_migration_job_gen12()
431 static void emit_job_gen12_gsc(struct xe_sched_job *job) in emit_job_gen12_gsc() argument
433 struct xe_gt *gt = job->q->gt; in emit_job_gen12_gsc()
435 xe_gt_assert(gt, job->q->width <= 1); /* no parallel submission for GSCCS */ in emit_job_gen12_gsc()
437 __emit_job_gen12_simple(job, job->q->lrc[0], in emit_job_gen12_gsc()
438 job->ptrs[0].batch_addr, in emit_job_gen12_gsc()
439 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_gsc()
442 static void emit_job_gen12_copy(struct xe_sched_job *job) in emit_job_gen12_copy() argument
446 if (xe_sched_job_is_migration(job->q)) { in emit_job_gen12_copy()
447 emit_migration_job_gen12(job, job->q->lrc[0], in emit_job_gen12_copy()
448 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_copy()
452 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_copy()
453 __emit_job_gen12_simple(job, job->q->lrc[i], in emit_job_gen12_copy()
454 job->ptrs[i].batch_addr, in emit_job_gen12_copy()
455 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_copy()
458 static void emit_job_gen12_video(struct xe_sched_job *job) in emit_job_gen12_video() argument
463 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_video()
464 __emit_job_gen12_video(job, job->q->lrc[i], in emit_job_gen12_video()
465 job->ptrs[i].batch_addr, in emit_job_gen12_video()
466 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_video()
469 static void emit_job_gen12_render_compute(struct xe_sched_job *job) in emit_job_gen12_render_compute() argument
473 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_render_compute()
474 __emit_job_gen12_render_compute(job, job->q->lrc[i], in emit_job_gen12_render_compute()
475 job->ptrs[i].batch_addr, in emit_job_gen12_render_compute()
476 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_render_compute()