We had been relying on glsl lowering to a vec4 output, but we can just do
a tiny override here to support compact variables and drop the lowering
pass.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21940>
*/
bool invariant = semantics.invariant;
+ unsigned num_slots = semantics.num_slots;
+ if (semantics.location == VARYING_SLOT_TESS_LEVEL_INNER ||
+ semantics.location == VARYING_SLOT_TESS_LEVEL_OUTER) {
+ /* Compact vars get a num_slots in NIR as number of components, but we
+ * want the number of vec4 slots here.
+ */
+ num_slots = 1;
+ }
+
out = ureg_DECL_output_layout(c->ureg,
semantic_name, semantic_index,
gs_streams,
base,
usage_mask,
array_id,
- semantics.num_slots,
+ num_slots,
invariant);
}