Commit Graph

3088 Commits

Author SHA1 Message Date
Bill Hollings
17dab614dc MSL: Support padding Metal argument buffer entries based on argument index.
If CompilerMSL::Options::pad_argument_buffer_resources enabled, Metal argument buffer
struct members are positionally aligned to their argument indexes by adding synthetic
padding members when needed. The types and sizes of these synthetic members are
identified in the resource_bindings vector provided through the API.

Add CompilerMSL::Options::pad_argument_buffer_resources to enable padding
Metal argument buffer structs to positionally match members to argument indexes.
Add MSLResourceBinding::base_type to identify resource type through API.
2021-04-13 19:01:20 -04:00
Hans-Kristian Arntzen
d2e1e7ba98 Fix Github CI in PRs. 2021-03-26 18:40:43 +01:00
Hans-Kristian Arntzen
28ae7b8f35
Merge pull request #1642 from mehmetoguzderin/msl-long-ulong-member
MSL: Support long ulong types in buffers in 2.3+.
2021-03-26 18:02:25 +01:00
Mehmet Oguz Derin
e2f7a753d2 Move condition to default block 2021-03-26 16:29:44 +03:00
Mehmet Oguz Derin
0a0c9db9be
MSL: Support long ulong types in buffers in 2.3+.
[Metal Shading Language Specification](https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf) states that:

> Note: As of Metal 2.3, Metal supports buffers that contain long or ulong data types.

