SPIRV-Cross/reference/shaders/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.vk.asm.frag Fix case where SampledImage would get flushed to temporary. 2018-04-27 10:06:30 +02:00
combined-sampler-reuse.vk.asm.frag.vk Fix case where SampledImage would get flushed to temporary. 2018-04-27 10:06:30 +02:00
complex-name-workarounds.asm.frag Sanitize underscores in general, not just for members. 2018-06-04 10:13:57 +02:00
composite-construct-struct-no-swizzle.asm.frag Do not merge swizzles for anything other than vectors. 2018-01-22 09:52:57 +01:00
default-member-names.asm.frag Add test for default member names. 2017-07-29 21:58:37 +02:00
empty-struct.asm.frag Support empty structs. 2018-04-05 16:26:54 +02:00
for-loop-phi-only-continue.asm.frag Add test case for phi-only continue block. 2018-08-06 14:06:40 +02:00
frem.asm.frag Add OpFRem tests. 2018-02-15 13:36:59 +01:00
function-overload-alias.asm.frag Handle overloaded functions which share the same OpName. 2018-02-23 14:15:51 +01:00
hlsl-sample-cmp-level-zero-cube.asm.frag Support SampleCmpLevelZero on cubes as well. 2017-07-24 09:28:24 +02:00
hlsl-sample-cmp-level-zero.asm.frag Implement workaround for textureLod on 2D array shadow. 2017-06-23 09:45:42 +02:00
image-extract-reuse.asm.frag Fix usage tracking issue for OpImage. 2018-04-27 11:11:24 +02:00
image-fetch-no-sampler.asm.vk.frag Add test for texelFetch without sampler. 2018-02-21 13:45:59 +01:00
image-fetch-no-sampler.asm.vk.frag.vk Use GL_EXT_samplerless_texture_functions in Vulkan GLSL. 2018-09-27 13:36:38 +02:00
image-query-no-sampler.vk.asm.frag Build combined dummy samplers for Query functions without sampler as well. 2018-04-30 12:08:33 +02:00
image-query-no-sampler.vk.asm.frag.vk Use GL_EXT_samplerless_texture_functions in Vulkan GLSL. 2018-09-27 13:36:38 +02:00
implicit-read-dep-phi.asm.frag Add test shader where a phi variable invalidates a temporary. 2018-03-09 14:42:26 +01:00
inf-nan-constant-double.asm.frag Add Windows support in Travis CI. 2018-10-27 00:22:30 +02:00
inf-nan-constant.asm.frag Add Windows support in Travis CI. 2018-10-27 00:22:30 +02:00
invalidation.asm.frag Implement workaround for textureLod on 2D array shadow. 2017-06-23 09:45:42 +02:00
locations-components.asm.frag Support Component decoration in GLSL. 2018-09-10 12:13:26 +02:00
loop-body-dominator-continue-access.asm.frag Add test for continue block lifting. 2017-12-05 17:44:52 +01:00
loop-header-to-continue.asm.frag Emit complex continue blocks "properly". 2018-03-08 17:59:21 +01:00
loop-merge-to-continue.asm.frag Add some test shaders for special merge methods. 2018-03-08 16:48:50 +01:00
lut-promotion-initializer.asm.frag Add LUT test cases for OpVariable with initializer. 2018-07-05 14:51:07 +02:00
multi-for-loop-init.asm.frag Do not use inline for-loop initializers with different types. 2018-01-16 10:27:58 +01:00
op-constant-null.asm.frag Rewrite how IDs are iterated over. 2019-01-10 12:52:56 +01:00
op-phi-swap-continue-block.asm.frag Deal with phi copies which happen inside continue blocks. 2019-01-07 14:24:07 +01: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
sampler-buffer-array-without-sampler.asm.frag Fix case where SampledImage would get flushed to temporary. 2018-04-27 10:06:30 +02:00
sampler-buffer-without-sampler.asm.frag Rewrite everything to use Bitset rather than uint64_t. 2018-03-12 13:24:14 +01:00
selection-merge-to-continue.asm.frag Add some test shaders for special merge methods. 2018-03-08 16:48:50 +01:00
srem.asm.frag Add reference files for SREM. 2018-05-24 10:26:11 +02:00
struct-composite-extract-swizzle.asm.frag Do not allow base expressions when extracting struct members. 2017-11-20 21:32:13 +01:00
switch-label-shared-block.asm.frag Deal with switch case labels which share a block. 2018-06-20 10:49:28 +02:00
switch-merge-to-continue.asm.frag Add some test shaders for special merge methods. 2018-03-08 16:48:50 +01:00
temporary-name-alias.asm.frag Fix name aliasing for temporary variables. 2018-03-24 01:53:49 +01:00
temporary-phi-hoisting.asm.frag Fix CFG for forwarded temporaries. 2018-01-18 12:11:33 +01: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 Fix edge-case where do/while body is a dominator. 2017-08-02 11:58:24 +02:00
unknown-depth-state.asm.vk.frag Support OpTypeImage with depth == 2 (unknown) properly. 2018-07-04 14:26:23 +02:00
unknown-depth-state.asm.vk.frag.vk Support OpTypeImage with depth == 2 (unknown) properly. 2018-07-04 14:26:23 +02:00
unreachable.asm.frag Fix CFG::update_common_dominator. 2018-01-24 20:32:11 +01:00
vector-shuffle-oom.asm.frag Expand the implementation of inherit_expression_dependencies. 2018-03-09 13:21:38 +01:00