intel/compiler: Implement Task Output and Mesh Input
Implement the output written by the task *workgroup* and available to all the mesh *workgroups* dispatched from that task. We currently ignore any layout annotations (since they are not really testable) and produce a (packed) layout ourselves. The URB messages are only SIMD8, so for larger SIMDs, the functions will produce multiple messages. Making this lowering here instead of the generic lower_simd_width() since it is not just a matter of zip/unzip, e.g. the offset must be adjusted. Indirect writes/reads are implemented by handling one component at a time and using the PER_SLOT variant of the messages. Note that VK_NV_mesh_shader allows reading outputs, so add support for that as well. 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:
@@ -329,6 +329,11 @@ public:
|
||||
void emit_cs_terminate();
|
||||
fs_reg *emit_work_group_id_setup();
|
||||
|
||||
void emit_task_mesh_store(const brw::fs_builder &bld,
|
||||
nir_intrinsic_instr *instr);
|
||||
void emit_task_mesh_load(const brw::fs_builder &bld,
|
||||
nir_intrinsic_instr *instr);
|
||||
|
||||
void emit_barrier();
|
||||
|
||||
void emit_shader_time_begin();
|
||||
|
Reference in New Issue
Block a user