Commit Graph

244 Commits

Author SHA1 Message Date
João Capucho
a718992acb Added new external functions to the glsl backend to make it on par with the typifier (#240) 2020-10-19 09:40:30 -04:00
Pelle Johnsen
78c9e45182 [glsl-in] Add initial pre-processor (#238)
* [glsl-in] Add initial pre-processor

* [glsl-in] Tweak preprocessor after review

- Add IfState struct
- Use FastHashMap to pre-defines
- Use ok-or() for some errors

* [glsl-in] Remove Option in defines arg
2020-10-15 13:38:02 -04:00
Pelle Johnsen
6fb195cdc8 [clippy] Fix clippy issues after upgrading to 1.47 (#237)
* [clippy] disable match_like_matches_macro for now

* [wgsl-in] Return error instead of panic

* [typifier] Convert panics to return error

Still one panic in clone impl for Resolution,
disabled clippy for that one

* [spv-in] REturn error instead of panic'ing

* [spv-out] Return error instead of panic'ing

* [typifier] Use IncompatibleOperand(s) error

Instead of just Other

* [typifier] Use Expression for op in Error

For IncompatibleOperands

* [typifier] revert last commit
2020-10-13 17:14:40 -04:00
João Capucho
b76dff9d9c Added the new method to the msl Writer (#236) 2020-10-12 11:49:53 -04:00
Pelle Johnsen
2b268c926c [glsl-in] Extraxt lexer next_line method (#232)
Have single place where advancing to next line
2020-10-08 13:14:05 -04:00
Dzmitry Malyshau
aa35110471 Allow output variables to be read 2020-10-07 16:08:05 -04:00
Timo de Kort
4420258001 [ir] Remove Matrix Kind from the IR (#230) 2020-10-06 17:19:29 -04:00
Timo de Kort
f67dfd251a [spv-out] Add multiply instructions (#219) 2020-10-06 16:57:30 -04:00
Pelle Johnsen
773408663b [glsl-in] make consume_token a lexer method (#227)
* [glsl-in] make consume_token a lexer method

* [glsl-in] fix lex for 1.41
2020-10-06 10:31:41 -04:00
Capucho
34e46d0a76 Added support for matrix access on the typifier 2020-10-05 16:11:41 -04:00
Timo de Kort
99f829b3cc [spv-out] Add check for global variables if name is set 2020-10-05 09:43:59 -04:00
Timo de Kort
90c56aca2f [spv-out] Add scalar conversion support 2020-10-03 19:50:09 -04:00
Timo de Kort
98167103c2 [spv-out] Remove instruction spec tests 2020-10-03 19:49:22 -04:00
Pelle Johnsen
842079a3cd [glsl-in] Handle spacing for preproces directives 2020-10-02 00:50:18 -04:00
Timo de Kort
e0f593f35f [spv-out] Add matrix construct support 2020-10-01 15:41:42 -04:00
Timo de Kort
b56c2ddbdc [spv-out] Fix write_function returning block id 2020-09-30 16:43:56 -04:00
Dzmitry Malyshau
6de675313b [spv] fix stack overflow in type writing 2020-09-28 23:29:23 -04:00
Dzmitry Malyshau
8323521b83 [valid] move out the integer interpolation check to the entry point 2020-09-28 10:15:35 -04:00
Dzmitry Malyshau
d03c95a576 Add more methods recognized by the typifier 2020-09-28 10:15:35 -04:00
Dzmitry Malyshau
53627c5cd8 [valid] allow dynamic access into vectors 2020-09-28 10:15:35 -04:00
Dzmitry Malyshau
e57d877dbc [spv] fix storage buffer detection 2020-09-28 10:15:35 -04:00
Dzmitry Malyshau
541d1dcb8b Fix convert_phong_lighting test feature checks 2020-09-28 01:10:57 -04:00
Dzmitry Malyshau
7e809c605a Remove validation error lifetime 2020-09-28 01:10:57 -04:00
Pelle Johnsen
df9834258f [glsl-in] Implement swizzle for r-values (#213)
* [glsl-in] Implement swizzle for r-values

Related to #210

* [glsl-in] Just return Result from field_selection

Removed unneccessary Otion in return type

* [glsl-in] Always match on type in field_selection

* [glsl.in] Borrow by value in field_selection
2020-09-25 10:32:50 -04:00
Nicholas Rishel
7ce99774d5 Add legend for supported end-points (#212)
There's no legend explaining what symbols mean for supported end-points, but it seems to be following the same format at wgpu. This PR copies wgpu's legend.
2020-09-23 00:48:31 -04:00
Pelle Johnsen
e5d17e878b [glsl-in] Support anonymous global uniforms (#211)
* [glsl-in] Support anonymous global uniforms

Partly fixes #210

* [glsl-in] Handle anon global structs in fn prelude
2020-09-22 11:52:51 -04:00
Pelle Johnsen
8c48ae51ce [glsl-in] consolidate tests (#206)
* [glsl-in] consolidate tests

- remove simple lex test as was covered by others
- combine related tests to single function
- remove redundant prefix in test names

* [glsl-in] Consolidtae lex tests further
2020-09-22 11:50:56 -04:00
Dzmitry Malyshau
0651eb8fab Complete expression/statement support in MSL, refactor conversion methods in WGSL, and remove Statement::Empty 2020-09-19 16:16:17 -04:00
Dzmitry Malyshau
ca492e43e6 [glsl] write the entry point (#207) 2020-09-18 17:26:32 -04:00
Timo de Kort
40f37c5c8c [spv-out] Combined all instruction spec tests to one test (#208) 2020-09-18 17:02:00 -04:00
João Capucho
0aae8ae6f8 glsl-out: More glsl versions (#191)
* Added support for glsl core version up to 400

* Added 330 to the list supported versions

* Added links to all extensions and fixed a extension being wrongfully activated

* Cleanup and check for image formats

* Removed useless extension and location on layout

* Added support for external functions and fixed global names

* Typefier allow Scalars in distance and length

* Addressed comments

* Fixed extension appearing after body

* Fixed entry point not being generated
2020-09-18 17:01:05 -04:00
Dzmitry Malyshau
d25ab1b1e8 Refactor image sampling arguments, add textureLoad support to WGSL 2020-09-18 10:53:26 -04:00
Dzmitry Malyshau
0aa91927b2 [wgsl] extend and refactor lexer tests 2020-09-18 10:01:56 -04:00
Dzmitry Malyshau
aa7005fdf3 [ir] Move scalar kind into the Sampled image class variant 2020-09-18 10:01:56 -04:00
Dzmitry Malyshau
7aff39784b [wgsl] texture operations 2020-09-18 10:01:56 -04:00
Dzmitry Malyshau
14feb9ac01 Validation of global variables and entry points 2020-09-17 16:12:56 -04:00
Pelle Johnsen
1c3f4513de [glsl.in] Implement field lookup 2020-09-17 14:11:09 -04:00
Dzmitry Malyshau
081b90f117 Consolidate rosetta tests 2020-09-17 10:16:32 -04:00
Dzmitry Malyshau
2ebaadaf0c Refactor entry point IR 2020-09-17 10:08:49 -04:00
Dzmitry Malyshau
74c4a3ce18 Add ArrayLength expression 2020-09-16 09:29:26 -04:00
Pelle Johnsen
bcd3db2dad [glsl-in] Add unifroms and structs 2020-09-15 12:45:09 -04:00
Dzmitry Malyshau
a561c7cacb validator: try resolving the types 2020-09-15 07:51:45 -04:00
Dzmitry Malyshau
d6cc17f051 Refactor feature names 2020-09-15 07:51:45 -04:00
Dzmitry Malyshau
e99c715160 glsl: use typifier in the backend 2020-09-15 07:51:45 -04:00
Dzmitry Malyshau
fb2c60b31c msl: use typifier in the backend 2020-09-15 07:51:45 -04:00
Dzmitry Malyshau
f04a07c86c proc: make typifier work with gaps in the type graph 2020-09-15 07:51:45 -04:00
Pelle Johnsen
094e4fdd17 Fix lexer operator issues (with tests) (#188)
* Fix lexer operator issues (with tests)

* [glsl-in] Don't convet to string in lexer tests

* [glsl-in] cleanup lexer tests further

- Consolidate use statements

- Iterate lex directly, check for None at end
2020-09-14 01:16:12 -04:00
Pelle Johnsen
a9355f928f [glsl-in] Add gl_VertexIndex (#189)
* [glsl-in] Add gl_VertexIndex

Refactor variable handling out of parser.rs

* [glsl-in] Fixes for gl_VertexIndex

- Make lookup_variable a method of Program

- Try to cleanup conditional logic

* [glsl-in] Error on gl_ builtin in wrong stage

Wrapped in glsl-validate feature
2020-09-13 21:20:46 -04:00
Dzmitry Malyshau
089d0dd4f8 Minor fixes in feature checks (#194) 2020-09-13 21:03:00 -04:00
Pelle Johnsen
0235c4a86c [glsl-in] Fix unused braces in parser.rs (#190) 2020-09-13 00:22:06 -04:00