diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 5f14ef1d44b..6075f9efd65 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -279,6 +279,7 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state) 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_blend_descriptor_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: @@ -1019,6 +1020,10 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state) case nir_intrinsic_bvh_stack_rtn_amd: case nir_intrinsic_cmat_load_shared_nv: case nir_intrinsic_cmat_mov_transpose_nv: + case nir_intrinsic_load_cumulative_coverage_pan: + case nir_intrinsic_load_blend_input_pan: + case nir_intrinsic_atest_pan: + case nir_intrinsic_zs_emit_pan: is_divergent = true; break; diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index e867c267900..2fc7d9a4ecd 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -1728,6 +1728,24 @@ system_value("multisampled_pan", 1, bit_sizes=[32]) # noperspective, this is 32 bits and starts from VARYING_SLOT_VAR0. system_value("noperspective_varyings_pan", 1, bit_sizes=[32]) +# Cumulative coverage mask, the start of the atest/zt/blend chain +system_value("cumulative_coverage_pan", 1, bit_sizes=[32]) +system_value("blend_descriptor_pan", 1, bit_sizes=[64], indices=[BASE]) + +load("blend_input_pan", [], [IO_SEMANTICS, DEST_TYPE], + [CAN_ELIMINATE, CAN_REORDER]) +# src[] = { coverage, alpha } +intrinsic("atest_pan", [1, 1], dest_comp=1, bit_sizes=[32]) +# src[] = { coverage, depth, stencil } +intrinsic("zs_emit_pan", [1, 1, 1], dest_comp=1, + indices=[FLAGS], bit_sizes=[32]) +# src[] = { coverage, desc, color } +intrinsic("blend_pan", [1, 1, 4], indices=[IO_SEMANTICS, SRC_TYPE]) +# src[] = { coverage, desc, color1, color2 } +intrinsic("blend2_pan", [1, 1, 4, 4], + indices=[IO_SEMANTICS, SRC_TYPE, DEST_TYPE]) +barrier("blend_return_pan") + # System values for SPV_ARM_core_builtins system_value("core_count_arm", 1, bit_sizes=[32]) system_value("core_max_id_arm", 1, bit_sizes=[32])