intr->num_components, intr->dest.ssa.bit_size, NULL);
if (intr->intrinsic == nir_intrinsic_interp_deref_at_offset ||
- intr->intrinsic == nir_intrinsic_interp_deref_at_sample) {
+ intr->intrinsic == nir_intrinsic_interp_deref_at_sample ||
+ intr->intrinsic == nir_intrinsic_interp_deref_at_vertex) {
nir_src_copy(&element_intr->src[1], &intr->src[1],
&element_intr->instr);
}
intr->intrinsic != nir_intrinsic_store_deref &&
intr->intrinsic != nir_intrinsic_interp_deref_at_centroid &&
intr->intrinsic != nir_intrinsic_interp_deref_at_sample &&
- intr->intrinsic != nir_intrinsic_interp_deref_at_offset)
+ intr->intrinsic != nir_intrinsic_interp_deref_at_offset &&
+ intr->intrinsic != nir_intrinsic_interp_deref_at_vertex)
continue;
nir_deref_instr *deref = nir_src_as_deref(intr->src[0]);
intr->intrinsic != nir_intrinsic_store_deref &&
intr->intrinsic != nir_intrinsic_interp_deref_at_centroid &&
intr->intrinsic != nir_intrinsic_interp_deref_at_sample &&
- intr->intrinsic != nir_intrinsic_interp_deref_at_offset)
+ intr->intrinsic != nir_intrinsic_interp_deref_at_offset &&
+ intr->intrinsic != nir_intrinsic_interp_deref_at_vertex)
continue;
nir_deref_instr *deref = nir_src_as_deref(intr->src[0]);
if (var->data.compact)
continue;
+ /* Per-view variables are expected to remain arrays. */
+ if (var->data.per_view)
+ continue;
+
/* Skip indirects */
int loc = var->data.location * 4 + var->data.location_frac;
if (BITSET_TEST(indirects, loc))
case nir_intrinsic_interp_deref_at_centroid:
case nir_intrinsic_interp_deref_at_sample:
case nir_intrinsic_interp_deref_at_offset:
+ case nir_intrinsic_interp_deref_at_vertex:
case nir_intrinsic_load_deref:
case nir_intrinsic_store_deref:
if ((mask & nir_var_shader_in && mode == nir_var_shader_in) ||
struct hash_table *split_inputs = _mesa_pointer_hash_table_create(NULL);
struct hash_table *split_outputs = _mesa_pointer_hash_table_create(NULL);
- BITSET_DECLARE(indirects, 4 * MAX_VARYINGS_INCL_PATCH) = {};
+ BITSET_DECLARE(indirects, 4 * VARYING_SLOT_TESS_MAX) = {0};
lower_io_arrays_to_elements(shader, nir_var_shader_out,
indirects, split_outputs, true);
struct hash_table *split_inputs = _mesa_pointer_hash_table_create(NULL);
struct hash_table *split_outputs = _mesa_pointer_hash_table_create(NULL);
- BITSET_DECLARE(indirects, 4 * MAX_VARYINGS_INCL_PATCH) = {};
+ BITSET_DECLARE(indirects, 4 * VARYING_SLOT_TESS_MAX) = {0};
create_indirects_mask(producer, indirects, nir_var_shader_out);
create_indirects_mask(consumer, indirects, nir_var_shader_in);