mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 07:00:12 +01:00
nir/linking_helpers: don't promote interpolated varyings to flat
Even the most flexible interpolation that we have in NIR options (nir_io_has_flexible_input_interpolation_except_flat) doesn't allow mixing flat and non-flat in the same vec4. This (legacy) optimization can't promote interpolated inputs to flat if it doesn't consider the interpolation mode of the whole vec4 slot. Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32424>
This commit is contained in:
parent
16f7d22394
commit
a618a2aa8b
1 changed files with 5 additions and 16 deletions
|
|
@ -1409,22 +1409,11 @@ nir_link_opt_varyings(nir_shader *producer, nir_shader *consumer)
|
||||||
}
|
}
|
||||||
|
|
||||||
nir_scalar uni_scalar;
|
nir_scalar uni_scalar;
|
||||||
if (is_direct_uniform_load(ssa, &uni_scalar)) {
|
if (consumer->options->max_varying_expression_cost >= 2 &&
|
||||||
if (consumer->options->max_varying_expression_cost >= 2) {
|
is_direct_uniform_load(ssa, &uni_scalar)) {
|
||||||
progress |= replace_varying_input_by_uniform_load(consumer, intr,
|
progress |= replace_varying_input_by_uniform_load(consumer, intr,
|
||||||
&uni_scalar);
|
&uni_scalar);
|
||||||
continue;
|
continue;
|
||||||
} else {
|
|
||||||
nir_variable *in_var = get_matching_input_var(consumer, out_var);
|
|
||||||
/* The varying is loaded from same uniform, so no need to do any
|
|
||||||
* interpolation. Mark it as flat explicitly.
|
|
||||||
*/
|
|
||||||
if (!consumer->options->no_integers &&
|
|
||||||
in_var && in_var->data.interpolation <= INTERP_MODE_NOPERSPECTIVE) {
|
|
||||||
in_var->data.interpolation = INTERP_MODE_FLAT;
|
|
||||||
out_var->data.interpolation = INTERP_MODE_FLAT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct hash_entry *entry = _mesa_hash_table_search(varying_values, ssa);
|
struct hash_entry *entry = _mesa_hash_table_search(varying_values, ssa);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue