teoxoy
6854b0ab4f
disallow ptr to workgroup fn arguments
2023-10-16 19:03:14 -07:00
teoxoy
ea83f62a94
[msl-out] add min version check for ray tracing
2023-10-16 19:02:58 -07:00
teoxoy
89ab5902b2
[msl-out] add min version check for primitive_id
2023-10-16 19:02:58 -07:00
teoxoy
46c472731f
[msl-out] add min version checks for binding arrays
2023-10-16 19:02:58 -07:00
teoxoy
f4a43b1bf0
[msl-out] add min version check for read-write storage textures
2023-10-16 19:02:58 -07:00
teoxoy
0c63be8904
[msl-out] add min version check for reverse_bits, extract_bits & insert_bits
2023-10-16 19:02:58 -07:00
teoxoy
a7146b07a1
[msl-out] add min version check for base_instance & instance_id
2023-10-16 19:02:58 -07:00
teoxoy
0340c2e685
[msl] add undocumented checks
2023-10-16 19:02:58 -07:00
teoxoy
0cfd2213cc
[msl-out] remove min version check on storage address space
2023-10-16 19:02:58 -07:00
Jim Blandy
68ce1ebfa2
[glsl-in, glsl-out] Fix warnings about redundant doc link targets.
2023-10-16 17:28:56 -07:00
teoxoy
d71f2541a3
remove IsFinite & IsNormal completely
2023-10-16 16:24:52 -07:00
teoxoy
04562dea26
Split UnaryOperator::Not into UnaryOperator::LogicalNot & UnaryOperator::BitwiseNot
...
since it should not be valid to use the logical and bitwise not operators interchangeably
also, don't allow `UnaryOperator::Negate` to operate on booleans (no frontend/backend supports this)
2023-10-16 16:22:06 -07:00
teoxoy
841d360f06
[valid] avoid OOM with large sparse resource bindings
2023-10-16 14:23:05 -07:00
Jim Blandy
9eb3a1dc8a
[wgsl-out] Generate correct code for bit complement on integers.
...
Remove incorrect special case for `UnaryOperator::Not` on vectors.
2023-10-12 13:18:19 +02:00
Jim Blandy
1b485ea925
[wgsl-in] Don't double-initialize variables local to loops.
2023-10-12 13:13:26 +02:00
teoxoy
f7e15bf391
[valid] check local variable initializer is const
2023-10-12 13:13:26 +02:00
Jim Blandy
a3ba3259fe
Some documentation for ConstantEvaluator.
2023-10-12 13:13:26 +02:00
Jim Blandy
504b33d8cd
[wgsl-in] Document necessity of force_non_const.
2023-10-12 13:13:26 +02:00
teoxoy
a77f6ff51c
[const-eval] error on NaN and infinite floats
2023-10-12 13:13:26 +02:00
Jim Blandy
ca2e810492
Properly recognize Literal expressions as non-dynamic indices. ( #2537 )
...
Restore `negative_index` test in `tests/wgsl-errors.rs`, as part of
the `invalid_arrays` test function.
2023-10-12 13:13:26 +02:00
teoxoy
c5b2afaf78
[const-eval] error on invalid binary operations
2023-10-12 13:13:26 +02:00
teoxoy
13a0ed4eae
[const-eval] evaluate BinaryOperator::Modulo correctly (use the truncated version instead of floored)
2023-10-12 13:13:26 +02:00
teoxoy
a9c28d47c3
[const-eval] allow bitcast, select and relational functions for GLSL since they should be supported
2023-10-12 13:13:26 +02:00
teoxoy
4945b7a803
[const-eval] implement pow & clamp built-in functions properly
2023-10-12 13:13:26 +02:00
teoxoy
c46a69d993
[const-eval] account for ZeroValue index for AccessIndex expression
2023-10-12 13:13:26 +02:00
teoxoy
d50c384328
[const-eval] check number of arguments for math functions
2023-10-12 13:13:26 +02:00
teoxoy
c2141ab804
[const-eval] add wgsl/glsl behavior switch to evaluator
2023-10-12 13:13:26 +02:00
teoxoy
55dd0e1fbc
[wgsl-in] don't treat let declarations as const declarations
2023-10-12 13:13:26 +02:00
teoxoy
3d346977e5
avoid having constants pointing to other constants
2023-10-12 13:13:26 +02:00
teoxoy
648540999e
[wgsl-in] use ast spans for errors since they are more accurate
2023-10-12 13:13:26 +02:00
Jim Blandy
c16a298cac
Let ConstantEvaluator see through Constant exprs in Splat exprs.
2023-10-12 13:13:26 +02:00
Jim Blandy
3e4d565576
Let ConstantEvaluator see through Constant exprs in Compose exprs.
2023-10-12 13:13:26 +02:00
teoxoy
c33d7ee40d
add an expression constness tracker
2023-10-12 13:13:26 +02:00
Jim Blandy
1a4b526d9a
ConstantEvaluator::swizzle: Handle vector concatenation and indexing ( #2485 )
...
* ConstantEvaluator::swizzle: Handle vector concatenation, indexing.
* Handle vector Compose expressions nested two deep.
* Move `flatten_compose` to `proc`, and make it a free function.
* [spv-out] Ensure that we flatten Compose for OpConstantCompose.
2023-10-12 13:13:26 +02:00
Jim Blandy
f0ac838019
ConstantEvaluator::copy_from: Rename argument handle to expr. ( #2490 )
2023-10-12 13:13:26 +02:00
Jim Blandy
44ca6ac5b3
Document some parts of ConstantEvaluator. ( #2489 )
2023-10-12 13:13:26 +02:00
Jim Blandy
ca69a6b372
Add a bit of logging to ConstantEvaluator. ( #2488 )
2023-10-12 13:13:26 +02:00
Jim Blandy
aa041aafbd
Replace ConstantEvaluator's closure with optional emitter data.
...
Instead of letting the user supply an arbitrary closure for appending
expressions, instead give `ConstantEvaluator` an `Option` that holds
an `Emitter` to interrupt, and a `block` to add any new `Emit`
statements to.
2023-10-12 13:13:26 +02:00
Jim Blandy
77851ebfb6
Move front::Emitter to proc.
...
With the addition of the constant evaluator to the `proc` module, it
is now concerned with constructing expressions. Any code that
constructs expressions will generally also need to deal with `Emit`
statements, which are handled by the `Emitter` type. However,
`Emitter` is private to the `front` module. This patch moves it to
`proc` and makes it accessible to both the constant evaluator and the
front ends.
2023-10-12 13:13:26 +02:00
teoxoy
0e4ac2a98c
[glsl-in] set initializer of local variables
2023-10-12 13:13:26 +02:00
teoxoy
fe7bc01d27
[glsl-in] const eval as soon as possible
2023-10-12 13:13:26 +02:00
teoxoy
3fb4c333a7
use LocalVariable init
2023-10-12 13:13:26 +02:00
teoxoy
a730236b68
[wgsl-in] eagerly evaluate const-expressions
...
[wgsl-in] support const-expressions in attributes
allow `Splat` as an evaluated const-expression type
2023-10-12 13:13:26 +02:00
Nicolas Silva
33b75a27d9
[wgsl-in] Parse the bgra8unorm storage format ( #2550 )
2023-10-10 09:13:19 -07:00
Nicolas Silva
3c7dbc4016
Add StorageFormat::Bgra8Unorm
2023-10-09 17:04:03 +02:00
Jim Blandy
fe484b3a1b
Require that Function and Private variables be CONSTRUCTIBLE.
...
Change the validator to enforce WGSL's requirement that all variables
in the `function` and `private` address spaces must have constructible
types.
Mark the `RayQuery` type as `CONSTRUCTIBLE`, since it is intended to
be used for local variables.
Add a regression test.
2023-10-09 12:27:05 +02:00
Jim Blandy
fa0fed100e
compact: Don't assume Emitted expressions are live.
...
If an `Emit` statement covers an `Expression` that is not otherwise
used by any `Statement`, remove it from the `Arena` anyway. An `Emit`
statement controls when `Expression`s are evaluated, but it doesn't
have any side effects, so unless an expression is used by some other
statement, it's not necessary to the program.
2023-10-09 12:21:43 +02:00
Jim Blandy
e820c33abf
compact: Minor cleanups.
...
- Simplify visibility markings.
- Remove some testing comments. (Tests carried out.)
- Remove some commented-out code.
2023-10-09 12:21:43 +02:00
Jim Blandy
c6716033da
Improve docs for FunctionInfo::process_expression.
2023-10-06 18:43:22 +02:00
Jim Blandy
31f547580c
Remove expression argument to FunctionInfo::process_expression.
...
We're already passing the handle and the arena, so it's superfluous.
2023-10-06 18:43:22 +02:00