Lines Matching full:job
156 static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i) in emit_render_cache_flush() argument
158 struct xe_gt *gt = job->q->gt; in emit_render_cache_flush()
174 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in emit_render_cache_flush()
219 static u32 get_ppgtt_flag(struct xe_sched_job *job) in get_ppgtt_flag() argument
221 return job->q->vm ? BIT(8) : 0; in get_ppgtt_flag()
225 static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_simple() argument
229 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_simple()
230 struct xe_vm *vm = job->q->vm; in __emit_job_gen12_simple()
231 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_simple()
245 if (job->user_fence.used) in __emit_job_gen12_simple()
246 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_simple()
247 job->user_fence.value, in __emit_job_gen12_simple()
273 static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_video() argument
277 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_video()
278 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_video()
280 bool decode = job->q->class == XE_ENGINE_CLASS_VIDEO_DECODE; in __emit_job_gen12_video()
281 struct xe_vm *vm = job->q->vm; in __emit_job_gen12_video()
305 if (job->user_fence.used) in __emit_job_gen12_video()
306 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_video()
307 job->user_fence.value, in __emit_job_gen12_video()
319 static void __emit_job_gen12_render_compute(struct xe_sched_job *job, in __emit_job_gen12_render_compute() argument
324 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_render_compute()
325 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_render_compute()
328 struct xe_vm *vm = job->q->vm; in __emit_job_gen12_render_compute()
334 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in __emit_job_gen12_render_compute()
351 i = emit_render_cache_flush(job, dw, i); in __emit_job_gen12_render_compute()
353 if (job->user_fence.used) in __emit_job_gen12_render_compute()
354 i = emit_store_imm_ppgtt_posted(job->user_fence.addr, in __emit_job_gen12_render_compute()
355 job->user_fence.value, in __emit_job_gen12_render_compute()
362 i = emit_pipe_control_to_ring_end(job->q->hwe, dw, i); in __emit_job_gen12_render_compute()
369 static void emit_migration_job_gen12(struct xe_sched_job *job, in emit_migration_job_gen12() argument
379 i = emit_bb_start(job->batch_addr[0], BIT(8), dw, i); in emit_migration_job_gen12()
386 i = emit_bb_start(job->batch_addr[1], BIT(8), dw, i); in emit_migration_job_gen12()
388 dw[i++] = MI_FLUSH_DW | MI_INVALIDATE_TLB | job->migrate_flush_flags | in emit_migration_job_gen12()
396 xe_gt_assert(job->q->gt, i <= MAX_JOB_SIZE_DW); in emit_migration_job_gen12()
401 static void emit_job_gen12_gsc(struct xe_sched_job *job) in emit_job_gen12_gsc() argument
403 struct xe_gt *gt = job->q->gt; in emit_job_gen12_gsc()
405 xe_gt_assert(gt, job->q->width <= 1); /* no parallel submission for GSCCS */ in emit_job_gen12_gsc()
407 __emit_job_gen12_simple(job, job->q->lrc, in emit_job_gen12_gsc()
408 job->batch_addr[0], in emit_job_gen12_gsc()
409 xe_sched_job_seqno(job)); in emit_job_gen12_gsc()
412 static void emit_job_gen12_copy(struct xe_sched_job *job) in emit_job_gen12_copy() argument
416 if (xe_sched_job_is_migration(job->q)) { in emit_job_gen12_copy()
417 emit_migration_job_gen12(job, job->q->lrc, in emit_job_gen12_copy()
418 xe_sched_job_seqno(job)); in emit_job_gen12_copy()
422 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_copy()
423 __emit_job_gen12_simple(job, job->q->lrc + i, in emit_job_gen12_copy()
424 job->batch_addr[i], in emit_job_gen12_copy()
425 xe_sched_job_seqno(job)); in emit_job_gen12_copy()
428 static void emit_job_gen12_video(struct xe_sched_job *job) in emit_job_gen12_video() argument
433 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_video()
434 __emit_job_gen12_video(job, job->q->lrc + i, in emit_job_gen12_video()
435 job->batch_addr[i], in emit_job_gen12_video()
436 xe_sched_job_seqno(job)); in emit_job_gen12_video()
439 static void emit_job_gen12_render_compute(struct xe_sched_job *job) in emit_job_gen12_render_compute() argument
443 for (i = 0; i < job->q->width; ++i) in emit_job_gen12_render_compute()
444 __emit_job_gen12_render_compute(job, job->q->lrc + i, in emit_job_gen12_render_compute()
445 job->batch_addr[i], in emit_job_gen12_render_compute()
446 xe_sched_job_seqno(job)); in emit_job_gen12_render_compute()