SPIRV-Cross/reference/shaders-msl/asm/frag
Hans-Kristian Arntzen d92de00cc1 Rewrite how IDs are iterated over.
This is a fairly fundamental change on how IDs are handled.
It serves many purposes:

- Improve performance. We only need to iterate over IDs which are
  relevant at any one time.
- Makes sure we iterate through IDs in SPIR-V module declaration order
  rather than ID space. IDs don't have to be monotonically increasing,
  which was an assumption SPIRV-Cross used to have. It has apparently
  never been a problem until now.
- Support LUTs of structs. We do this by interleaving declaration of
  constants and struct types in SPIR-V module order.

To support this, the ParsedIR interface needed to change slightly.
Before setting any ID with variant_set<T> we let ParsedIR know
that an ID with a specific type has been added. The surface for change
should be minimal.

ParsedIR will maintain a per-type list of IDs which the cross-compiler
will need to consider for later.

Instead of looping over ir.ids[] (which can be extremely large), we loop
over types now, using:

ir.for_each_typed_id<SPIRVariable>([&](uint32_t id, SPIRVariable &var) {
	handle_variable(var);
});

Now we make sure that we're never looking at irrelevant types.
2019-01-10 12:52:56 +01:00
..
combined-sampler-reuse.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
default-member-names.asm.frag CompilerMSL support and tests for OpUndef. 2017-11-15 22:44:42 -05:00
empty-struct.asm.frag MSL: Properly support passing parameters by value. 2018-08-06 15:43:51 +02:00
extract-packed-from-composite.asm.frag Rewrite how IDs are iterated over. 2019-01-10 12:52:56 +01:00
frem.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
function-overload-alias.asm.frag Handle overloaded functions which share the same OpName. 2018-02-23 14:15:51 +01:00
image-extract-reuse.asm.frag Fix usage tracking issue for OpImage. 2018-04-27 11:11:24 +02:00
implicit-read-dep-phi.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
inf-nan-constant.asm.frag Add Windows support in Travis CI. 2018-10-27 00:22:30 +02:00
interpolation-qualifiers-struct.asm.frag MSL: Support global I/O block and struct Input/Output usage. 2018-09-13 16:04:24 +02:00
locations-components.asm.frag MSL: Account for components when assigning locations to varyings. 2018-09-06 13:52:33 -05:00
lut-promotion-initializer.asm.frag MSL: Support copying array of arrays. 2018-09-12 09:54:55 +02:00
min-max-clamp.invalid.asm.frag Update glslang and SPIRV-Tools. 2018-09-27 11:10:22 +02:00
op-constant-null.asm.frag Only declare typed initializer list for non-array types. 2018-09-10 10:04:17 +02:00
op-image-sampled-image.asm.frag Make the test case a lot simpler. 2018-10-04 11:26:46 -05:00
pass-by-value.asm.frag MSL: Properly support passing parameters by value. 2018-08-06 15:43:51 +02:00
phi-loop-variable.asm.frag Fix CFG for forwarded temporaries. 2018-01-18 12:11:33 +01:00
srem.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
texel-fetch-no-lod.asm.frag Deal with OpImageFetch without explicit LOD. 2018-04-30 10:54:44 +02:00
undef-variable-store.asm.frag For MSL, use {} instead of constructors to init OpUndef values. 2017-11-30 15:03:27 -05:00
unknown-depth-state.asm.frag Support OpTypeImage with depth == 2 (unknown) properly. 2018-07-04 14:26:23 +02:00
unord-relational-op.asm.frag Add tests for FUnord comparisons of vectors. 2018-09-01 12:42:07 -05:00
unreachable.asm.frag CompilerMSL support matrices & arrays in stage-in & stage-out. 2018-06-12 11:41:35 -04:00
vector-shuffle-oom.asm.frag Rewrite how IDs are iterated over. 2019-01-10 12:52:56 +01:00