nir: Add Panfrost specific shader_output intrinsic
On Avalon, this is a bitfield that holds information on what values a vertex shader should output. Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com> Reviewed-by: Benjamin Lee <benjamin.lee@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33910>
This commit is contained in:
@@ -281,6 +281,7 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state)
|
||||
case nir_intrinsic_load_ring_attr_offset_amd:
|
||||
case nir_intrinsic_load_provoking_vtx_amd:
|
||||
case nir_intrinsic_load_sample_positions_pan:
|
||||
case nir_intrinsic_load_shader_output_pan:
|
||||
case nir_intrinsic_load_workgroup_num_input_vertices_amd:
|
||||
case nir_intrinsic_load_workgroup_num_input_primitives_amd:
|
||||
case nir_intrinsic_load_pipeline_stat_query_enabled_amd:
|
||||
|
||||
@@ -1505,6 +1505,10 @@ intrinsic("prefetch_ubo_ir3", [1], flags=[CAN_REORDER])
|
||||
# src[] = { vertex_id, instance_id, offset }
|
||||
load("attribute_pan", [1, 1, 1], [BASE, COMPONENT, DEST_TYPE, IO_SEMANTICS], [CAN_ELIMINATE, CAN_REORDER])
|
||||
|
||||
# Panfrost-specific intrinsic to load the shader_output special-FAU value on Avalon.
|
||||
intrinsic("load_shader_output_pan", dest_comp=1, src_comp=[], bit_sizes=[32],
|
||||
indices=[], flags=[CAN_REORDER, CAN_ELIMINATE])
|
||||
|
||||
# Panfrost-specific intrinsics for accessing the raw vertex ID and the
|
||||
# associated offset such that
|
||||
# vertex_id = raw_vertex_id_pan + raw_vertex_offset_pan
|
||||
|
||||
@@ -125,6 +125,7 @@ can_sink_instr(nir_instr *instr, nir_move_options options, bool *can_mov_out_of_
|
||||
return options & nir_move_copies;
|
||||
case nir_intrinsic_load_constant_agx:
|
||||
case nir_intrinsic_load_local_pixel_agx:
|
||||
case nir_intrinsic_load_shader_output_pan:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user