Commit Graph

753 Commits

Author SHA1 Message Date
teoxoy
7f4e07e5cd [glsl-out] add support for boolean vector ~, | and & ops 2022-04-15 11:21:51 +02:00
teoxoy
95b84c4403 [spv-out] add support for int vector scalar mult 2022-04-15 11:21:51 +02:00
teoxoy
6e6daad4d4 [hlsl-out] fix bool splat 2022-04-15 11:21:51 +02:00
teoxoy
4ea7dc3381 [spv-out] add support for matrix add and sub 2022-04-15 11:21:51 +02:00
teoxoy
4366e65609 add support for unary vector operators 2022-04-15 11:21:51 +02:00
teoxoy
dd75579d7c fix typos 2022-04-14 13:47:18 -07:00
Jim Blandy
97fffccac7 [spv-out] Emit required decorations on wrapper struct types, too.
Fixes #1810.
2022-04-14 11:54:47 -07:00
Jim Blandy
1a0a48fd69 [spv-out] Decorate array and struct type layouts unconditionally.
Remove the `decorate_layout` variable, which is unconditionally set to
`true` anyway.
2022-04-14 11:54:47 -07:00
Jim Blandy
27d0fee2e7 More tests for non-struct global types. 2022-04-14 11:45:42 -07:00
Jim Blandy
5d631d9e2d [glsl-out] Generate GLSL for arbitrary global types, per Naga IR.
Delete `GlobalTypeKind`.

Break out `Writer::write_global`'s code into two new functions,
`write_simple_global` and `write_interface_block`. This introduces
some repeated code, but the way we need to produce interface blocks
and normal globals are sufficiently different that I think it's
clearer overall to just separate them entirely. Much of the details
are handled by their callees.

Loosen the interface block code to support arbitrary types.
2022-04-14 11:45:42 -07:00
Jim Blandy
cf1869016f [glsl-out] Rename glsl_storage_class to glsl_storage_qualifier.
"Storage qualifier" is the term used in the GLSL ES specification.
2022-04-14 11:45:42 -07:00
Jim Blandy
896e884802 [glsl-out] Use exhaustive match in AddressSpace::initializable.
No change in behavior. Exhaustive matches aid error detection, and are
clearer when the number of match arms isn't excessive.
2022-04-14 11:45:42 -07:00
Jim Blandy
438a750967 Introduce TypeInner::is_dynamically_sized helper function.
Use it in HLSL and GLSL back ends.
2022-04-14 11:45:42 -07:00
Jim Blandy
170faab6db Move invariant bit from Binding::Builtin to Builtin::Position. (#1822)
Use the type system to enforce the rule that the invariant attribute
may only appear on `Position` builtins.
2022-04-13 14:57:05 -07:00
Jim Blandy
78975f25da [msl-out] Permit invariant qualifier on vertex shader outputs. 2022-04-12 22:22:20 +02:00
Jim Blandy
4e4d918d39 [msl-out] Introduce finer distinctions to LocationMode.
Distinguish between vertex shader outputs and fragment shader inputs.
This change should have no visible effect.
2022-04-12 22:22:20 +02:00
Jim Blandy
8afa5fe5e3 [glsl-out] Document and flatten back::glsl::Writer::write_varying. 2022-04-12 14:22:50 +01:00
Teodor Tanasoaia
bd62887a13 [hlsl-out] Add more padding when necessary (#1814)
* [hlsl-out] add padding at the end of structs and after struct members of type matrix and array (when necessary)

* use wrapped constructor fn for constants

* add array as fn arg test

* fix glsl array fn arg

* add wrapped constructor for arrays

* [glsl-out] support multidimensional arrays

* address comments
2022-04-11 20:34:06 -07:00
teoxoy
0e77d26241 cast packed vec3's to vec3 for expressions that require it 2022-04-11 20:30:00 -07:00
teoxoy
1688a767bb fix packed vec3 stores 2022-04-11 20:30:00 -07:00
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
Igor Shaposhnik
6bbba0d0d5 [wgsl] Rename smoothStep to smoothstep (#1800) 2022-03-30 14:31:26 -04: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
Pu Xingyu
b17e6cfe43 wgsl-out: Do not output semicolon after struct decl 2022-03-27 00:22:58 -07:00
teoxoy
05f050fad4 insert padding between struct members 2022-03-21 16:39:10 -07:00
Teodor Tanasoaia
e66a66a763 [spv-out] fix wrong MatrixStride for matCx2 and mat2xR 2022-03-19 21:20:45 -07:00
Igor Shaposhnik
b5761d9611 [wgsl-out] Uses commas to separate struct members instead of semicolons 2022-03-12 22:07:06 -08:00
hatoo
8344951ebe [glsl-out] Write constant sized array type for uniform 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
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
João Capucho
419a6c69f9 spv-out: Use OpImageQuerySize for MS images 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
Jim Blandy
07f9cf670c Give Expression::ImageLoad separate sample and level operands. 2022-02-18 17:11:40 -05:00
Jim Blandy
e904d2bfd6 [msl-out] Document why dot operator on ints requires baking. 2022-02-15 22:45:25 -05:00
Jim Blandy
75c86a6c3d [spv-out] Access trait doc fixes. 2022-02-15 22:45:25 -05:00
Jim Blandy
7d06445897 [hlsl-out] Remove MipLevelCoordinate type.
Validation insures that `ImageLoad` expressions always have an `index`
operand when the image's type requires it, so there is no need for
`MipLevelCoordinate::Zero`. This means that
`Option<Handle<Expression>>` serves adequately for this case.
2022-02-15 22:43:35 -05: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
Dzmitry Malyshau
8e2e39e4d8 msl: fix resource bindings for non-structures 2022-02-06 00:12:10 -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
Dzmitry Malyshau
ca58d413b7 Move NeedBakeExpressions into backends (#1716) 2022-02-04 19:31:48 +00:00