SPIRV-Cross/reference/shaders-msl/vert
Bill Hollings 3d4daab29d MSL: Support input/output blocks containing nested struct arrays
Fixes numerous CTS tests of types
dEQP-VK.pipeline.interface_matching.vector_length.member_of_*,
passing complex nested structs between stages as stage I/O.

- Make add_composite_member_variable_to_interface_block() recursive to allow
  struct members to contain nested structs, building up member names and access
  chains recursively, and only add the resulting flattened leaf members to the
  synthetic input and output interface blocks.
- Recursively generate individual location numbers for the flattened members
  of the input/output block.
- Replace to_qualified_member_name() with append_member_name().
- Update add_variable_to_interface_block() to support arrays as struct members,
  adding a member to input and output interface blocks for each element of the array.
- Pass name qualifiers to add_plain_member_variable_to_interface_block() to allow
  struct members to be arrays of structs, building up member names and access chains,
  and adding multiple distinct flattened leaf members to the synthetic input and
  output interface blocks.
- Generate individual location numbers for the individual array members
  of the input/output block.
- SPIRVCrossDecorationInterfaceMemberIndex references the index of a member
  of a variable that is a struct type. The value is relative to the variable,
  and for structs nested within that top-level struct, the index value needs
  to take into consideration the members within those nested structs.
- Pass var_mbr_idx to add_plain_member_variable_to_interface_block() and
  add_composite_member_variable_to_interface_block(), start at zero for each
  variable, and increment for each member or nested member within that variable.
- Add unit test shaders-msl/vert/out-block-with-nested-struct-array.vert
- Add unit test shaders-msl/vert/out-block-with-struct-array.vert
- Add unit test shaders-msl/tese/in-block-with-nested-struct.tese
2022-03-03 10:18:40 +01:00
..
array-component-io.for-tess.vert MSL: Handle array with component when we cannot rely on user() attrib. 2021-05-21 13:46:33 +02:00
array-component-io.vert MSL: Handle array with component when we cannot rely on user() attrib. 2021-05-21 13:46:33 +02:00
basic.capture.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
basic.for-tess.vert MSL: Add support for processing more than one patch per workgroup. 2020-07-23 17:59:54 -05:00
basic.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
clip-distance-block.no-user-varying.vert MSL: Allow removing clip distance user varyings. 2020-04-20 09:58:40 +02:00
clip-distance-block.vert MSL: Support ClipDistance as an input stage variable. 2019-12-02 13:19:42 +01:00
copy.flatten.vert MSL: Selectively enable fast-math in MSL code to match Vulkan CTS results. 2021-09-22 18:58:31 -04:00
dynamic.flatten.vert MSL: Selectively enable fast-math in MSL code to match Vulkan CTS results. 2021-09-22 18:58:31 -04:00
float-math.invariant-float-math.vert MSL: Support synthetic functions in function constants. 2021-09-28 19:10:16 -04:00
float-math.vert Added '--msl-invariant-float-math' option and new test case for it. 2019-10-09 14:03:06 -04:00
functions.vert MSL: Support synthetic functions in function constants. 2021-09-28 19:10:16 -04:00
implicit-position-1.vert MSL: Always return [[position]] when required. 2021-02-15 12:57:37 +01:00
implicit-position-2.vert MSL: Always return [[position]] when required. 2021-02-15 12:57:37 +01:00
in_out_array_mat.vert MSL: Don't emit weird reference type for spvUnsafeArray types. 2021-04-19 12:10:49 +02:00
interface-block-block-composites.frag Updates for pull request #1162 2019-09-24 14:35:25 -04:00
interface-block-block-composites.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
interpolation-qualifiers-block.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
interpolation-qualifiers.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
invariant.msl21.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
leaf-function.capture.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
leaf-function.for-tess.vert MSL: Add support for processing more than one patch per workgroup. 2020-07-23 17:59:54 -05:00
no_stage_out.for-tess.vert Overhaul how we deal with reserved identifiers. 2020-08-21 16:33:27 +02:00
no_stage_out.vert Overhaul how we deal with reserved identifiers. 2020-08-21 16:33:27 +02:00
no_stage_out.write_buff_atomic.vert Overhaul how we deal with reserved identifiers. 2020-08-21 16:33:27 +02:00
no_stage_out.write_buff.vert Overhaul how we deal with reserved identifiers. 2020-08-21 16:33:27 +02:00
no_stage_out.write_tex.vert Overhaul how we deal with reserved identifiers. 2020-08-21 16:33:27 +02:00
no-contraction.vert MSL: Support synthetic functions in function constants. 2021-09-28 19:10:16 -04:00
no-disable-vertex-out.frag-output.vert MSL: Only disable output variables in fragment shaders. 2020-04-15 12:14:57 -05:00
out_block.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
out-block-with-nested-struct-array.vert MSL: Support input/output blocks containing nested struct arrays 2022-03-03 10:18:40 +01:00
out-block-with-struct-array.vert MSL: Support input/output blocks containing nested struct arrays 2022-03-03 10:18:40 +01:00
packed_matrix.vert MSL: Selectively enable fast-math in MSL code to match Vulkan CTS results. 2021-09-22 18:58:31 -04:00
packed-bool2-to-packed_uint2.vert MSL: Avoid packed arrays in more cases. 2020-05-06 10:27:12 +02:00
packed-bool-to-uint.vert MSL: Avoid packed arrays in more cases. 2020-05-06 10:27:12 +02:00
pointsize.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
read-from-row-major-array.vert Roll GLSLang, SPIRV-Headers and SPIRV-Tools. 2020-07-22 23:03:11 -04:00
resource-arrays-leaf.ios.vert MSL: Rethink how opaque descriptors are passed to leaf functions. 2022-01-18 14:40:52 +01:00
resource-arrays.ios.vert MSL: Do not declare array of UBO/SSBO as spvUnsafeArray<T>. 2019-10-26 16:10:08 +02:00
return-array.force-native-array.vert MSL: Support synthetic functions in function constants. 2021-09-28 19:10:16 -04:00
return-array.vert MSL: Enable proper value types for return and value-passing of arrays. 2019-10-24 13:03:38 +02:00
set_builtin_in_func.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
sign-int-types.vert MSL: Support synthetic functions in function constants. 2021-09-28 19:10:16 -04:00
signedness-mismatch.shader-inputs.vert MSL: Fix up input variables' vector lengths in all stages. 2020-06-16 14:50:30 -05:00
texture_buffer.texture-buffer-native.msl21.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
texture_buffer.vert MSL: Support synthetic functions in function constants. 2021-09-28 19:10:16 -04:00
ubo.alignment.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
ubo.vert Updates for pull request #1162 2019-09-24 14:35:25 -04:00
uniform-struct-out-of-order-offests.vert MSL: Fix type redirection when struct members are reordered to align with offsets. 2021-10-28 10:16:34 -04:00
uniform-struct-packing-nested.vert MSL: Remove over-zealous check for struct packing compatibility. 2021-10-28 19:36:32 -04:00
unused-position.vert MSL: Fix duplicate gl_Position outputs when gl_Position defined but unused. 2021-08-16 11:23:15 -04:00