Commit Graph

1845 Commits

Author SHA1 Message Date
João Capucho
6d78f1c06d hlsl-out: Fix indentation for continuing block
The continuing block in hlsl was being generated with the same indentation as the loop body
2022-06-17 16:34:23 +02:00
João Capucho
cafdb160ae glsl-out: Fix indentation for continuing block 2022-06-17 16:17:22 +02:00
teoxoy
89f24b6cfe [msl-out] insert padding initialization for global constants 2022-06-17 10:55:28 +02:00
Jim Blandy
0b60f410ab [wgsl-in] Restore error in the case of bad scalar widths. 2022-06-17 01:31:59 +02:00
teoxoy
ad536ce0df [wgsl-in] remove unused code 2022-06-16 12:13:08 -07:00
teoxoy
531d563f0e [wgsl-in] implement complete validation for size and align attributes 2022-06-16 12:13:08 -07:00
teoxoy
46387e90ce unify alignment related functionality 2022-06-16 12:13:08 -07:00
João Capucho
357da63076
Patch ron version (#1986)
Require at least version 0.7.1 of ron, this version changed how floating points are
serialized by forcing them to always have the decimal part, this makes it backwards
incompatible with our tests because we do a syntatic diff and not a semantic one.
2022-06-15 15:17:59 -04:00
João Capucho
98bc8fedf9 Apply comments 2022-06-14 16:04:08 -07:00
João Capucho
ae58fbf4d0 Add tests 2022-06-14 16:04:08 -07:00
João Capucho
70743ee7dc glsl-in: Perform casts in int only math functions
Some functions like abs only accept signed integers while naga's IR
accepts both signed and unsigned integers, this wasn't accounted for in
the glsl backend causing it to produce code that wouldn't type check.

This commit addresses it by performing casts from uint to int of the
function argument and then back from int to uint for the function
return.
2022-06-14 16:04:08 -07:00
João Capucho
ae50f31d4f glsl-in: Don't allow empty last case in switch
The GLSL spec forbids switch statements with an empty last case, so we
check that now and throw an error if necessary
2022-06-14 22:31:27 +01:00
João Capucho
dab932e8ce glsl-in: Fix last case falltrough and empty switch
GLSL allows the last case of a switch statement to not have a `break`
statement causing it to be marked as fall-trough, naga's IR on the other
hand doesn't allow the last case to be fall-trough, this is fixed by
force marking it in the glsl frontend as not fall-trough.

GLSL also allows empty switch statements and without default cases,
naga's IR requires there be a default case, this is fixed by adding an
empty default case in the glsl frontend if no default case was present
in the switch statement.
2022-06-14 22:31:27 +01:00
João Capucho
52bb25179b glsl-in: Splat inputs for smoothstep if needed
Glsl defines two overloads for smoothstep that accept `min` and `max` as
scalars and the value as a vector, naga's IR is stricter and only allows
operators with the same dimensions, so this inputs must be splatted.
2022-06-14 13:15:08 -07:00
João Capucho
c7e6769001 Add tests 2022-06-14 13:14:43 -07:00
João Capucho
46bc882d19 msl: don't rely on cached expressions
Expressions marked for caching might not be cached, this can happen for
example when these expressions are pre emitted (for example Contants).
2022-06-14 13:14:43 -07:00
João Capucho
b5a046982f glsl-out: don't rely on cached expressions
Expressions marked for caching might not be cached, this can happen for
example when these expressions are pre emitted (for example Contants).
2022-06-14 13:14:43 -07:00
João Capucho
81e2b006e1 glsl-in: Add test for nested depth texture calls
Co-authored-by: Jasper St. Pierre <jstpierre@mecheye.net>
2022-06-14 13:11:30 -07:00
João Capucho
3d3e5ae00d glsl-in: Fix parameter not changing to depth
The conversion from sampled images to depth changed the `argument` type
but didn't change the `parameter` type (`argument` without pointer
indirection) causing 2+ deep propagation of depth images with function
arguments to fail.
2022-06-14 13:11:30 -07:00
teoxoy
0a6b0e5b71 update changelog for v0.9 2022-06-14 11:47:39 -07:00
teoxoy
53aa3e2df5 [wgsl-in] overhaul number lexing / parsing
Bring the lexer's parsing of numeric literals in line with the WGSL
specification as of 86a23b83 (2022-05-10).
2022-06-10 10:36:07 -07:00
Jim Blandy
89bed99bcc Forbid returning pointers and atomics from functions.
Introduce a new `TypeFlags::CONSTRUCTIBLE` flag, corresponding to
WGSL's "constructible types". Set this on the appropriate types.
Check for this flag on function return types.
2022-06-01 14:20:55 -07:00
Jim Blandy
1c21fc02fe Let validation check for more unsupported builtins.
Add `valid::Capabilities` flags for the `ClipDistance` and
`CullDistance` builtins, which are not supported by all back ends.

