Commit Graph

562 Commits

Author SHA1 Message Date
Teodor Tanasoaia
7aaac25fbf [hlsl-out] fix matCx2 translation for uniform buffers (#1802)
* [hlsl-out] fix matCx2 translation

* fix msl validation (warning: unused variable)

* fix msl buffer declaration

* address comments
2022-04-10 22:29:11 -07:00
teoxoy
6ee1fd4929 fix MSL issue 2022-04-10 21:49:23 -07:00
teoxoy
d3957c1186 implement invariant attribute 2022-04-10 21:49:23 -07:00
Noel Tautges
a3d968e795 [hlsl-out] Don't output interpolation modifier if it's the default (#1809)
* hlsl-out: don't output interpolation modifier if it's the default (linear/`Interpolation::Perspective`)

* Remove linear interpolation modifiers from HLSL output tests
2022-04-09 22:36:36 -07:00
Teodor Tanasoaia
cfcf625019 [wgsl-in] Constructor improvements (#1790)
* add support for zero value constructors and constructors that infer their type from their parameters

* address comments

* extract constructor machinery into new module

* fix doc link
2022-03-29 22:51:54 -07:00
Teodor Tanasoaia
012f2a6b2e Merge pull request #1784 from teoxoy/patch-2
[hlsl-out] fix matrix not being declared as transposed
2022-03-27 22:24:09 -07:00
João Capucho
4146cb24d0 glsl-in: Allow nested accesses in lhs positions
Also fixes access to runtime sized arrays behind named blocks
2022-03-27 21:47:51 -07:00
João Capucho
21f89b65e4 glsl-in: use forced conversions for vector/matrix constructors
The spec defines that for vector and matrix constructors all arguments
should use the same conversions as scalar constructors (forced conversions)
2022-03-27 21:44:17 -07:00
João Capucho
767d970312 glsl-in: Resume expression emit after imageStore
This wasn't done before which caused the frontend to crash if anything
appeared after it.
2022-03-27 21:42:02 -07:00
teoxoy
9dddfeec37 [wgsl-in] implement increment and decrement 2022-03-27 00:34:53 -07:00
Pu Xingyu
b17e6cfe43 wgsl-out: Do not output semicolon after struct decl 2022-03-27 00:22:58 -07:00
Pu Xingyu
3c313564ac wgsl-in: Make semicolon after struct decl optional 2022-03-27 00:22:58 -07:00
João Capucho
54ef2e39a0 glsl-in: Allow multiple array specifiers 2022-03-27 00:18:20 -07:00
João Capucho
b568bfbbdf glsl-in: Fix memory qualifiers being inverted
Adds some documentation to better explain how the memory qualifier works
troughout the parser and some storage textures tests.
2022-03-27 00:02:26 -07:00
teoxoy
cf992a9a95 [wgsl-in] implement while loop 2022-03-22 22:47:47 -07:00
Igor Shaposhnik
b5761d9611 [wgsl-out] Uses commas to separate struct members instead of semicolons 2022-03-12 22:07:06 -08:00
Igor Shaposhnik
816fa347ad [wgsl-in] Uses commas to separate struct members instead of semicolons 2022-03-12 22:07:06 -08:00
hatoo
7f4c01784c Remove vs_bake entry point from tests/in/shadow.wgsl
This entry point isn't useful for testing.
2022-03-11 20:14:25 -08:00
hatoo
ae282703e2 Update test case from wgpu's shadow example 2022-03-11 20:14:25 -08:00
Dzmitry Malyshau
1d3fb26ffd Actually test push constants to be used (#1767) 2022-03-08 23:02:20 -05:00
Jim Blandy
c84aa77579 [msl-out] Properly rename entry point arguments for struct members. (#1766) 2022-03-08 10:07:30 -05:00
Dzmitry Malyshau
79845371d3 msl: qualify read-only storage with const 2022-03-06 19:28:15 -08:00
Vincent Isambart
fe3d945a58 Not operator depending on expression type 2022-03-05 19:11:27 -08:00
João Capucho
f054aa94f4 glsl-in: Support arrays as input/output types
Like it was already done for structs, arrays are flattened and each
element is attributed a location that is it's index + the array base
location.
2022-03-03 21:42:48 -08:00
João Capucho
a2bcdda81c glsl-in: Fix freestanding constructor parsing 2022-03-03 21:39:45 -08:00
João Capucho
af8dd4b3bd glsl-in: Fix matrix by scalar operations 2022-03-02 22:27:24 -08:00
João Capucho
48320db507 glsl-in: Fix matrix by matrix division 2022-03-02 22:27:24 -08:00
João Capucho
7f485d262b glsl-in: Fix matrix comparisons 2022-03-02 22:27:24 -08:00
João Capucho
d449d2e665 glsl-in: Add support for texelFetchOffset 2022-03-01 21:06:50 -08:00
João Capucho
98e7add6a2 glsl-out: texture function fixes
- samplerCubeShadow requires vec3 gradients
- Bias must be written after offset
- sampler1D hack on GLES requires vec2 gradients
- textureSize doesn't accept a lod argument for MS samplers
- sampler1DArray hack on GLES requires a y component on imageLoad
2022-02-23 23:23:05 -05:00
Dzmitry Malyshau
a45b9a6cc6 wgsl: update find msb/lsb names (#1735) 2022-02-21 22:40:00 -08:00
Jim Blandy
679087bd9c [msl-out] Bounds checks for ImageLoad and ImageStore. (#1730) 2022-02-21 15:08:14 -08:00
Jim Blandy
688ad474f7 [msl-out] Write 'using metal::uint' at the top, to work around bug. (#1740)
This lets us remove some special cases where `uint` must be fully
qualified, even though other similar types are not.
2022-02-21 13:22:54 -08:00
João Capucho
1ccfc8991e glsl-in: Add test for conditional builtin inject 2022-02-19 10:42:44 -05:00
João Capucho
9e4f678c13 glsl-in: Add tests for images 2022-02-16 21:56:32 +00:00
Jim Blandy
771d62710c [msl-out] Consolidate numeric type formatting. 2022-02-15 09:58:00 -05:00
Igor Shaposhnik
e1e9848706 [wgsl-out] Optional parentheses for if and switch 2022-02-15 09:57:07 -05:00
Igor Shaposhnik
c356b93962 [wgsl-in] Optional parentheses for if and switch 2022-02-15 09:57:07 -05:00
João Capucho
1f14f7ea2a glsl-in: Texture builtins fixes
This one grew out of hand quick. Initially it was just replacing the bit
loops with a function driving the declarations to make the code sharing
better and support different scalar kinds.

Now it includes a lot of fixes:
- `textureSize` now also returns the array layers as the last component
  on the return (only for arrayed textures)
- `textureSize` now supports multisampled textures
- the `texture` family of functions now consumes a `vec3` coordinate
  vector for all 1D shadow textures
- Shadow textures can use the bias version of `texture` functions
  (temporarily disabled since naga doesn't support it)
- 3D textures can be used in `textureProj`
- `sampler2DArrayShadow` can't be used in `textureLod` or in `texture` with bias
- Cube textures cannot be used with offsets

Updates the tests to cover all functions
2022-02-10 10:11:28 -05:00
Jim Blandy
0ce98d6411 [msl-out][spv-out][glsl-out][hlsl-out] Fix ArraySize on globals. 2022-02-05 00:16:53 -05:00
Jim Blandy
2a151216e3 [msl-out] Always check whether _buffer_sizes arg is needed.
The _buffer_sizes argument should be inserted regardless of whether or not `
`options.fake_missing_bindings` is set, so lift the computation of
`supports_array_length` out of that conditional.
2022-02-05 00:16:53 -05:00
João Capucho
e621acc09d glsl-in: Type qualifiers rework (#1713)
The previous implementation had many issues, most importantly it didn't
allow to implement (at least in a sane way) some future features like
default qualifiers and format qualifiers.

This implementations centralizes the qualifiers into a struct with a
hashmap for layout qualifiers, error reporting is also centralized which
means that `add_global_var` and `add_local_var` no longer need to
duplicate effort and the ugly loop + match combo is gone.

Finally some minor fixes are also done as part of this rework, like
a default location being provided for input/outputs variables and layout
qualifiers being allowed to be repeated (overwriting the previous one)
like the spec defines.
2022-02-04 15:06:49 -05:00
francesco-cattoglio
b235973d2e Add support for vecN<i32> and vecN<u32> to dot() function (#1689)
* Allow vecN<i32> and vecN<u32> in `dot()`, first changes

* Added a test case

* Fix the test

* Changes to baking of expressions, incl args of integer dot product

* Implemented requested changes for glsl backend

* Added support for integer dot product on MSL backend

* Removed outdated code for hlsl and wgls writers

* Implement in spv backend

* Commit modified outputs from running the tests

* cargo fmt

* Applied requested changes for both MSL and GLSL back

* Changes to spv back

* Committed all test output changes

* Cargo fmt

* Added a comment w.r.t. VK_KHR_shader_integer_dot_product

* Implemented requested svp change

* Minor change to test case

This is because I wanted to highlight the fact that the correct
id is used in the last sum of the integer dot product expression

* Changed function signature

since it could not fail, changed it to simply return `void`
2022-02-03 14:03:43 -05:00
Noel Tautges
42bf3545c9 Standardize some docs (#1660)
* Rewrite front/back doc summaries

- Use line comments instead of block comments
- Standardize language for each front/backend
- Add reference link for each format
- Minor punctuation changes

* Add documentation for keywords module

* Clarify contents of keywords module in summary

* Refer to modules by their type name

* Add basic summary for valid module

* Adjust EarlyDepthTest and ConservativeDepth docs

* Remove "in" from list

* Adjust wording

* Standardize format of docstrings

* Adjust module links to be consistent with other links

* Add summary for reserved keywords list

* Remove extraneous doc spaces with `cargo fmt`

* Correct spelling of whether and rewrite some lines

* Fill out GLSL backend docs

* Remove unnecessary link targets

* Fill out DOT backend docs

* Change module line comments to block comments

* Remove unnecessary spaces

* Fix mistake during rebasing
2022-02-03 13:27:21 -05:00
Taylor Holliday
f63003cd36 WGSL storage address space should always correspond to MSL device add… (#1711)
* WGSL storage address space should always correspond to MSL device address space.

See MSL spec section 4.2.

* Update baselines

* Add error for storage address space if MSL version < 2.

* Update default MSL version to 2.0.
2022-02-03 13:00:04 -05:00
Dzmitry Malyshau
75692d3795 Allow non-structure buffer types 2022-02-02 10:08:20 -05:00
glalonde
bb604fd6a3 Mitigation for MSL atomic bounds check. (#1703)
[msl-out] Correct output for bounds-checked atomic accesses.
2022-02-01 16:37:09 -08:00
Dzmitry Malyshau
2ddc8d1929 Rename StorageClass to AddressSpace 2022-01-31 16:25:06 -05:00
Connor Fitzgerald
f5d97cae84 Adjust MSL version invariant needs 2022-01-25 13:25:48 -05:00
Dzmitry Malyshau
4c91abe5b3 wgsl: remove stride 2022-01-24 16:44:12 -05:00