Hans-Kristian Arntzen
03ee71e86c
Add test for pure initializer gl_FragDepth.
...
Tests that the builtin is considered active.
2021-01-07 15:32:15 +01:00
Hans-Kristian Arntzen
3776d8978c
GLSL: Force block declaration if clip/cull is used in tesc.
2021-01-07 15:32:15 +01:00
Hans-Kristian Arntzen
6a3ea0385e
GLSL: Add test for initializing tess level output.
2021-01-05 12:12:26 +01:00
Hans-Kristian Arntzen
175381fe08
GLSL: Handle some extreme edge cases in Output variable initialization.
...
Deal with patch blocks, arrays of patch blocks, arrays of blocks, etc.
2021-01-05 12:06:36 +01:00
Hans-Kristian Arntzen
a1c784f002
More robust handling of initialized output builtin variables.
2021-01-04 19:12:43 +01:00
Hans-Kristian Arntzen
9a304fe931
Handle output IO block initializers more robustly.
2021-01-04 19:04:10 +01:00
Hans-Kristian Arntzen
ddb3c65648
Handle reserved identifiers for functions.
...
gl_ identifiers are already handled by fixups, so remove redundant code.
2021-01-04 10:00:12 +01:00
Hans-Kristian Arntzen
c8765a75f2
GLSL: Fix KHR subgroup extension table for subgroups.
2020-12-11 12:26:43 +01:00
Hans-Kristian Arntzen
762c3082ae
Merge pull request #1564 from KhronosGroup/fix-1558
...
GLSL: Emit nonuniformEXT in correct place for late-combined samplers.
2020-12-07 14:07:38 +01:00
Hans-Kristian Arntzen
a11c4780d0
GLSL: Emit nonuniformEXT in correct place for late-combined samplers.
...
Need to emit nonuniformEXT(sampler2D()) since constructor expressions in
Vulkan GLSL do not propgate the nonuniform qualifier.
2020-12-07 13:00:15 +01:00
Hans-Kristian Arntzen
dc940846d7
GLSL/HLSL: Disallow VariablePointers capability outright.
...
Cannot be supported, error out early.
2020-12-07 12:16:02 +01:00
Hans-Kristian Arntzen
e07f0a9df5
GLSL: Fix buffer_reference with aliased names.
2020-11-23 16:36:49 +01:00
Hans-Kristian Arntzen
6a614cc7f7
Normalize all internal workaround methods to use spv prefix.
...
We have been interchanging spv and SPIRV_Cross_ for a while, which
causes weirdness since we don't explicitly ban SPIRV_Cross identifiers,
as these identifiers are generally used for interface variable
workarounds.
2020-11-23 15:42:27 +01:00
Hans-Kristian Arntzen
71fcf0d9e6
Update texture gather test result.
2020-11-08 13:54:30 +01:00
Hans-Kristian Arntzen
db13762297
MSL: Fix regression in image gather handling.
...
It was not always possible to get backing variable for a late-combined
image sampler.
2020-11-06 16:21:30 +01:00
criss
6402586015
Updated ref file for subgroups_basicvoteballot.vk.comp
2020-11-02 18:40:56 +01:00
Hans-Kristian Arntzen
439b666829
GLSL: Fix nonuniformEXT injection.
...
Needs to consider that other expressions might be using brackets as well
...
2020-10-30 14:11:16 +01:00
Hans-Kristian Arntzen
542d460364
Handle case where block is loop header, continue AND break block.
2020-10-27 12:29:08 +01:00
Hans-Kristian Arntzen
5619329665
Style nits for GL subgroup implementation.
2020-10-08 13:25:29 +02:00
Hans-Kristian Arntzen
a6f6547cf1
Add missing VK variant of the test file.
2020-10-08 12:22:45 +02:00
Hans-Kristian Arntzen
28994a3186
Update GL subgroup test file.
2020-10-08 12:22:24 +02:00
criss
db52e277b9
Resolved issues 1350, 1351, 1352
2020-10-08 12:14:52 +02:00
Hans-Kristian Arntzen
54cc0b01f6
Deal with case where a selection construct conditionally merges/breaks.
2020-09-17 12:02:43 +02:00
Hans-Kristian Arntzen
66afe8c499
Implement a simple evaluator of specialization constants.
...
In some cases, we need to get a literal value from a spec constant op.
Mostly relevant when emitting buffers, so implement a 32-bit integer
scalar subset of the evaluator. Can be extended as needed to support
evaluating any specialization constant operation.
2020-09-14 11:45:59 +02:00
Hans-Kristian Arntzen
a07441568e
Overhaul how we deal with reserved identifiers.
...
- Do not silently drop reserved identifiers in the parser. This makes it
possible to reflect identifiers which are reserved by the
cross-compiler module.
- Instead of dropping the name, emit _RESERVED_IDENTIFIER_FIXUP in the
source to make it clear that a name has been rewritten.
- Document what is reserved and not.
2020-08-21 16:33:27 +02:00
Hans-Kristian Arntzen
8a1843ab20
Add some test cases for complex type aliasing scenario.
2020-07-29 13:02:52 +02:00
Hans-Kristian Arntzen
aac6885950
GLSL: Be more aggressive about using type_alias.
...
To facilitate an improved linking-by-name use case for older GL,
we will be more aggressive about merging struct definitions, even for
rather unrelated cases where we don't strictly need to use type aliases.
2020-07-29 12:48:41 +02:00
Hans-Kristian Arntzen
57c93d44ac
GLSL: Add option to force flattening IO blocks.
...
It is not always desirable to use actual blocks.
A prime example in the case where EXT_shader_io_blocks is not supported
on the target implementation.
2020-07-28 15:16:06 +02:00
Hans-Kristian Arntzen
70f17142de
GLSL: Fix nested legacy switch workarounds.
2020-06-30 12:02:24 +02:00
Hans-Kristian Arntzen
b1082c10af
Merge pull request #1410 from KhronosGroup/fix-1406
...
GLSL: Support switch more properly in legacy ESSL
2020-06-29 15:22:39 +02:00
Hans-Kristian Arntzen
bae76d7915
GLSL: Use for-loop fallback instead of do/while for legacy ESSL.
...
do/while loops are not guaranteed to be supported in ESSL 1.0 / OpenGLES
2.0 implementations.
2020-06-29 12:50:31 +02:00
Hans-Kristian Arntzen
3afbfdb090
Implement context-sensitive expression read tracking.
...
When inside a loop, treat any read of outer expressions to happen
multiple times, forcing a temporary of said outer expressions.
This avoids the problem where we can end up relying on loop-invariant code motion to happen in the
compiler when converting optimized shaders.
2020-06-29 12:20:35 +02:00
Hans-Kristian Arntzen
05188aca69
Fix bug with control dependent expression tracking.
...
For a direct branch without merge, we lost control dependent
expressions.
2020-06-29 10:55:50 +02:00
Hans-Kristian Arntzen
eb0f0323d3
HLSL: Workaround FXC bugs with degenerate switch blocks.
...
When we see a switch block which only contains one default block, emit a
do {} while(false) statement instead, which is far more idiomatic and
readable anyways.
2020-06-23 15:39:04 +02:00
dan sinclair
0abc017501
Roll deps and update tests.
...
This CL rolls the GLSlang, SPIRV-Tools and SPIRV-Headers dependencies
and updates the various test files.
2020-06-22 09:33:29 -04:00
Hans-Kristian Arntzen
f141521ebe
Fix duplicated initialization for loop variables with initializers.
2020-06-19 10:51:00 +02:00
Hans-Kristian Arntzen
f383cc98f2
GLSL: Handle the rest of GL_ARB_sparse_texture_clamp.
...
Missed these in initial sparse implementation.
2020-06-08 13:40:11 +02:00
Hans-Kristian Arntzen
857e1c445c
GLSL: Support uint code for sparse residency query.
2020-06-08 11:40:02 +02:00
Hans-Kristian Arntzen
275974e062
GLSL: Implement sparse feedback.
2020-06-04 15:50:28 +02:00
Hans-Kristian Arntzen
0ebb88cc39
MSL: Redirect member indices when buffer has been sorted by Offset.
...
If a buffer rewrites its Offsets, all member references to that struct
are invalidated, and must be redirected, do so in to_member_reference,
but there might be other places where this is needed. Fix as required.
SPIR-V code relying on this is somewhat questionable, but seems to be
in-spec.
2020-04-30 11:48:53 +02:00
Hans-Kristian Arntzen
9b7140e2ba
Implement OpAtomicLoad/OpAtomicStore.
...
Need some emulation on GLSL/HLSL, fix bug with atomic store on MSL.
2020-04-27 12:11:46 +02:00
Hans-Kristian Arntzen
5e5d1c27ce
GLSL: Support f16x2 <-> f32 bitcast.
...
There is no native formulation, so introduce a concept of a "complex"
bitcast to handle odd-ball cases which have no native unary operation.
2020-04-21 23:27:33 +02:00
Hans-Kristian Arntzen
b8905bbd95
Add support for forcefully zero-initialized variables.
...
Useful to better support certain platforms which require all variables
to be initialized to something.
2020-03-26 13:38:27 +01:00
Hans-Kristian Arntzen
04e877df12
GLSL: Implement GL_EXT_shader_framebuffer_fetch.
2020-03-19 14:53:39 +01:00
Hans-Kristian Arntzen
05004a57ea
GLSL/HLSL: Fix nonuniform qualifier for SSBO atomics.
2020-03-19 12:05:27 +01:00
Hans-Kristian Arntzen
a3d3c80dd7
GLSL/HLSL: Implement nonuniform qualifier for image atomics.
2020-03-19 11:35:29 +01:00
Hans-Kristian Arntzen
f79c1e2fed
Deal with illegal names in types as well.
...
- Fixes issue with clip_distance flattening in MSL where member to
flatten from would come from to_member_name, where it should have used
the builtin name directly. This member name was modified by this patch
and broke clip distance test shaders.
- Some cleanups with ir.meta, use ir.find_meta instead to not create
unnecessary hashmap nodes.
2020-01-16 10:34:49 +01:00
Hans-Kristian Arntzen
5253da9e63
GLSL: Deal with sign in subgroup Min/Max operations.
2020-01-09 12:35:14 +01:00
Hans-Kristian Arntzen
9012a39b60
Basic implementation of OpCopyLogical.
2020-01-06 11:47:26 +01:00
Dan Sinclair
f40c629821
Roll SPIRV-Tools, SPIRV-Headers and GLSLang
...
This CL updates the three depdencies and updates the tests to handle the
new validation errors which are produced.
2019-12-02 16:17:21 -05:00