Quick answer: SPIR-V Cross-output tessellation shader using wrong patch type? Default is triangles; specify if quads or isolines.

Quad tessellation domain in source; cross-output declares triangle patches; pipeline rejects.

Specify patch type

In tessellation control shader: layout(vertices = 4, quads, equal_spacing) out;

Or use simpler tessellation

If quads aren't required, triangle-only avoids the bug class. Pick simpler primitives.

Verify per backend

Some backends accept implicit defaults; others reject. Explicit is portable.

“Tessellation has multiple knobs. Explicit declarations are portable.”

Tessellation shaders are rare and bug-prone. Document the project's tessellation spec; consistent across shaders.

Related reading