llvmpipe: advertise support for subgroups in all stages

Works on CL and also in use by lavapipe. However it needs the
shader_subgroup_size cap to be set to be actually advertized in OpenGL.

Also support subgroup rotate while at it.

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38015>
This commit is contained in:
Karol Herbst 2025-09-04 10:35:37 +02:00 committed by Marge Bot
parent 2a5227981e
commit 1c87c79893
2 changed files with 4 additions and 0 deletions

View file

@ -77,6 +77,7 @@ lp_build_opt_nir(struct nir_shader *nir)
.lower_subgroup_masks = true,
.lower_relative_shuffle = true,
.lower_inverse_ballot = true,
.lower_rotate_to_shuffle = true,
};
NIR_PASS(progress, nir, nir_lower_subgroups, &subgroups_options);
} while (progress);

View file

@ -391,6 +391,9 @@ llvmpipe_init_screen_caps(struct pipe_screen *screen)
caps->max_point_size_aa = LP_MAX_POINT_WIDTH; /* arbitrary */
caps->max_texture_anisotropy = 16.0; /* not actually signficant at this time */
caps->max_texture_lod_bias = 16.0; /* arbitrary */
caps->shader_subgroup_supported_stages = BITFIELD_MASK(MESA_SHADER_MESH_STAGES);
caps->shader_subgroup_supported_features = PIPE_SHADER_SUBGROUP_FEATURE_MASK;
}