Have the CLI perform valation with only those capabilities that the
requested back ends support.

Fixes #1961.
2022-06-01 14:20:06 -07:00
Jim Blandy
7f5ec31825 Verify in CI that benchmarks build.
Also, the documentation job probably doesn't need Clippy.
2022-06-01 10:59:18 -07:00
Jim Blandy
231341f056 Fix Criterion benchmark build.
As of #1889, the GLSL back end takes an additional argument specifying
the bounds checks policies to use.
2022-06-01 08:18:46 -07:00
João Capucho
e461d30865 glsl-in: Fix matrix multiplication check
The previous check compared rows to rows and columns to columns but
multiplication of matrices only needs the columns of the left matrix to
be equal to the rows of the right matrix.
2022-05-30 22:54:14 +01:00
João Capucho
cff744dc89 spv-in: Implement OpBitReverse and OpBitCount 2022-05-30 22:51:50 +01:00
Jim Blandy
6a3f526c12 [spv-in] Finish truncated comment. 2022-05-30 14:31:26 -07:00
João Capucho
9e75332283 glsl-in: Stop emitter in conditional
This wasn't being done when there were no implicit conversions, causing
the emitter to panic.
2022-05-30 13:27:06 -07:00
teoxoy
768e1fe703 [hlsl-out] avoid error X3504: array index out of bounds 2022-05-30 13:15:40 -07:00
teoxoy
a8256e94c2 [hlsl-out] avoid error X3694: race condition writing to shared resource detected 2022-05-30 13:14:00 -07:00
teoxoy
91ee407c87 [hlsl-out] fix fallthrough in switch statements 2022-05-30 13:11:56 -07:00
teoxoy
7c7e96276a [hlsl-out] fix missing break statements (for FXC) 2022-05-30 12:15:16 -07:00
João Capucho
0aa7681165
glsl-out: Implement bounds checks for ImageLoad (#1889)
* glsl-out: Implement bounds checks for `ImageLoad`

* Enable image bounds check snapshot tests for GLSL.

In addition to the snapshot.rs changes, this entails adding an entry
point function to `bounds-check-image-restrict.wgsl` and
`bounds-check-image-rzsw.wgsl`, including appropriate data in the
param.ron files.

* Apply comments

Snapshot test changes:
Co-authored-by: Jim Blandy <jimb@red-bean.com>
2022-05-30 12:13:58 -07:00
João Capucho
c7e245c083
Update README for glsl-in (#1951) 2022-05-29 19:50:30 -04:00
João Capucho
4cd997a3eb glsl-out: Fix storage format for Rgba8Unorm 2022-05-28 14:30:12 -07:00
Jim Blandy
f035854dac Doc tweaks. 2022-05-25 17:17:47 -07:00
Nicolas Silva
f9dfc38c40 Add a helper for getting the location of a span in some textual source. 2022-05-25 17:17:47 -07:00
teoxoy
62da3bf348 add HLSL validation via FXC to CI 2022-05-22 08:53:46 -07:00
Ashley Ruglys
104f4dc7ec Fix a broken clippy lint 2022-05-22 08:42:20 -07:00
Ashley Ruglys
196c9981bc Run cargo fmt 2022-05-22 08:42:20 -07:00
Ashley Ruglys
fea733f58e Add MultiView to SUPPORTED_CAPABILITIES 2022-05-22 08:42:20 -07:00
Hasan Ali
571302e3ff [hlsl-out] Fix countOneBits and reverseBits for signed integers 2022-05-17 00:12:18 +02:00
grovesNL
60ae549fe1 Add error for non-floating-point matrix 2022-05-14 17:00:15 +02:00
teoxoy
ab2806e05f [hlsl-out] fix array constructor return type (for FXC) 2022-05-12 22:17:40 -07:00
teoxoy
5f47d6d31f [msl-out] use matrix identity constructor 2022-05-12 22:15:45 -07:00
teoxoy
6dae3ac7e0 [wgsl-in] support partial vector & matrix identity constructors 2022-05-12 22:15:45 -07:00
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