mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
nir: don't pack varyings ints with floats unless flat
Fixes: 1c9c42d16b ("nir: add varying component packing helpers")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
9dd737bb02
commit
a068958692
1 changed files with 7 additions and 4 deletions
|
|
@ -196,9 +196,12 @@ nir_remove_unused_varyings(nir_shader *producer, nir_shader *consumer)
|
|||
}
|
||||
|
||||
static uint8_t
|
||||
get_interp_type(nir_variable *var, bool default_to_smooth_interp)
|
||||
get_interp_type(nir_variable *var, const struct glsl_type *type,
|
||||
bool default_to_smooth_interp)
|
||||
{
|
||||
if (var->data.interpolation != INTERP_MODE_NONE)
|
||||
if (glsl_type_is_integer(type))
|
||||
return INTERP_MODE_FLAT;
|
||||
else if (var->data.interpolation != INTERP_MODE_NONE)
|
||||
return var->data.interpolation;
|
||||
else if (default_to_smooth_interp)
|
||||
return INTERP_MODE_SMOOTH;
|
||||
|
|
@ -253,7 +256,7 @@ get_slot_component_masks_and_interp_types(struct exec_list *var_list,
|
|||
unsigned comps_slot2 = 0;
|
||||
for (unsigned i = 0; i < slots; i++) {
|
||||
interp_type[location + i] =
|
||||
get_interp_type(var, default_to_smooth_interp);
|
||||
get_interp_type(var, type, default_to_smooth_interp);
|
||||
interp_loc[location + i] = get_interp_loc(var);
|
||||
|
||||
if (dual_slot) {
|
||||
|
|
@ -425,7 +428,7 @@ compact_components(nir_shader *producer, nir_shader *consumer, uint8_t *comps,
|
|||
continue;
|
||||
|
||||
bool found_new_offset = false;
|
||||
uint8_t interp = get_interp_type(var, default_to_smooth_interp);
|
||||
uint8_t interp = get_interp_type(var, type, default_to_smooth_interp);
|
||||
for (; cursor[interp] < 32; cursor[interp]++) {
|
||||
uint8_t cursor_used_comps = comps[cursor[interp]];
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue