Lines Matching full:job

178 static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i)  in emit_render_cache_flush()  argument
180 struct xe_exec_queue *q = job->q; in emit_render_cache_flush()
201 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in emit_render_cache_flush()
228 static u32 get_ppgtt_flag(struct xe_sched_job *job) in get_ppgtt_flag() argument
230 if (job->q->vm && !job->ggtt) in get_ppgtt_flag()
245 * Ensure CTX timestamp >= Job timestamp during VF sampling to avoid in emit_copy_timestamp()
260 static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_simple() argument
264 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_simple()
265 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_simple()
271 if (job->ring_ops_flush_tlb) { in __emit_job_gen12_simple()
286 if (job->user_fence.used) { in __emit_job_gen12_simple()
288 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_simple()
289 job->user_fence.value, in __emit_job_gen12_simple()
316 static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_video() argument
320 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_video()
321 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_video()
323 bool decode = job->q->class == XE_ENGINE_CLASS_VIDEO_DECODE; in __emit_job_gen12_video()
339 if (job->ring_ops_flush_tlb) in __emit_job_gen12_video()
345 if (!job->ring_ops_flush_tlb) in __emit_job_gen12_video()
354 if (job->user_fence.used) { in __emit_job_gen12_video()
356 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_video()
357 job->user_fence.value, in __emit_job_gen12_video()
370 static void __emit_job_gen12_render_compute(struct xe_sched_job *job, in __emit_job_gen12_render_compute() argument
376 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_render_compute()
377 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_render_compute()
389 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in __emit_job_gen12_render_compute()
393 i = emit_pipe_invalidate(job->q, mask_flags, job->ring_ops_flush_tlb, dw, i); in __emit_job_gen12_render_compute()
409 i = emit_render_cache_flush(job, dw, i); in __emit_job_gen12_render_compute()
411 if (job->user_fence.used) in __emit_job_gen12_render_compute()
412 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_render_compute()
413 job->user_fence.value, in __emit_job_gen12_render_compute()
416 i = emit_pipe_imm_ggtt(job->q, xe_lrc_seqno_ggtt_addr(lrc), seqno, lacks_render, dw, i); in __emit_job_gen12_render_compute()
425 static void emit_migration_job_gen12(struct xe_sched_job *job, in emit_migration_job_gen12() argument
429 struct xe_gt *gt = job->q->gt; in emit_migration_job_gen12()
442 i = emit_bb_start(job->ptrs[0].batch_addr, BIT(8), dw, i); in emit_migration_job_gen12()
445 i = emit_flush_invalidate(saddr, seqno, job->migrate_flush_flags, dw, i); in emit_migration_job_gen12()
448 i = emit_bb_start(job->ptrs[1].batch_addr, BIT(8), dw, i); in emit_migration_job_gen12()
451 job->migrate_flush_flags, in emit_migration_job_gen12()
456 xe_gt_assert(job->q->gt, i <= MAX_JOB_SIZE_DW); in emit_migration_job_gen12()
461 static void emit_job_gen12_gsc(struct xe_sched_job *job) in emit_job_gen12_gsc() argument
463 struct xe_gt *gt = job->q->gt; in emit_job_gen12_gsc()
465 xe_gt_assert(gt, job->q->width <= 1); /* no parallel submission for GSCCS */ in emit_job_gen12_gsc()
467 __emit_job_gen12_simple(job, job->q->lrc[0], in emit_job_gen12_gsc()
468 job->ptrs[0].batch_addr, in emit_job_gen12_gsc()
469 &job->ptrs[0].head, in emit_job_gen12_gsc()
470 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_gsc()
473 static void emit_job_gen12_copy(struct xe_sched_job *job) in emit_job_gen12_copy() argument
477 if (xe_sched_job_is_migration(job->q)) { in emit_job_gen12_copy()
478 emit_migration_job_gen12(job, job->q->lrc[0], in emit_job_gen12_copy()
479 &job->ptrs[0].head, in emit_job_gen12_copy()
480 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_copy()
484 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_copy()
485 __emit_job_gen12_simple(job, job->q->lrc[i], in emit_job_gen12_copy()
486 job->ptrs[i].batch_addr, in emit_job_gen12_copy()
487 &job->ptrs[i].head, in emit_job_gen12_copy()
488 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_copy()
491 static void emit_job_gen12_video(struct xe_sched_job *job) in emit_job_gen12_video() argument
496 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_video()
497 __emit_job_gen12_video(job, job->q->lrc[i], in emit_job_gen12_video()
498 job->ptrs[i].batch_addr, in emit_job_gen12_video()
499 &job->ptrs[i].head, in emit_job_gen12_video()
500 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_video()
503 static void emit_job_gen12_render_compute(struct xe_sched_job *job) in emit_job_gen12_render_compute() argument
507 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_render_compute()
508 __emit_job_gen12_render_compute(job, job->q->lrc[i], in emit_job_gen12_render_compute()
509 job->ptrs[i].batch_addr, in emit_job_gen12_render_compute()
510 &job->ptrs[i].head, in emit_job_gen12_render_compute()
511 xe_sched_job_lrc_seqno(job)); in emit_job_gen12_render_compute()