Commit Graph

2186 Commits

Author SHA1 Message Date
Jim Blandy
860c200469 Give Validator::check_width its own error type, WidthError.
Later changes will use `check_width` in new functions. Separating out
`WidthError` will make it easier to incorporate `check_width`'s
results into its new callers'.
2023-10-19 17:55:04 +02:00
teoxoy
5b65f11e3c [refactor] make use of resolve_type wherever possible 2023-10-18 12:25:36 -07:00
Teodor Tanasoaia
e25280df93 [glsl/spv-out] Cull functions that should not be available for a given stage (#2531) 2023-10-18 12:50:52 +00:00
teoxoy
cf113bdb53 [spv-in] translate ModfStruct & FrexpStruct to their IR equivalents 2023-10-17 21:53:26 -07:00
teoxoy
4b7a555e9f [glsl-in] disable modf & frexp 2023-10-17 21:53:26 -07:00
teoxoy
5a0fb630da [valid] add Capabilities::CUBE_ARRAY_TEXTURES 2023-10-17 21:51:54 -07:00
Teodor Tanasoaia
de9913f476 [spv-in] remove spirv::Capability::ImageMSArray
as we don't support multisampled storage textures at all
2023-10-17 21:50:32 -07:00
teoxoy
2f6a32f5f9 [spv-in] remove spirv::Capability::InterpolationFunction
as we don't support the `InterpolateAtCentroid`, `InterpolateAtSample`, or `InterpolateAtOffset` `GLSL.std.450` extended instructions
2023-10-17 21:50:32 -07:00
teoxoy
7ee474b4a5 [spv-in] remove duplicated capabilities 2023-10-17 21:50:32 -07:00
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
4f453b4041 avoid const-evaluating the operators.wgsl snapshot 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
teoxoy
d8ceeae3b2 Avoid FXC's error X3694: race condition writing to shared resource detected 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
4e95667a1c [wgsl] test usage of constants in switch cases 2023-10-12 13:13:26 +02:00
teoxoy
5de27f2078 [wgsl] test const evaluation of division and multiplication 2023-10-12 13:13:26 +02:00
teoxoy
b95a72b2f6 [wgsl] test @workgroup_size attribute with constants 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
Jim Blandy
6bd15e4492 Add snapshot tests for constant evaluation of splats and composes. 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
ab177af3ba Test that only constant expressions are hoisted to initializers. 2023-10-12 13:13:26 +02:00
Jim Blandy
bdcb9f6f64 Split const-exprs.rs test into separate functions.
Also, just use a single out variable for each type. rather than
introducing a new output variable for every test we add.
2023-10-12 13:13:26 +02:00