diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 8ec5674d85f..6599b9ef2a6 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -3573,6 +3573,7 @@ static void visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins case nir_intrinsic_load_tess_rel_patch_id_amd: case nir_intrinsic_load_patch_vertices_in: case nir_intrinsic_load_sample_mask_in: + case nir_intrinsic_load_viewport_xy_scale_and_offset: case nir_intrinsic_load_ring_tess_factors_amd: case nir_intrinsic_load_ring_tess_offchip_amd: case nir_intrinsic_load_ring_tess_offchip_offset_amd: diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 084ceaa78de..0f6698eeca3 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -130,6 +130,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr) 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_viewport_xy_scale_and_offset: case nir_intrinsic_load_blend_const_color_a_float: case nir_intrinsic_load_blend_const_color_b_float: case nir_intrinsic_load_blend_const_color_g_float: diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index aee5e5c9cfe..386773bcd01 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -876,8 +876,6 @@ system_value("cull_mask", 1) # # Panfrost needs to implement all coordinate transformation in the # vertex shader; system values allow us to share this routine in NIR. -# -# RADV uses these for NGG primitive culling. system_value("viewport_x_scale", 1) system_value("viewport_y_scale", 1) system_value("viewport_z_scale", 1) @@ -886,6 +884,8 @@ system_value("viewport_y_offset", 1) system_value("viewport_z_offset", 1) system_value("viewport_scale", 3) system_value("viewport_offset", 3) +# Pack xy scale and offset into a vec4 load (used by AMD NGG primitive culling) +system_value("viewport_xy_scale_and_offset", 4) # Blend constant color values. Float values are clamped. Vectored versions are # provided as well for driver convenience