intel/compiler: Add backend compiler basics for Task/Mesh
Task/Mesh stages are CS-like stages, and include many builtins (e.g. workgroup ID/index) and intrinsics (e.g. workgroup memory primitives) originally present only in CS. This commit add two new stages (task and mesh) that 'inherit' from CS by embedding a brw_cs_prog_data in their own prog_data structure, so that CS functionality can be easily reused. They also currently use the same helpers to select the SIMD variant to use -- that was recently added for CS. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13661>
This commit is contained in:
@@ -127,6 +127,8 @@ public:
|
||||
bool run_gs();
|
||||
bool run_cs(bool allow_spilling);
|
||||
bool run_bs(bool allow_spilling);
|
||||
bool run_task(bool allow_spilling);
|
||||
bool run_mesh(bool allow_spilling);
|
||||
void optimize();
|
||||
void allocate_registers(bool allow_spilling);
|
||||
void setup_fs_payload_gfx4();
|
||||
@@ -254,6 +256,12 @@ public:
|
||||
nir_intrinsic_instr *instr);
|
||||
void nir_emit_bs_intrinsic(const brw::fs_builder &bld,
|
||||
nir_intrinsic_instr *instr);
|
||||
void nir_emit_task_intrinsic(const brw::fs_builder &bld,
|
||||
nir_intrinsic_instr *instr);
|
||||
void nir_emit_mesh_intrinsic(const brw::fs_builder &bld,
|
||||
nir_intrinsic_instr *instr);
|
||||
void nir_emit_task_mesh_intrinsic(const brw::fs_builder &bld,
|
||||
nir_intrinsic_instr *instr);
|
||||
fs_reg get_nir_image_intrinsic_image(const brw::fs_builder &bld,
|
||||
nir_intrinsic_instr *instr);
|
||||
fs_reg get_nir_ssbo_intrinsic_index(const brw::fs_builder &bld,
|
||||
|
Reference in New Issue
Block a user