nir/opt_sink: do not sink inverse_ballot out of loops
Inverse_ballot result is undefined if the input is not dynamically uniform.
And sinking out of loops might make the input divergent.
Fixes: 18a0ff137f ("nir: sink/move inverse_ballot like moves")
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30906>
This commit is contained in:
@@ -227,6 +227,7 @@ can_sink_out_of_loop(nir_intrinsic_instr *intrin)
|
||||
*/
|
||||
return intrin->intrinsic != nir_intrinsic_load_ubo &&
|
||||
intrin->intrinsic != nir_intrinsic_load_ubo_vec4 &&
|
||||
intrin->intrinsic != nir_intrinsic_inverse_ballot &&
|
||||
intrin->intrinsic != nir_intrinsic_load_ssbo;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user