This series mainly changes the way patch constant outputs are generated in hull shaders to always use a private array variable. This is done to fix several issues in the current imlementation, and to avoid excessive complexity in dealing with patch constants which stem from DXBC's design:
1) Tessellation factors and regular patch constants share the same register space in DXBC and can both be dynamically or statically indexed. The current implementation only works correctly in case tessellation factors do not share registers with regular outputs, and does not support all indexing patterns, leading to invalid code being generated in some cases.
2) Join phases can read patch constants written by a fork phase, also with dynamic indexing. However, the index ranges used by the join phase are not known at the time the fork phase is compiled.
With these changes, tessellation shaders work correctly in Shadow of the Tomb Raider, which previously contained invalid SPIR-V and would crash the game if enabled.
Note that enabling the tessellation option in the game triggers a separate issue related to descriptor updates, which will have to be addressed separately.