Commit Graph

1237 Commits

Author SHA1 Message Date
João Capucho
b11f094287 [wgsl-out] Write pointers types and loads 2021-08-17 13:39:31 -04:00
Dzmitry Malyshau
939e8f0a7b [msl-out] insert padding struct initialization 2021-08-17 00:23:07 -04:00
Dzmitry Malyshau
ab1e932e16 [glsl-out] use common bake prefix 2021-08-17 00:22:51 -04:00
Dzmitry Malyshau
c398102332 [msl-out]: avoid inner structure for run-time array sizes 2021-08-16 13:10:56 -04:00
Dzmitry Malyshau
ec64eaae6b [spv-in] work around storage image access 2021-08-16 12:20:40 -04:00
Dzmitry Malyshau
220081c4b2 [msl-out] pass-through workgroup storage 2021-08-16 12:20:07 -04:00
Dzmitry Malyshau
8e0295178c [spv-in] allow float16 and float64 2021-08-16 12:14:10 -04:00
Jim Blandy
4b1363e122 [spv-out] Creating SPIR-V types is not, in fact, fallible.
There's no need for functions that construct SPIR-V types to be fallible, or for
their callers to check for errors.

As a consequence of this change, there may be other functions that no longer
need to be fallible, but Rust doesn't warn and Clippy doesn't lint, so we'll
have to address them as they come up.
2021-08-16 12:02:15 -04:00
João Capucho
c6a6afdf37 [spv-in] Parse OpNoLine 2021-08-16 10:26:21 -04:00
Dzmitry Malyshau
7613798aed [wgsl-in] parse identifiers before builtin function calls 2021-08-15 23:20:04 -04:00
Kneelawk
d7af2a84b7 Move case-closing-brace writer inside cases loop 2021-08-15 22:39:23 -04:00
Dzmitry Malyshau
2dfcb7fcf0 [spv-in] treat Grad on depth textures as level 0 2021-08-15 22:25:20 -04:00
Dzmitry Malyshau
0d829d6bb0 hlsl-out: relational expressions 2021-08-15 22:22:22 -04:00
Dzmitry Malyshau
5415d8c7c4 Fix atomics in workgroup storage 2021-08-13 23:01:25 -04:00
Dzmitry Malyshau
69b70f8cc3 [hlsl-out] reorder fields when composing structs 2021-08-13 01:45:43 -04:00
Dzmitry Malyshau
27e4ba59e4 Validate that SampleLevel::Exact isn't used for comparisons 2021-08-13 01:45:43 -04:00
Dzmitry Malyshau
e59582469c [hlsl-out] basic support for pointer arguments 2021-08-13 01:45:43 -04:00
Dzmitry Malyshau
1907a92928 Fix deserialization of arenas 2021-08-12 22:51:29 -04:00
Dzmitry Malyshau
0feea58a34
[hlsl-out] re-order interface struct fields (#1189) 2021-08-12 13:08:29 -04:00
Dzmitry Malyshau
d55645ac1e
Fix bitflags at 1.2 (#1190) 2021-08-12 00:57:13 -04:00
Jim Blandy
47b9f4a2e5
[spv-out] Writer::write_texture_coordinates: Fix result type. (#1188)
Some SPIR-V texture access instructions take coordinates as integers, others as
floats. The types of coordinates in Naga expressions generally match those in
SPIR-V, but Naga indices for arrayed textures are always integers, whereas
SPIR-V combines coordinates and array indices into a single vector, so indices
need to be cast to match the coordinate component type.

This commit makes `write_texture_coordinates` properly cast array indices to
match the coordinates' component type before combining them all into a single
result vector.

Fixes #1186.
2021-08-11 14:55:54 -07:00
Alex Es
fd70116668
Proof of concept for "span" feature, with WGSL & GLSL parsing augmented. (#1092)
* Proof of concept for "span" feature, with WGSL parsing augmented.

* Review:

1) add_span was actually a bad idea, make it set_span and add
set_span_if_unknown too.
2) panics on getting/setting span for invalid handles.
3) only set span for constants with a name
4) don't overwrite spans for types.

* Added spans to blocks & more expressions getting spans in frontends.

Definitely the shotgunny type of commit, but what can you do. The design
I went with made spans mandatory to specify, so I had to go and wire
them through wherever I could.

* Moved Block to a separate module, +clippy

* More spans for types in GLSL.

* Remove pointless body method.

* Make Arena interface require spans.

Another shotgun commit, oh boy...

* Fix tests.

My loathsome habit to "quickly fix things along the way" made a lot of
extra work for me here, having to fix my "fixes" for WGSL parser.

* Rustfmt + clippy.

