nir/opt_varyings: completely exclude mediump from type changes

It broke mediump XFB, which needs the correct type for the up-conversion.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35315>
This commit is contained in:
Marek Olšák 2025-06-02 12:03:29 -04:00 committed by Marge Bot
parent cf26760218
commit e3d122ed7b

View file

@ -4186,7 +4186,6 @@ relocate_slot(struct linkage_info *linkage, struct scalar_slot *slot,
}
nir_io_semantics sem = nir_intrinsic_io_semantics(intr);
unsigned bit_size = nir_intrinsic_infos[intr->intrinsic].has_dest ? intr->def.bit_size : intr->src[0].ssa->bit_size;
/* Set all types to float to facilitate full IO vectorization.
* This is skipped only if mediump is not lowered to 16 bits.
@ -4198,7 +4197,7 @@ relocate_slot(struct linkage_info *linkage, struct scalar_slot *slot,
* Set nir_shader_compiler_options::lower_mediump_io if you want to
* lower mediump to 16 bits in the GLSL linker before this pass.
*/
if (bit_size != 32 || !sem.medium_precision) {
if (!sem.medium_precision) {
nir_alu_type type = nir_intrinsic_has_src_type(intr) ? nir_intrinsic_src_type(intr) : nir_intrinsic_dest_type(intr);
type = nir_alu_type_get_type_size(type) | nir_type_float;