Commit Graph

1748 Commits

Author SHA1 Message Date
teoxoy
f48174a0b4 [spv-out] use OpCopyObject for matrix identity casts 2022-05-12 22:15:45 -07:00
teoxoy
b7ff50619c [spv-out] use OpCopyObject for bool - bool conversion due to OpBitcast not being feasible for booleans 2022-05-12 22:15:45 -07:00
teoxoy
afb6504b8b add support for identity matrix constructor 2022-05-12 22:15:45 -07:00
Connor Fitzgerald
95d5d165fb
[valid] Fix bitflag assignments (#1915) 2022-05-12 13:10:17 +00:00
teoxoy
b688584d87 [msl-out] fix pointers to private or workgroup address spaces possibly being read only 2022-05-11 20:10:18 -07:00
teoxoy
fea33c682e [wgsl-in] fix incr/decr not matching ValuePointer 2022-05-11 20:01:46 -07:00
Igor Shaposhnik
8db27c49f8 [wgsl] Reserve binding_array 2022-05-11 13:41:24 +02:00
Hasan Ali
205ea6cc5c Fix hlsl output for writes to scalar/vector storage buffer 2022-05-10 22:46:47 +02:00
teoxoy
b3d5e6d807 [msl-out] zero init variables in function address space 2022-05-10 10:44:40 +02:00
teoxoy
239bbbbed4 [spv-out] zero init variables in function and private address spaces 2022-05-10 10:44:40 +02:00
teoxoy
ceb92921c2 remove named expression entry for phony assignment 2022-05-10 10:43:25 +02:00
teoxoy
66337af310 add TODOs for handling undefined behavior 2022-05-09 20:48:09 -07:00
teoxoy
ecd6d4e4aa [spv-in] translate OpSMod correctly 2022-05-09 20:48:09 -07:00
teoxoy
7109cffb20 [spv-out] use SRem instead of SMod 2022-05-09 20:48:09 -07:00
teoxoy
0d4098d634 [spv-in] translate OpFMod correctly 2022-05-09 20:48:09 -07:00
teoxoy
c03d840755 [glsl-in] translate mod fn correctly 2022-05-09 20:48:09 -07:00
teoxoy
c584331f39 [hlsl-out] use fmod instead of % 2022-05-09 20:48:09 -07:00
Teodor Tanasoaia
e312a7adeb
[hlsl-out] use wrapped constructors when loading from storage address space (#1893) 2022-05-09 20:40:42 -07:00
Hiroaki Yutani
af6e2fc7ab Describe the usage of cargo run 2022-05-09 23:29:00 +02:00
Hiroaki Yutani
f1d72f8433 Show naga-cli instead of cargo run on README 2022-05-09 23:29:00 +02:00
Hasan Ali
934fa16919
Implement reverseBits and countOneBits for SPIR-V (#1897)
* Implement reverseBits and countOneBits for spir-v

* Update tests

* Fix type error for glsl countOneBits implementation
2022-05-09 23:24:28 +02:00
João Capucho
cf32c2b7f3 glsl-out: Fix feature search in expressions
It was also searching in all entry points instead of only in the current
one.

All samples queries need the ARB_shader_texture_image_samples extension
so we need to check if any samples queries are made and if so request
the extension.
2022-05-05 19:06:33 +01:00
teoxoy
1869c6831e [hlsl-out] zero init struct constructor 2022-05-03 19:51:51 +02:00
Mehmet Oguz Derin
9c8a51830c Use Unicode 14 for WGSL
The unicode-xid crate just had a release with Unicode 14 data, which the WGSL spec requires.
2022-05-02 15:34:13 +02:00
Jim Blandy
57e1793143 Properly check that user-defined IO uses IO-shareable types.
Only numeric scalars and vectors, and structs whose members are such
values, are permitted as the types of user-defined IO.
2022-05-02 10:28:16 +02:00
Jim Blandy
dec07027ee Split out check_one_validation macro from check_validation.
The new `check_one_validation` macro permits the source code to be a
computed expression, not just a string literal. This also cleans up
some of the handling of the optional guard expression.
2022-05-02 10:28:16 +02:00
Jim Blandy
a8e1e11437 Rename check_validation_error macro to check_validation.
The macro can check for both success and failure, so the new name is
more accurate, and shorter.
2022-05-02 10:28:16 +02:00
João Capucho
883a88580f glsl-in: Apply comments 2022-05-01 13:52:04 -07:00
João Capucho
6a62d009ea glsl-in: Improve the context emitter interface
Adds a new method `emit_restart` to perform the common operation of flushing
the `emitter` to the body and starting it again.

Adds documentation to all context emitter related methods
2022-05-01 13:52:04 -07:00
João Capucho
1c02de537b glsl-in: Fix the ternary to behave as an if
The GLSL specification defines that only one of the branches should be
evaluated making the ternary operator syntatic sugar for an `if`.
2022-05-01 13:52:04 -07:00
Jim Blandy
2571039af0 Factor out code for deciding which pointers can be arguments. 2022-05-01 12:27:40 -07:00
teoxoy
0d3b9bfe45 update readme 2022-05-01 12:16:10 -07:00
Jim Blandy
fae939f537 [glsl-in] Simplify control flow in search for main. 2022-05-01 00:29:17 +01:00
Jim Blandy
115a810981
[glsl-in] Use std::mem::take as appropriate. (#1878) 2022-04-30 15:09:35 -04:00
Noel Tautges
a99fc27dc1 Change !0 to <type>::MAX or -1, depending on signedness 2022-04-30 10:36:00 -07:00
Jim Blandy
7b8d257043 Correct error message for Handle index overflow.
This function is used from both `Arena` and `UniqueArena`. When its
code moved from `Arena` to `Handle`, the error message was adapted
incorrectly.
2022-04-30 10:18:19 -07:00
Jim Blandy
e8723219b7 Validate ValuePointer exactly like a Pointer to a Scalar.
A `ValuePointer` type should always be handled exactly like the
equivalent `Pointer` to `Scalar` type. To this end:

- Adjust the handling of `TypeFlags::ARGUMENT`.

- Neither `Pointer` nor `ValuePointer` types are ever `DATA`.
2022-04-30 10:17:05 -07:00
Jim Blandy
5f4a070504 Simplify type handling in VaryingContext.
When `VaryingContext::validate` discovers that it needs to examine
each member of a struct, pass the type as an argument to `validate`
and `validate_impl`, rather than mutating `self.ty` on each iteration
of the loop. This matches the way we're handling the binding, and
avoids stashing per-iteration state in a surprising place.

This should have no effect on execution.
2022-04-30 10:12:43 -07:00
Jim Blandy
a06b604b80 Rename type flags to better align with the current WGSL spec.
TypeFlags::INTERFACE -> TypeFlags::IO_SHARED
(WGSL §4.4.4's "IO-shareable types")

TypeFLags::HOST_SHARED -> TypeFlags::HOST_SHAREABLE
(WGSL §4.4.5's "Host-shareable types")
2022-04-29 15:25:22 -07:00
Igor Shaposhnik
f76af4e53a [wgsl] Remove buffer, texture, in, out, input, output from reserved keywords 2022-04-29 20:06:09 +02:00
Teodor Tanasoaia
f2e7818e71
[wgsl-in] implement firstTrailingBit/firstLeadingBit u32 overloads (#1865)
* [wgsl-in] implement firstTrailingBit/firstLeadingBit u32 overloads

* fix MSL type issue

reverts b9162e443d
2022-04-26 22:25:53 -07:00
teoxoy
062b66ca31 implement phony assignment 2022-04-26 21:40:31 -07:00
Jim Blandy
01212b24b9 Document TypeInner::BindingArray. 2022-04-25 23:42:11 -07:00
Noel Tautges
9b7fe8803d
Clarify accepted types for Expression::AccessIndex (#1862)
* Clarify accepted types for `AccessIndex` and remove `Constant` fragment

* Remove spaces

Will I ever learn to run `cargo fmt`  before pushing? The answer is probably yes, after this repeated embarrassment
2022-04-25 21:31:10 -07:00
Connor Fitzgerald
1aa9154964
Binding arrays play nice with bounds checks (#1855) 2022-04-25 04:17:51 +00:00
Connor Fitzgerald
ad28396851
Implement Binding Arrays (#1845) 2022-04-19 14:23:07 -04:00
teoxoy
850565243d replace unicode-id with unicode-xid 2022-04-18 13:03:37 -07:00
Jim Blandy
0aa6b6902b [hlsl-out] Flesh out matrix handling documentation. 2022-04-18 08:36:51 -07:00
teoxoy
94467c770f fix bitflags min version 2022-04-18 08:08:22 -07:00
teoxoy
0e2bb0194b refactor consume_token fn body 2022-04-17 21:01:01 -07:00