Lines Matching refs:job
176 static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i) in emit_render_cache_flush() argument
178 struct xe_gt *gt = job->q->gt; in emit_render_cache_flush()
198 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()
247 static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_simple() argument
251 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_simple()
252 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_simple()
256 if (job->ring_ops_flush_tlb) { in __emit_job_gen12_simple()
268 if (job->user_fence.used) { in __emit_job_gen12_simple()
270 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_simple()
271 job->user_fence.value, in __emit_job_gen12_simple()
298 static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_video() argument
302 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_video()
303 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_video()
305 bool decode = job->q->class == XE_ENGINE_CLASS_VIDEO_DECODE; in __emit_job_gen12_video()
319 if (job->ring_ops_flush_tlb) in __emit_job_gen12_video()
325 if (!job->ring_ops_flush_tlb) in __emit_job_gen12_video()
331 if (job->user_fence.used) { in __emit_job_gen12_video()
333 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_video()
334 job->user_fence.value, in __emit_job_gen12_video()
347 static void __emit_job_gen12_render_compute(struct xe_sched_job *job, in __emit_job_gen12_render_compute() argument
352 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_render_compute()
353 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_render_compute()
363 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in __emit_job_gen12_render_compute()
367 i = emit_pipe_invalidate(mask_flags, job->ring_ops_flush_tlb, dw, i); in __emit_job_gen12_render_compute()
380 i = emit_render_cache_flush(job, dw, i); in __emit_job_gen12_render_compute()
382 if (job->user_fence.used) in __emit_job_gen12_render_compute()
383 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_render_compute()
384 job->user_fence.value, in __emit_job_gen12_render_compute()
391 i = emit_pipe_control_to_ring_end(job->q->hwe, dw, i); in __emit_job_gen12_render_compute()
398 static void emit_migration_job_gen12(struct xe_sched_job *job, in emit_migration_job_gen12() argument
410 i = emit_bb_start(job->ptrs[0].batch_addr, BIT(8), dw, i); 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()