v0.9.0
API
- Rename
TypeFlags
INTERFACE
/HOST_SHARED
toIO_SHARED
/HOST_SHAREABLE
(#1872) @jimblandy - Expose more error information (#1827, #1937) @jakobhellermann @nical @jimblandy
- Do not unconditionally make error output colorful (#1707) @rhysd
- Rename
StorageClass
toAddressSpace
(#1699) @kvark - Add a way to emit errors to a path (#1640) @laptou
CLI
- Add
bincode
representation (#1729) @kvark - Include file path in WGSL parse error (#1708) @rhysd
- Add
--version
flag (#1706) @rhysd - Support reading input from stdin via
--stdin-file-path
(#1701) @rhysd - Use
panic = "abort"
(#1597) @jrmuizel
DOCS
- Standardize some docs (#1660) @NoelTautges
- Document
TypeInner::BindingArray
(#1859) @jimblandy - Clarify accepted types for
Expression::AccessIndex
(#1862) @NoelTautges - Document
proc::layouter
(#1693) @jimblandy - Document Naga's promises around validation and panics (#1828) @jimblandy
FunctionInfo
doc fixes (#1726) @jimblandy
VALIDATOR
- Forbid returning pointers and atomics from functions (#911) @jimblandy
- Let validation check for more unsupported builtins (#1962) @jimblandy
- Fix
Capabilities::SAMPLER_NON_UNIFORM_INDEXING
bitflag (#1915) @cwfitzgerald - Properly check that user-defined IO uses IO-shareable types (#912) @jimblandy
- Validate
ValuePointer
exactly like aPointer
to aScalar
(#1875) @jimblandy - Reject empty structs (#1826) @jimblandy
- Validate uniform address space layout constraints (#1812) @teoxoy
- Improve
AddressSpace
related error messages (#1710) @kvark
WGSL-IN
Main breaking changes
- Commas to separate struct members (comma after last member is optional)
struct S { a: f32; b: i32; }
->struct S { a: f32, b: i32 }
- Attribute syntax
[[binding(0), group(0)]]
->@binding(0) @group(0)
- Entry point stage attributes
@stage(vertex)
->@vertex
@stage(fragment)
->@fragment
@stage(compute)
->@compute
- Function renames
smoothStep
->smoothstep
findLsb
->firstTrailingBit
findMsb
->firstLeadingBit
Specification Changes (relavant changes have also been applied to the WGSL backend)
- Add support for
break if
(#1993) @JCapucho - Update number literal format (#1863) @teoxoy
- Allow non-ascii characters in identifiers (#1849) @teoxoy
- Update reserved keywords (#1847, #1870, #1905) @teoxoy @Gordon-F
- Update entry point stage attributes (#1833) @Gordon-F
- Make colon in case optional (#1801) @Gordon-F
- Rename
smoothStep
tosmoothstep
(#1800) @Gordon-F - Make semicolon after struct declaration optional (#1791) @stshine
- Use commas to separate struct members instead of semicolons (#1773) @Gordon-F
- Rename
findLsb
/findMsb
tofirstTrailingBit
/firstLeadingBit
(#1735) @kvark - Make parenthesis optional for
if
andswitch
statements (#1725) @Gordon-F - Declare attribtues with
@attrib
instead of[[attrib]]
(#1676) @kvark - Allow non-structure buffer types (#1682) @kvark
- Remove
stride
attribute (#1681) @kvark
Improvements
- Implement complete validation for size and align attributes (#1979) @teoxoy
- Implement
firstTrailingBit
/firstLeadingBit
u32 overloads (#1865) @teoxoy - Add error for non-floating-point matrix (#1917) @grovesNL
- Implement partial vector & matrix identity constructors (#1916) @teoxoy
- Implement phony assignment (#1866, #1869) @teoxoy
- Fix being able to match
~=
as LogicalOperation (#1849) @teoxoy - Implement Binding Arrays (#1845) @cwfitzgerald
- Implement unary vector operators (#1820) @teoxoy
- Implement zero value constructors and constructors that infer their type from their parameters (#1790) @teoxoy
- Implement invariant attribute (#1789, #1822) @teoxoy @jimblandy
- Implement increment and decrement statements (#1788, #1912) @teoxoy
- Implement
while
loop (#1787) @teoxoy - Fix array size on globals (#1717) @jimblandy
- Implement integer vector overloads for
dot
function (#1689) @francesco-cattoglio - Implement block comments (#1675) @kocsis1david
- Implement assignment binary operators (#1662) @kvark
- Implement
radians
/degrees
builtin functions (#1627) @encounter - Implement
findLsb
/findMsb
builtin functions (#1473) @fintelia - Implement
textureGather
/textureGatherCompare
builtin functions (#1596) @kvark
SPV-IN
- Implement
OpBitReverse
andOpBitCount
(#1954) @JCapucho - Add
MultiView
toSUPPORTED_CAPABILITIES
(#1934) @expenses - Translate
OpSMod
andOpFMod
correctly (#1867, #1995) @teoxoy @JCapucho - Error on unsupported
MatrixStride
(#1805) @teoxoy - Align array stride for undecorated arrays (#1724) @JCapucho
GLSL-IN
- Don't allow empty last case in switch (#1981) @JCapucho
- Fix last case falltrough and empty switch (#1981) @JCapucho
- Splat inputs for smoothstep if needed (#1976) @JCapucho
- Fix parameter not changing to depth (#1967) @JCapucho
- Fix matrix multiplication check (#1953) @JCapucho
- Fix panic (stop emitter in conditional) (#1952) @JCapucho
- Translate
mod
fn correctly (#1867) @teoxoy - Make the ternary operator behave as an if (#1877) @JCapucho
- Add support for
clamp
function (#1502) @sjinno - Better errors for bad constant expression (#1501) @sjinno
- Error on a
matCx2
used with thestd140
layout (#1806) @teoxoy - Allow nested accesses in lhs positions (#1794) @JCapucho
- Use forced conversions for vector/matrix constructors (#1796) @JCapucho
- Add support for
barrier
function (#1793) @fintelia - Fix panic (resume expression emit after
imageStore
) (#1795) @JCapucho - Allow multiple array specifiers (#1780) @JCapucho
- Fix memory qualifiers being inverted (#1779) @JCapucho
- Support arrays as input/output types (#1759) @JCapucho
- Fix freestanding constructor parsing (#1758) @JCapucho
- Fix matrix - scalar operations (#1757) @JCapucho
- Fix matrix - matrix division (#1757) @JCapucho
- Fix matrix comparisons (#1757) @JCapucho
- Add support for
texelFetchOffset
(#1746) @JCapucho - Inject
sampler2DMSArray
builtins on use (#1737) @JCapucho - Inject
samplerCubeArray
builtins on use (#1736) @JCapucho - Add support for image builtin functions (#1723) @JCapucho
- Add support for image declarations (#1723) @JCapucho
- Texture builtins fixes (#1719) @JCapucho
- Type qualifiers rework (#1713) @JCapucho
texelFetch
accept multisampled textures (#1715) @JCapucho- Fix panic when culling nested block (#1714) @JCapucho
- Fix composite constructors (#1631) @JCapucho
- Fix using swizzle as out arguments (#1632) @JCapucho
SPV-OUT
- Implement
reverseBits
andcountOneBits
(#1897) @hasali19 - Use
OpCopyObject
for matrix identity casts (#1916) @teoxoy - Use
OpCopyObject
for bool - bool conversion due toOpBitcast
not being feasible for booleans (#1916) @teoxoy - Zero init variables in function and private address spaces (#1871) @teoxoy
- Use
SRem
instead ofSMod
(#1867) @teoxoy - Add support for integer vector - scalar multiplication (#1820) @teoxoy
- Add support for matrix addition and subtraction (#1820) @teoxoy
- Emit required decorations on wrapper struct types (#1815) @jimblandy
- Decorate array and struct type layouts unconditionally (#1815) @jimblandy
- Fix wrong
MatrixStride
formatCx2
andmat2xR
(#1781) @teoxoy - Use
OpImageQuerySize
for MS images (#1742) @JCapucho
MSL-OUT
- Insert padding initialization for global constants (#1988) @teoxoy
- Don't rely on cached expressions (#1975) @JCapucho
- Fix pointers to private or workgroup address spaces possibly being read only (#1901) @teoxoy
- Zero init variables in function address space (#1871) @teoxoy
- Make binding arrays play nice with bounds checks (#1855) @cwfitzgerald
- Permit
invariant
qualifier on vertex shader outputs (#1821) @jimblandy - Fix packed
vec3
stores (#1816) @teoxoy - Actually test push constants to be used (#1767) @kvark
- Properly rename entry point arguments for struct members (#1766) @jimblandy
- Qualify read-only storage with const (#1763) @kvark
- Fix not unary operator for integer scalars (#1760) @vincentisambart
- Add bounds checks for
ImageLoad
andImageStore
(#1730) @jimblandy - Fix resource bindings for non-structures (#1718) @kvark
- Always check whether _buffer_sizes arg is needed (#1717) @jimblandy
- WGSL storage address space should always correspond to MSL device address space (#1711) @wtholliday
- Mitigation for MSL atomic bounds check (#1703) @glalonde
HLSL-OUT
- More
matCx2
fixes (#1989) (#1989) @teoxoy - Fix fallthrough in switch statements (#1920) @teoxoy
- Fix missing break statements (#1919) @teoxoy
- Fix
countOneBits
andreverseBits
for signed integers (#1928) @hasali19 - Fix array constructor return type (#1914) @teoxoy
- Fix hlsl output for writes to scalar/vector storage buffer (#1903) @hasali19
- Use
fmod
instead of%
(#1867) @teoxoy - Use wrapped constructors when loading from storage address space (#1893) @teoxoy
- Zero init struct constructor (#1890) @teoxoy
- Flesh out matrix handling documentation (#1850) @jimblandy
- Emit
row_major
qualifier on matrix uniform globals (#1846) @jimblandy - Fix bool splat (#1820) @teoxoy
- Add more padding when necessary (#1814) @teoxoy
- Support multidimensional arrays (#1814) @teoxoy
- Don't output interpolation modifier if it's the default (#1809) @NoelTautges
- Fix
matCx2
translation for uniform buffers (#1802) @teoxoy - Fix modifiers not being written in the vertex output and fragment input structs (#1789) @teoxoy
- Fix matrix not being declared as transposed (#1784) @teoxoy
- Insert padding between struct members (#1786) @teoxoy
- Fix not unary operator for integer scalars (#1760) @vincentisambart
GLSL-OUT
- Fix vector bitcasts (#1966) (#1966) @expenses
- Perform casts in int only math functions (#1978) @JCapucho
- Don't rely on cached expressions (#1975) @JCapucho
- Fix type error for
countOneBits
implementation (#1897) @hasali19 - Fix storage format for
Rgba8Unorm
(#1955) @JCapucho - Implement bounds checks for
ImageLoad
(#1889) @JCapucho - Fix feature search in expressions (#1887) @JCapucho
- Emit globals of any type (#1823) @jimblandy
- Add support for boolean vector
~
,|
and&
ops (#1820) @teoxoy - Fix array function arguments (#1814) @teoxoy
- Write constant sized array type for uniform (#1768) @hatoo
- Texture function fixes (#1742) @JCapucho
- Push constants use anonymous uniforms (#1683) @JCapucho
- Add support for push constant emulation (#1672) @JCapucho
- Skip unsized types if unused (#1649) @kvark
- Write struct and array initializers (#1644) @JCapucho