This PR aims to support long and ulong data types in buffers for Metal 2.3+.
2021-03-26 02:41:26 +03:00
Hans-Kristian Arntzen
84d1f8aa2a
Use Github actions CI tag. 2021-03-12 15:36:03 +01:00
Hans-Kristian Arntzen
2e000a0be4 Add GitHub Actions script. 2021-03-12 15:03:39 +01:00
Hans-Kristian Arntzen
60aa24566e
Merge pull request #1633 from KhronosGroup/fix-1626
GLSL: Handle complex load/store scenarios to gl_SampleMask.
2021-03-09 15:17:21 +01:00
Hans-Kristian Arntzen
ee31e84e30 GLSL: Handle complex load/store scenarios to gl_SampleMask.
Need special workarounds to handle array load/store since array size is
unsized in GLSL, and array copy is not possible.
Also, consider bitcast for scalar loads and stores.
2021-03-09 10:25:03 +01:00
Hans-Kristian Arntzen
fb1f295aaf
Merge pull request #1635 from KhronosGroup/fix-1627
Handle edge cases in OpCopyMemory.
2021-03-09 10:21:35 +01:00
Hans-Kristian Arntzen
5d846acee5
Merge pull request #1634 from KhronosGroup/fix-1625
Handle logical subgroup arithmetic ops
2021-03-09 10:21:24 +01:00
Hans-Kristian Arntzen
0ac70fa7ca
Merge pull request #1632 from KhronosGroup/fix-1629
Throw if SPIR-V module has no entry points.
2021-03-09 10:21:10 +01:00
Hans-Kristian Arntzen
4ca06c7278 Handle edge cases in OpCopyMemory.
Implement this by synthesizing an OpLoad/OpStore pair instead.
2021-03-08 14:15:27 +01:00
Hans-Kristian Arntzen
aea6d29aa8 MSL: Add test for logical subgroup arith ops. 2021-03-08 12:57:37 +01:00
Hans-Kristian Arntzen
d6c2c1b39a HLSL: Support logical subgroup ops. 2021-03-08 12:52:03 +01:00
Hans-Kristian Arntzen
5570043af3 GLSL: Add support for Logical subgroup ops.
Completely missed these ...
2021-03-08 12:06:46 +01:00
Hans-Kristian Arntzen
bc4cb1b3c5 Throw if SPIR-V module has no entry points. 2021-03-08 10:40:19 +01:00
Hans-Kristian Arntzen
d57ab68a21
Merge pull request #1630 from KhronosGroup/fix-1628
MSL: Deal with pointer-to-pointer qualifier ordering.
2021-02-26 15:51:52 +01:00
Hans-Kristian Arntzen
97796e0609 MSL: Deal with pointer-to-pointer qualifier ordering. 2021-02-26 13:37:14 +01:00
Hans-Kristian Arntzen
621884d709
Merge pull request #1622 from KhronosGroup/fix-1619
MSL: Handle load and store to TessLevel array in TESC.
2021-02-17 20:46:06 +01:00
Hans-Kristian Arntzen
da238e5f12
Merge pull request #1623 from phuang/patch-2
Add two missing source files
2021-02-17 20:45:57 +01:00
Peng Huang
c66a571057
Add two missing source files 2021-02-17 11:14:04 -05:00
Hans-Kristian Arntzen
b1e36a1f78
Merge pull request #1621 from KhronosGroup/fix-1618
MSL: Fix automatic assign of builtin attributes in tessellation
2021-02-17 16:59:30 +01:00
Hans-Kristian Arntzen
85704f70bc MSL: Handle load and store to TessLevel array in TESC.
More edge cases ... :(
2021-02-17 13:26:08 +01:00
Hans-Kristian Arntzen
ce552f4f91 MSL: Gracefully assign automatic input locations to builtin attributes. 2021-02-17 12:29:19 +01:00
Hans-Kristian Arntzen
aa271c1460 MSL: Refactor out location consumption count computation. 2021-02-17 11:29:33 +01:00
Hans-Kristian Arntzen
6f1f6775f3 Add comment where aux image atomic buffers are reflected from.
They also use secondary bindings, not just samplers.
2021-02-17 10:42:58 +01:00
Hans-Kristian Arntzen
92d379bab4
Merge pull request #1620 from phuang/patch-1
Fix build errors on Windows
2021-02-17 10:30:10 +01:00
Peng Huang
bc3416a18f
Fix build errors on Windows
error:
clang-cl: error: unknown argument ignored in clang-cl: '-fno-exceptions'
2021-02-16 20:42:00 -05:00
Hans-Kristian Arntzen
bae17e8204
Merge pull request #1617 from KhronosGroup/fix-1608
MSL: Fixup type when using tessellation levels in TESC functions.
2021-02-16 11:10:07 +01:00
Hans-Kristian Arntzen
5789e3eed9
Merge pull request #1616 from KhronosGroup/fix-1609
MSL: Always return [[position]] when required.
2021-02-15 18:19:55 +01:00
Hans-Kristian Arntzen
daddbd4078 MSL: Fixup type when using tessellation levels in TESC functions.
Need to rewrite array size depending on execution mode.
2021-02-15 13:28:11 +01:00
Hans-Kristian Arntzen
0ad12a0036 MSL: Always return [[position]] when required. 2021-02-15 12:57:37 +01:00
Hans-Kristian Arntzen
05a1a07f70
Merge pull request #1615 from KhronosGroup/fix-1612
c: Add missing IOS_SUPPORT_BASE_VERTEX_INSTANCE option.
2021-02-15 11:45:20 +01:00
Hans-Kristian Arntzen
09dc76f68a c: Add missing IOS_SUPPORT_BASE_VERTEX_INSTANCE option. 2021-02-15 11:43:46 +01:00
Hans-Kristian Arntzen
8f5ab50fb8
Merge pull request #1614 from KhronosGroup/fix-1610
HLSL: Add vector to illegal names list.
2021-02-15 11:40:25 +01:00
Hans-Kristian Arntzen
21a931613e HLSL: Add vector to illegal names list. 2021-02-15 11:38:14 +01:00
Bill Hollings
4741bbaa64
Merge pull request #1606 from billhollings/position-invariance
Expose position invariance.
2021-01-29 13:36:15 -05:00
Bill Hollings
8e03cb60a5 Expose position invariance.
Used with MSL to determine whether to compile with invariance preserved.
2021-01-28 16:13:20 -05:00
Hans-Kristian Arntzen
84a41cd488
Merge pull request #1603 from KhronosGroup/small-improvements
Various small improvements and fixes
2021-01-22 16:30:57 +01:00
Hans-Kristian Arntzen
ea02a0c03a Check entry point variables in is_hidden_variables.
Need to be careful not to emit globals we're not supposed to.
2021-01-22 13:53:22 +01:00
Hans-Kristian Arntzen
4bedad3860 Handle nonuniformEXT qualifier for acceleration structures. 2021-01-22 13:13:56 +01: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
9acb9ec31f
Merge pull request #1594 from KhronosGroup/fix-1591
Fix pathological complexity explosion for certain shaders.
2021-01-15 10:46:23 +01:00
Hans-Kristian Arntzen
a5eaf2f44a
Merge pull request #1595 from KhronosGroup/copyright-update
meta: Update copyright headers to 2021.
2021-01-14 16:10:07 +01:00
Hans-Kristian Arntzen
4704482bbc meta: Update copyright headers to 2021. 2021-01-14 16:07:49 +01:00
Hans-Kristian Arntzen
4c866e4662 Fix pathological complexity explosion for certain shaders.
Certain shaders where functions have a *ton* of merging control flow
will end up with exponential time complexity to figure out parameter
preservation semantics.

The trivial fix to make it O(1) again is to terminate recursive traversal early if we've seen
the path before. Simple oversight :(
2021-01-14 16:00:10 +01:00
Hans-Kristian Arntzen
820179bf46
Merge pull request #1590 from KhronosGroup/fix-1584
Update ray-tracing support to include SPV_KHR_ray_tracing
2021-01-09 22:28:19 +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