nir/divergence_analysis: Add uniform_load_tears option
This "tear" is similar to the original concept of loads/stores tearing, but across invocations in a wave instead of bytes. Qualcomm seems to have this problem, at least for some GPUs. This fixes spec@arb_shader_storage_buffer_object@execution@ssbo-atomiccompswap-int on a630 once we start relying on divergence analysis for computing reconvergence properties. For backends that have readFirstInvocation(), it should be possible to fix the problem by inserting readFirstInvocation() instead, but a5xx doesn't have it so we can't rely on it in freedreno. Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28573>
This commit is contained in:
@@ -3599,6 +3599,7 @@ typedef enum {
|
||||
nir_divergence_single_frag_shading_rate_per_subgroup = (1 << 4),
|
||||
nir_divergence_multiple_workgroup_per_compute_subgroup = (1 << 5),
|
||||
nir_divergence_shader_record_ptr_uniform = (1 << 6),
|
||||
nir_divergence_uniform_load_tears = (1 << 7),
|
||||
} nir_divergence_options;
|
||||
|
||||
typedef enum {
|
||||
|
||||
Reference in New Issue
Block a user