nir: Add AMD specific intrinsics for NGG shader based culling.
The new intrinsics fall into the following categories: 1. New viewport intrinsics: For missing components that we need. RADV will emit new SGPR arguments which will contain the viewport information for culling shaders. These are used to compute the screen space coordinates for small primitive culling. 2. load_cull_xxx: Load the culling settings in runtime. These will be a new SGPR argument in RADV. 3. overwrite_xxx: These are needed because system values such as vertex and instance ID are not writeable, but we need to change them after repacking shader invocations of VS and TES. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10525>
This commit is contained in:
@@ -124,6 +124,8 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
|
||||
case nir_intrinsic_load_viewport_y_scale:
|
||||
case nir_intrinsic_load_viewport_z_scale:
|
||||
case nir_intrinsic_load_viewport_offset:
|
||||
case nir_intrinsic_load_viewport_x_offset:
|
||||
case nir_intrinsic_load_viewport_y_offset:
|
||||
case nir_intrinsic_load_viewport_z_offset:
|
||||
case nir_intrinsic_load_blend_const_color_a_float:
|
||||
case nir_intrinsic_load_blend_const_color_b_float:
|
||||
@@ -146,6 +148,12 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
|
||||
case nir_intrinsic_load_workgroup_num_input_vertices_amd:
|
||||
case nir_intrinsic_load_workgroup_num_input_primitives_amd:
|
||||
case nir_intrinsic_load_shader_query_enabled_amd:
|
||||
case nir_intrinsic_load_cull_front_face_enabled_amd:
|
||||
case nir_intrinsic_load_cull_back_face_enabled_amd:
|
||||
case nir_intrinsic_load_cull_ccw_amd:
|
||||
case nir_intrinsic_load_cull_small_primitives_enabled_amd:
|
||||
case nir_intrinsic_load_cull_any_enabled_amd:
|
||||
case nir_intrinsic_load_cull_small_prim_precision_amd:
|
||||
is_divergent = false;
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user