#include "xe_ring_ops.h"
#include <generated/xe_wa_oob.h>
#include "instructions/xe_gpu_commands.h"
#include "instructions/xe_mi_commands.h"
#include "regs/xe_engine_regs.h"
#include "regs/xe_gt_regs.h"
#include "regs/xe_lrc_layout.h"
#include "xe_exec_queue_types.h"
#include "xe_gt.h"
#include "xe_lrc.h"
#include "xe_macros.h"
#include "xe_sched_job.h"
#include "xe_sriov.h"
#include "xe_vm_types.h"
#include "xe_vm.h"
#include "xe_wa.h"
#define PIPE_CONTROL_3D_ENGINE_FLAGS …
#define PIPE_CONTROL_3D_ARCH_FLAGS …
static u32 preparser_disable(bool state)
{ … }
static int emit_aux_table_inv(struct xe_gt *gt, struct xe_reg reg,
u32 *dw, int i)
{ … }
static int emit_user_interrupt(u32 *dw, int i)
{ … }
static int emit_store_imm_ggtt(u32 addr, u32 value, u32 *dw, int i)
{ … }
static int emit_flush_dw(u32 *dw, int i)
{ … }
static int emit_flush_imm_ggtt(u32 addr, u32 value, bool invalidate_tlb,
u32 *dw, int i)
{ … }
static int emit_bb_start(u64 batch_addr, u32 ppgtt_flag, u32 *dw, int i)
{ … }
static int emit_flush_invalidate(u32 flag, u32 *dw, int i)
{ … }
static int
emit_pipe_control(u32 *dw, int i, u32 bit_group_0, u32 bit_group_1, u32 offset, u32 value)
{ … }
static int emit_pipe_invalidate(u32 mask_flags, bool invalidate_tlb, u32 *dw,
int i)
{ … }
static int emit_store_imm_ppgtt_posted(u64 addr, u64 value,
u32 *dw, int i)
{ … }
static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i)
{ … }
static int emit_pipe_control_to_ring_end(struct xe_hw_engine *hwe, u32 *dw, int i)
{ … }
static int emit_pipe_imm_ggtt(u32 addr, u32 value, bool stall_only, u32 *dw,
int i)
{ … }
static u32 get_ppgtt_flag(struct xe_sched_job *job)
{ … }
static int emit_copy_timestamp(struct xe_lrc *lrc, u32 *dw, int i)
{ … }
static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc,
u64 batch_addr, u32 seqno)
{ … }
static bool has_aux_ccs(struct xe_device *xe)
{ … }
static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
u64 batch_addr, u32 seqno)
{ … }
static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
struct xe_lrc *lrc,
u64 batch_addr, u32 seqno)
{ … }
static void emit_migration_job_gen12(struct xe_sched_job *job,
struct xe_lrc *lrc, u32 seqno)
{ … }
static void emit_job_gen12_gsc(struct xe_sched_job *job)
{ … }
static void emit_job_gen12_copy(struct xe_sched_job *job)
{ … }
static void emit_job_gen12_video(struct xe_sched_job *job)
{ … }
static void emit_job_gen12_render_compute(struct xe_sched_job *job)
{ … }
static const struct xe_ring_ops ring_ops_gen12_gsc = …;
static const struct xe_ring_ops ring_ops_gen12_copy = …;
static const struct xe_ring_ops ring_ops_gen12_video = …;
static const struct xe_ring_ops ring_ops_gen12_render_compute = …;
const struct xe_ring_ops *
xe_ring_ops_get(struct xe_gt *gt, enum xe_engine_class class)
{ … }