Dzmitry Malyshau
6df9656e96
spv-out: Force wrapping of push constant structs
2021-12-16 16:21:06 -05:00
Dzmitry Malyshau
7bb886bf36
Enforce casting width better, fix IEqual/INotEqual in spv
2021-12-16 16:14:56 -05:00
João Capucho
12baa1e909
spv-in: Implement OpCopyObject
...
Treat it as a noop since the IR has no concept of copying objects
2021-12-16 13:11:20 -05:00
João Capucho
2a8d64fc59
spv-in: Implement remaining sign agnostic ops
2021-12-16 11:22:16 -05:00
João Capucho
cf0c31cc85
spv-in: Allow branch weights in OpBranchConditional
2021-12-16 10:58:27 -05:00
João Capucho
9c75f3cdce
glsl-in: Flatten entry point arguments
...
The IR doesn't allow having structs has bindings for entry point
input/output, so the glsl frontend must flatten them.
Glsl defines that the locations are sequential from the block base location.
2021-12-16 10:55:06 -05:00
João Capucho
049b48b319
spv-in: Remove if when both branches are equal
2021-12-15 23:55:20 -05:00
João Capucho
4334f0e6a9
Support bitwise And on booleans
2021-12-15 23:53:23 -05:00
João Capucho
c64d5eff50
Support bitwise Or on booleans
2021-12-15 23:53:23 -05:00
Dzmitry Malyshau
8ffd6ba929
Remove top_level property of structs
2021-12-15 09:33:33 -05:00
Jim Blandy
3867ef4f6c
[msl-out] Correctly construct out-of-bounds values for all types.
2021-12-14 23:00:03 -05:00
Jim Blandy
8a2fbd360d
[msl-out] Add log tracing for functions and entry points.
2021-12-14 23:00:03 -05:00
Markus
c4b331acb4
readme: list supported GLSL versions for glsl-in ( #1586 )
2021-12-11 21:29:49 -05:00
Lain-dono
e200e44ede
[spv-out] Fixing incorrect pack/unpack ( #1587 )
...
* [spv-out] Fixing incorrect pack/unpack
* [spv-out] Fixing incorrect pack/unpack: make tests happy
* [spv-out] Fixing incorrect pack/unpack: remove unexpected newline
2021-12-11 21:29:31 -05:00
Jim Blandy
f51f468a47
[msl-out] Implement index bounds check policies for non-texture accesses.
2021-12-06 15:53:41 -05:00
Jim Blandy
e8f564dc83
[spv-out] Add comment about AccessIndex on non-pointer values.
2021-12-06 15:53:41 -05:00
Jim Blandy
61e3af2989
[msl-out] Move Statement::Store handling into its own function.
2021-12-06 15:53:41 -05:00
Jim Blandy
17398e761f
[msl-out] Move Expression::Load handling into its own function.
...
No changes in behavior.
2021-12-06 15:53:41 -05:00
Jim Blandy
840bbaffcc
[msl-out] Rename put_dynamic_array_length, make it take a global.
2021-12-06 15:53:41 -05:00
Jim Blandy
89cc21ef43
[spv-out] BlockContext::write_expression_pointer doc fix.
2021-12-06 15:53:41 -05:00
Jim Blandy
6912cb3594
[spv-out] Move ExpressionPointer to back::spv::block, remove pub.
2021-12-06 15:53:41 -05:00
Igor Shaposhnik
9cc2b730b7
[glsl-out] Add note about supported GLSL versions
2021-12-06 12:31:31 -05:00
João Capucho
14719553a6
glsl-in: fix pre/postfix ops on swizzles
2021-12-05 22:16:28 -05:00
Dzmitry Malyshau
c69f676609
glsl: reflect textures without samplers
2021-12-04 12:19:36 -05:00
Dzmitry Malyshau
6fbd668bd3
Add missing GLSL tests
2021-12-02 13:11:23 -05:00
João Capucho
9fac7c48a6
glsl-in: Allow vector/matrix in vector constructor
...
The glsl spec defines that vector constructors flatten their arguments
and consume them in order, ignoring the remaining arguments if there are
more than needed
2021-11-29 11:06:18 -05:00
Igor Shaposhnik
dba6beb941
[wgsl-in] Don't allow redefinition of module scope identifiers
2021-11-28 21:23:22 -05:00
Igor Shaposhnik
20b96ef47b
Avoid function name redefinition in tests
2021-11-28 21:23:22 -05:00
Dzmitry Malyshau
daa61b5fcb
Fix shapshots to run without deserialize feature
2021-11-26 12:16:50 -05:00
Dzmitry Malyshau
74132ba947
Actually disable explicit types on most WGSL outputs
2021-11-26 11:36:46 -05:00
Dzmitry Malyshau
f4ba74544a
Refactor snapshot test arguments to avoid checking for deserialize feature too often.
...
We can safely assume that deserialize is enabled for all output tests.
Supporting other modes of operation has low utility.
This change also adds an option to skip the explicit types for WGSL output.
2021-11-26 11:36:46 -05:00
Igor Shaposhnik
7c2fdf94c0
[wgsl-out] Add double underscores as a reserved prefix
2021-11-26 09:36:18 -05:00
Dzmitry Malyshau
ddbc1c4b1f
WGSL: use underscore prefix like the other backends
2021-11-25 16:23:24 -05:00
Igor Shaposhnik
2107b20561
[wgsl-in] Don't allow keywords to be used as identifiers
2021-11-24 16:34:17 -05:00
Igor Shaposhnik
cb6d3fa815
[wgsl] Move backend keyword list into its own module
2021-11-24 16:34:17 -05:00
Igor Shaposhnik
ae0c7355ca
[wgsl] Remove IsInf and IsNan
2021-11-24 16:05:03 -05:00
Jim Blandy
7fd172515d
[spv-out] Don't support arguments pointing to unsized types.
...
Functions with such arguments could never have been called anyway, and now they
are forbidden in validation.
2021-11-18 17:39:56 -05:00
Jim Blandy
cc930180d9
Tighten checks on pointers to unsized values, and pointer arguments.
...
Pointers should not be `DATA`: they can never be stored in anything. (Function
arguments are not storage; they're like `let` bindings.)
Un-`SIZED` values may only live in the `Storage` storage class, so creating
pointers to them in other storage classes is meaningless.
The `ARGUMENT` flag should be set only on pointers in those storage classes that
are permitted to be passed to functions.
See comments in code for details.
Fixes #1513 .
2021-11-18 17:39:56 -05:00
Jim Blandy
633f1b3377
[wgsl-in] Don't be confused by pointers to globals.
...
The WGSL front end knows that globals in the `Handle` storage class do not
produce references, but it attempts to manage this in two places which trip over
each other. As a consequence, referring to a `let` binding holding a pointer to
a global flips the variable's type from WGSL `ptr` to WGSL reference, with
bewildering consequences.
2021-11-18 17:39:56 -05:00
Layl Bongers
29571cc4cf
Add multiview wgsl builtin
2021-11-18 09:57:37 -05:00
Jim Blandy
6a5b33fa24
Move BoundsCheckPolicy/Policies into proc, from back. ( #1537 )
2021-11-17 19:15:59 -08:00
bjorn3
38366e382f
Switch to rustc-hash
...
See gfx-rs/rspirv#221 for the rationale behind this change
2021-11-16 23:51:19 -05:00
Igor Shaposhnik
30a0a37af0
Update dependencies
2021-11-16 23:46:54 -05:00
Jim Blandy
ce18eba695
Check that stores are permitted by the pointer's storage access.
...
Fixes #1533 .
2021-11-16 23:40:56 -05:00
Jim Blandy
3d6cbcf8a6
Remove IndexableLength::Specializable variant.
...
Specializable constants are no longer permitted as array lengths, so this case
should not arise in valid code.
2021-11-16 09:12:42 -05:00
Jim Blandy
90daa9edfe
Forbid specializable constants as array lengths.
...
Only the SPIR-V front end can produce such array types, and it seems that our
back ends don't support this case well.
2021-11-16 09:12:42 -05:00
Boris-Chengbiao Zhou
1dcde48d09
[valid] Check that switches have a default case ( #1529 )
...
From the WGSL spec: "Each switch statement must have exactly one default clause."
2021-11-15 00:07:55 +00:00
Jay Oster
66c3499df8
[spv-out] Fix scalar-times-matrix operations ( #1524 )
2021-11-14 19:07:38 -05:00
Jim Blandy
e69a70bfb7
[spv-in] Permit pointers to runtime arrays only in StorageBuffer. ( #1522 )
...
* [spv-in] Change shadow.spv test input to use StorageBuffer.
The ecosystem around Naga will generally not be able to use Vulkan adapters that
don't support the SPV_KHR_storage_buffer_storage_class (which was incorporated
into SPIR-V 1.3), so we can assume it is present.
Changing the test not to use runtime-sized arrays in the Uniform storage class
will allow Naga to tighten up some validation checks.
* [spv-in] Permit pointers to runtime arrays only in StorageBuffer.
Fixes #1519 .
2021-11-10 16:58:57 -05:00
João Capucho
eda078d736
[glsl-in] Allow more operations as access bases ( #1521 )
2021-11-10 12:16:19 -05:00