46c48ee6b5
Firstly, never flatten inputs or outputs in multi-patch mode. The main scenario where we do need to care is Block IO. In this case, we should only flatten the top-level member, and after that we use access chains as normal. Using structs in Input storage class is now possible as well. We don't need to consider per-location fixups at all here. In Vulkan, IO structs must match exactly. Only plain vectors can have smaller vector sizes as a special case. |
||
---|---|---|
.. | ||
write-outputs-block.mask-location-0.for-tess.vert | ||
write-outputs-block.mask-location-0.vert | ||
write-outputs-block.mask-location-1.for-tess.vert | ||
write-outputs-block.mask-location-1.vert | ||
write-outputs.mask-clip-distance.vert | ||
write-outputs.mask-location-0.for-tess.vert | ||
write-outputs.mask-location-0.msl2.tesc | ||
write-outputs.mask-location-0.tesc | ||
write-outputs.mask-location-0.vert | ||
write-outputs.mask-location-1.for-tess.vert | ||
write-outputs.mask-location-1.msl2.tesc | ||
write-outputs.mask-location-1.tesc | ||
write-outputs.mask-location-1.vert | ||
write-outputs.mask-point-size.for-tess.vert | ||
write-outputs.mask-point-size.tesc | ||
write-outputs.mask-point-size.vert | ||
write-outputs.mask-position.tesc |