* Fix compile-errors with span feature enabled.

* Nuked set_span* from orbit. Deleting code feels great!

* Code review - move feature flags inside functions.

* Fix build with "deserialize" feature enabled.
2021-08-11 16:04:32 -04:00
Jim Blandy
e2fc7ffd03 [spv-out]: Use OpCompositeConstruct's schmear behavior.
In `back::spv::Writer::write_texture_coordinates`, OpCompositeConstruct can
concatenate scalars and vectors, so when combining coordinates with an array
index, there is no need to extract the coordinate vector's components
individually: once the index has been converted to the appropriate component
type, it can be combined with the coordinates in a single instruction.
2021-08-11 11:22:43 -04:00
Jim Blandy
172f6bf62f [spv-out]: De-indent write_texture_coordinates with an early return.
No intended change in behavior.
2021-08-11 11:22:43 -04:00
Dzmitry Malyshau
67dd604b0c [wgsl-out] atomic load/stores, [glsl-out] revert the prefix 2021-08-10 21:48:02 -04:00
Dzmitry Malyshau
1121a815ac Separate enum for atomic binary operations 2021-08-10 21:48:02 -04:00
Dzmitry Malyshau
78f225a37a Implemented atomics in HLSL-out 2021-08-10 21:48:02 -04:00
Dzmitry Malyshau
bc4576c0a2 Make atomic operations to be statements 2021-08-10 21:48:02 -04:00
Dzmitry Malyshau
88c1c9037d Add atomic exchange function 2021-08-10 21:48:02 -04:00
Dzmitry Malyshau
8c371e8063 Atomic expressions, support in backends except HLSL and the validator. 2021-08-10 21:48:02 -04:00
Dzmitry Malyshau
33db45e681 Atomic parsing in WGSL 2021-08-10 21:48:02 -04:00
Dzmitry Malyshau
8cb09c24c5 Atomics in the IR 2021-08-10 21:48:02 -04:00
Connor Fitzgerald
551b711943 [spv-in] use grad image operand 2021-08-10 16:38:34 -04:00
João Capucho
e384bce771 [glsl-in] Don't clone HirExpr when lowering 2021-08-10 11:18:08 -04:00
Dzmitry Malyshau
07c286255d [spv-in] fix struct spans for layout-less structs 2021-08-09 21:19:31 -04:00
Dzmitry Malyshau
021bfd5289 [hlsl-out] fix member offset consideration for storage buffers 2021-08-09 16:45:07 -04:00
João Capucho
c73c1efe33 [glsl-in] Apply comments 2021-08-09 10:51:15 -04:00
João Capucho
b0b4891045 [glsl-in] Document public api 2021-08-09 10:51:15 -04:00
João Capucho
48a4a9b902 [glsl-in] Cleanup public api 2021-08-09 10:51:15 -04:00
João Capucho
1aaf77489b [glsl-in] Improve error api and make more errors deferred 2021-08-09 10:51:15 -04:00
João Capucho
f6e35f5b66 [glsl-in] Improved preprocessor and error handling 2021-08-09 10:51:15 -04:00
João Capucho
a8a316da15 [glsl-in] API revamp
The new api allows for reuse while keeping some allocations and to
please the borrow checker in future work, it also splits the parser into
logical modules to make it easier to work on.
2021-08-09 10:51:15 -04:00
João Capucho
0bd78ef85e [spv-out] Use NotEqual for boolean casts 2021-08-05 13:48:26 -04:00
Dzmitry Malyshau
7c3cc904a0 [spv-in] fix storage buffer access decorations 2021-08-05 12:59:19 -04:00
Zicklag
300039e247 Fix Invalid Type Attribute Error Message
The message previously made reference to the now-removed `access`
attribute.
2021-08-05 10:12:23 -04:00
Gordon-F
4080bfe502 Add vec select to operators snapshot 2021-08-05 09:43:47 -04:00
Gordon-F
b2e51c97c8 [glsl-out] Handle wgsl vector version of select 2021-08-05 09:43:47 -04:00
João Capucho
2ff7dcb417 [glsl-in] Fix mix ordering for boolean selector
The mix builtin is defined with the inverse order for it's arguments
compared to the IR when the selector is a boolean vector.
2021-08-04 12:39:36 -04:00
João Capucho
a1395ddb99 [glsl-in] Fix matrix constructor with a scalar
Glsl defines that if a matrix constructor is called with only a scalar
it's result will be the matrix where the scalar is used if the row and
column are equal and everywhere else a zero
2021-08-04 12:39:36 -04:00
João Capucho
151a36352e [glsl-in] Be more conservative with vector resizes 2021-08-04 12:39:36 -04:00