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
f11d27af6f
Reject empty struct types. ( #1826 )
2022-04-14 09:36:53 -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
32cdb27230
add better tests for msl packed vec3
2022-04-11 20:30:00 -07:00
teoxoy
d7f4c340a7
add matrix vector multiplication test
2022-04-11 20:30:00 -07:00
teoxoy
1688a767bb
fix packed vec3 stores
2022-04-11 20:30:00 -07:00
teoxoy
1f797fdc2f
add more packed vec3 load/stores to test
2022-04-11 20:30:00 -07:00
João Capucho
954c1f6f4b
glsl-in: Add tests for constants NaN handling ( #1817 )
2022-04-11 16:53:03 -07:00
Shohei Jinno
b21634ac61
[glsl-in] Implement MathFunction::Clamp ( #1502 )
...
* Implement Clamp function.
* Fix the return error type.
Change `ConstantSolvingError::InvalidMathArg` to `ConstantSolvingError::NotImplemented`
for the clamp function with the input of unimplemented types.
Unimplemented types:
- vec2
- vec3
- vec4
* [glsl-in] Add helpers that implement the glsl's `max` and `min` functions.
Co-authored-by: JCapucho <jcapucho7@gmail.com >
* Fix grammar.
Co-authored-by: JCapucho <jcapucho7@gmail.com >
2022-04-11 12:02:34 -07:00
Shohei Jinno
8f5d8f61a8
glsl-in: better errors for bad constant expression ( #1501 )
...
Co-authored-by: JCapucho <jcapucho7@gmail.com >
2022-04-11 11:22:04 -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
5ba2d4d079
[spv-in] error on unsupported matrix stride
2022-04-10 22:27:32 -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
Teodor Tanasoaia
fa44d9d536
[glsl-in] error on a matCx2 used with the std140 layout ( #1806 )
2022-04-10 21:42:02 -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
2db49b6998
validate uniform address space layout constraints ( #1812 )
2022-04-09 22:35:28 -07:00
Igor Shaposhnik
43cd0ecedd
[wgsl] Make colon in case optional ( #1801 )
2022-03-30 14:32:01 -04:00
Igor Shaposhnik
6bbba0d0d5
[wgsl] Rename smoothStep to smoothstep ( #1800 )
2022-03-30 14:31:26 -04: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
Jonathan Behrens
26537c1a60
Call ctx.emit_start after flushing
2022-03-27 21:43:16 -07:00
Jonathan Behrens
a48faf543f
Add glsl barrier function
2022-03-27 21:43:16 -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
800fc7471f
fix msrv incompatibility
2022-03-27 00:34:53 -07:00
teoxoy
9dddfeec37
[wgsl-in] implement increment and decrement
2022-03-27 00:34:53 -07:00
Pu Xingyu
d62c0838a6
Update changelog
2022-03-27 00:22:58 -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
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
f90e563c28
update changelog
2022-03-12 22:07:06 -08: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