mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
nir/gather_info: use subgroup/quadgroup flags
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33410>
This commit is contained in:
parent
b9ce851b6c
commit
edb0164623
1 changed files with 11 additions and 47 deletions
|
|
@ -770,53 +770,6 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
|
|||
}
|
||||
break;
|
||||
|
||||
case nir_intrinsic_ddx:
|
||||
case nir_intrinsic_ddx_fine:
|
||||
case nir_intrinsic_ddx_coarse:
|
||||
case nir_intrinsic_ddy:
|
||||
case nir_intrinsic_ddy_fine:
|
||||
case nir_intrinsic_ddy_coarse:
|
||||
if (shader->info.stage == MESA_SHADER_FRAGMENT)
|
||||
shader->info.fs.needs_quad_helper_invocations = true;
|
||||
break;
|
||||
|
||||
case nir_intrinsic_quad_vote_any:
|
||||
case nir_intrinsic_quad_vote_all:
|
||||
case nir_intrinsic_quad_broadcast:
|
||||
case nir_intrinsic_quad_swap_horizontal:
|
||||
case nir_intrinsic_quad_swap_vertical:
|
||||
case nir_intrinsic_quad_swap_diagonal:
|
||||
case nir_intrinsic_quad_swizzle_amd:
|
||||
if (shader->info.stage == MESA_SHADER_FRAGMENT)
|
||||
shader->info.fs.needs_quad_helper_invocations = true;
|
||||
break;
|
||||
|
||||
case nir_intrinsic_vote_any:
|
||||
case nir_intrinsic_vote_all:
|
||||
case nir_intrinsic_vote_feq:
|
||||
case nir_intrinsic_vote_ieq:
|
||||
case nir_intrinsic_ballot:
|
||||
case nir_intrinsic_first_invocation:
|
||||
case nir_intrinsic_last_invocation:
|
||||
case nir_intrinsic_read_invocation:
|
||||
case nir_intrinsic_read_first_invocation:
|
||||
case nir_intrinsic_elect:
|
||||
case nir_intrinsic_reduce:
|
||||
case nir_intrinsic_inclusive_scan:
|
||||
case nir_intrinsic_exclusive_scan:
|
||||
case nir_intrinsic_shuffle:
|
||||
case nir_intrinsic_shuffle_xor:
|
||||
case nir_intrinsic_shuffle_up:
|
||||
case nir_intrinsic_shuffle_down:
|
||||
case nir_intrinsic_rotate:
|
||||
case nir_intrinsic_masked_swizzle_amd:
|
||||
shader->info.uses_wide_subgroup_intrinsics = true;
|
||||
|
||||
if (shader->info.stage == MESA_SHADER_FRAGMENT &&
|
||||
shader->info.fs.require_full_quads)
|
||||
shader->info.fs.needs_quad_helper_invocations = true;
|
||||
break;
|
||||
|
||||
case nir_intrinsic_end_primitive:
|
||||
case nir_intrinsic_end_primitive_with_counter:
|
||||
case nir_intrinsic_end_primitive_nv:
|
||||
|
|
@ -868,6 +821,17 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
|
|||
if (nir_intrinsic_writes_external_memory(instr))
|
||||
shader->info.writes_memory = true;
|
||||
|
||||
if (nir_intrinsic_has_semantic(instr, NIR_INTRINSIC_QUADGROUP)) {
|
||||
if (shader->info.stage == MESA_SHADER_FRAGMENT)
|
||||
shader->info.fs.needs_quad_helper_invocations = true;
|
||||
} else if (nir_intrinsic_has_semantic(instr, NIR_INTRINSIC_SUBGROUP)) {
|
||||
shader->info.uses_wide_subgroup_intrinsics = true;
|
||||
|
||||
if (shader->info.stage == MESA_SHADER_FRAGMENT &&
|
||||
shader->info.fs.require_full_quads)
|
||||
shader->info.fs.needs_quad_helper_invocations = true;
|
||||
}
|
||||
|
||||
if (instr->intrinsic == nir_intrinsic_image_levels ||
|
||||
instr->intrinsic == nir_intrinsic_image_size ||
|
||||
instr->intrinsic == nir_intrinsic_image_samples ||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue