Hans-Kristian Arntzen
fe8848a6f2
Roll dependencies.
2022-01-05 14:56:01 +01:00
Sebastián Aedo
905b8244e7
Clamp vector element access to vector size.
...
In cases where we know the size of the vector and the index at compile
time, we can check if it's accessing in bounds and rely in undefined
behavior otherwise.
Signed-off-by: Sebastián Aedo <saedo@codeweavers.com>
2021-12-07 16:00:06 -03:00
Sebastián Aedo
6d8302ef14
MSL: Add 64 bit switch support
...
Add 64 bit switch support for MSL version 2.2.
* Also fixes a wrong endianness conversion.
Signed-off-by: Sebastián Aedo <saedo@codeweavers.com>
2021-11-26 15:54:56 -03:00
Hans-Kristian Arntzen
f1b411c9e8
GLSL: Deal with buffer_reference_align.
...
This is somewhat awkward to support, but the best effort we can do here
is to analyze various Load/Store opcodes and deduce the ideal overall
alignment based on this. This is not a 100% perfect solution, but should
be correct for any reasonable use case.
Also fix various nitpicks with BDA support while I'm at it.
2021-11-07 17:11:46 +01:00
Hans-Kristian Arntzen
4561ecddbd
Handle Modf/Frexp in more cases.
...
Consider it a write to a variable, similar to OpStore.
2021-11-07 11:36:44 +01:00
Erfan Ahmadi
43eecb2360
SPIRV-Cross contribution needed for INTEL_fragment_shader_ordering
2021-10-25 10:50:10 +02:00
Bill Hollings
472f9d4f6d
Add tests for OpSpecConstantOp ops OpQuantizeToF16 and OpSRem.
...
Tests provided by @cdavis5e.
2021-09-05 16:51:04 -04:00
Hans-Kristian Arntzen
b8f1e71907
GLSL: Emit GL_EXT_buffer_reference_uvec2 as required.
2021-09-02 13:17:13 +02:00
Hans-Kristian Arntzen
5b227cc57c
GLSL: Implement GL_EXT_ray_query.
2021-07-19 14:01:21 +02:00
Hans-Kristian Arntzen
206ee8f171
GLSL: Support pervertexNV in NV barycentric extension.
2021-06-30 16:27:46 +02:00
Hans-Kristian Arntzen
8216e87f02
Handle SPIR-V 1.4 selection constructs.
...
Fix bug in to_trivial_mix_op, where we made a pre-1.4 assumption that
component count of selector is equal to value component count.
2021-06-28 12:23:44 +02:00
Hans-Kristian Arntzen
d62b3c2b92
GLSL: Implement control flow hints.
2021-06-03 12:01:49 +02:00
xndcn
02fb8f2a24
Add comment after inf/nan float number for clarifying.
2021-05-27 02:40:41 +08:00
Hans-Kristian Arntzen
e47a30e807
Honor NoContraction qualifier.
...
We'll need to force a temporary and mark it as precise.
MSL is a little weird here, but we can piggyback on top of the invariant
float math option here to force fma() operations everywhere.
2021-05-07 12:59:47 +02:00
Hans-Kristian Arntzen
6dbab0df47
Update reference output.
2021-05-07 11:12:22 +02:00
Hans-Kristian Arntzen
532f65583e
Rewrite how non-uniform qualifiers are handled.
...
Remove all shenanigans with propagation, and only consume nonuniform
qualifiers exactly where needed (last minute).
2021-04-22 16:03:08 +02:00
Hans-Kristian Arntzen
7ab3f3f74e
Deal better with CompositeExtract from constant composite.
...
There is no good reason for applications to emit this kind of code, but
some do. Special case this scenario.
2021-01-22 12:30:16 +01:00
Hans-Kristian Arntzen
66fb0bd9df
GLSL: Handle tracing against incoming payload/callable.
2021-01-22 11:23:04 +01:00
Hans-Kristian Arntzen
2097c30985
GLSL: Support both SPV_KHR_ray_tracing and NV_ray_tracing.
...
Fairly minor differences, so can keep them side by side without too much
effort. NV support is effectively deprecated now however.
- Add OpConvertUToAccelerationStructureKHR
- Ignore/Terminate ray is now a terminator in KHR, but a call in NV.
- Fix some bugs with reportIntersection.
2021-01-08 14:59:04 +01:00
Hans-Kristian Arntzen
a4a9b53b5b
MSL: Always enable Outputs in vertex stages.
...
Subsequent stages can legally attempt to read from these variables,
which causes compilation failure.
Always make sure we emit user outputs in vertex shaders if they are
active in the entry point.
2021-01-07 11:24:47 +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
c5826b4b69
GLSL: Emit storage qualifiers for buffer_reference.
2020-11-23 16:26:33 +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
683c3f5c3f
Merge pull request #1530 from rdb/legacy-glsl-round
...
GLSL: Provide round/roundEven for legacy GLSL
2020-11-07 16:40:18 +01:00
Hans-Kristian Arntzen
ea334c14bc
Merge pull request #1527 from rdb/legacy-transpose
...
GLSL: implement transpose() in GLSL 1.10 / ES 1.00
2020-11-07 16:37:59 +01:00
rdb
bf71994dae
GLSL: implement transpose() in GLSL 1.10 / ES 1.00
2020-11-06 22:27:54 +01:00
rdb
9e6e5d2738
GLSL: Fix round/roundEven for legacy GLSL.
2020-11-06 17:34:38 +01:00
rdb
e8c500ceef
GLSL: Fix support for textureLod in legacy vertex shaders
2020-11-06 16:37:27 +01:00
Hans-Kristian Arntzen
e47561a28b
GLSL: Support a workaround for loading row-major matrices.
...
On AMD Windows OpenGL, it has been reported that we need to load
matrices via a wrapper function.
2020-10-27 12:07:09 +01:00
Hans-Kristian Arntzen
e0c9aad934
GLSL: Add support for transform_feedback3 geometry streams.
2020-09-30 13:01:35 +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
dan sinclair
c4f3d4ae29
Roll GLSLang, SPIRV-Headers and SPIRV-Tools.
...
This Cl updates the various dependencies and the test file outputs.
2020-07-22 23:03:11 -04:00
dan sinclair
63fbdaca93
Roll deps.
...
This CL updates the GLSLang and SPIRV-Tools depedencies and updates test
files as needed.
2020-07-06 11:24:30 -04:00
Hans-Kristian Arntzen
2ac8f51b06
GLSL: Support I/O flattening with arrays as final type.
2020-07-06 09:18:30 +02:00
Hans-Kristian Arntzen
2d43103a55
GLSL: Support multi-level struct flattening for I/O.
2020-07-03 14:38:51 +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
4d79d634f5
GLSL: Implement switch on ESSL 1.0.
...
Cannot use switch on legacy ESSL, fallback to plain branches.
2020-06-29 13:35:46 +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
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
ef247e75ec
GLSL: Improve support for GL_ARB_shader_draw_parameters in desktop GLSL.
...
Opt-in to using the extension to support gl_InstanceIndex.
2020-05-22 12:53:34 +02:00
Hans-Kristian Arntzen
b4dd0b6fb1
GLSL: Add more test shaders for hit attribute types.
2020-05-20 15:07:50 +02:00
Hans-Kristian Arntzen
66ec3e3e54
GLSL: Support ray payloads and hit attributes declared as Block.
2020-05-20 15:07:47 +02:00
Hans-Kristian Arntzen
271ad33380
GLSL: Add some more focused RT test shaders.
2020-05-20 14:11:28 +02:00
Hans-Kristian Arntzen
86380acf4d
Support gl_InstanceID in RT shaders.
2020-05-08 13:39:43 +02:00
Asuka
55dfbead2f
GLSL/HLSL: Support packUint2x32 and unpackUint2x32
2020-04-21 11:34:12 +02:00
Hans-Kristian Arntzen
95cd20f1c7
Add test for disable-storage-image-qualifier-deduction.
2020-03-04 16:42:31 +01:00
Hans-Kristian Arntzen
655312cb47
GLSL: Support GL_ARB_enchanced_layouts for XFB.
2020-01-27 13:11:38 +01:00
Hans-Kristian Arntzen
55fe6050fe
GLSL: Implement geometry shader passthrough extension.
2020-01-15 16:18:29 +01:00