This repository was archived by the owner on Jan 29, 2025. It is now read-only.
v0.9.0
API
- Rename
TypeFlagsINTERFACE/HOST_SHAREDtoIO_SHARED/HOST_SHAREABLE(#1872) @jimblandy - Expose more error information (#1827, #1937) @jakobhellermann @nical @jimblandy
- Do not unconditionally make error output colorful (#1707) @rhysd
- Rename
StorageClasstoAddressSpace(#1699) @kvark - Add a way to emit errors to a path (#1640) @laptou
CLI
- Add
bincoderepresentation (#1729) @kvark - Include file path in WGSL parse error (#1708) @rhysd
- Add
--versionflag (#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
FunctionInfodoc 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_INDEXINGbitflag (#1915) @cwfitzgerald - Properly check that user-defined IO uses IO-shareable types (#912) @jimblandy
- Validate
ValuePointerexactly like aPointerto aScalar(#1875) @jimblandy - Reject empty structs (#1826) @jimblandy
- Validate uniform address space layout constraints (#1812) @teoxoy
- Improve
AddressSpacerelated 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->smoothstepfindLsb->firstTrailingBitfindMsb->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
smoothSteptosmoothstep(#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/findMsbtofirstTrailingBit/firstLeadingBit(#1735) @kvark - Make parenthesis optional for
ifandswitchstatements (#1725) @Gordon-F - Declare attribtues with
@attribinstead of[[attrib]](#1676) @kvark - Allow non-structure buffer types (#1682) @kvark
- Remove
strideattribute (#1681) @kvark
Improvements
- Implement complete validation for size and align attributes (#1979) @teoxoy
- Implement
firstTrailingBit/firstLeadingBitu32 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
whileloop (#1787) @teoxoy - Fix array size on globals (#1717) @jimblandy
- Implement integer vector overloads for
dotfunction (#1689) @francesco-cattoglio - Implement block comments (#1675) @kocsis1david
- Implement assignment binary operators (#1662) @kvark
- Implement
radians/degreesbuiltin functions (#1627) @encounter - Implement
findLsb/findMsbbuiltin functions (#1473) @fintelia - Implement
textureGather/textureGatherComparebuiltin functions (#1596) @kvark
SPV-IN
- Implement
OpBitReverseandOpBitCount(#1954) @JCapucho - Add
MultiViewtoSUPPORTED_CAPABILITIES(#1934) @expenses - Translate
OpSModandOpFModcorrectly (#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
modfn correctly (#1867) @teoxoy - Make the ternary operator behave as an if (#1877) @JCapucho
- Add support for
clampfunction (#1502) @sjinno - Better errors for bad constant expression (#1501) @sjinno
- Error on a
matCx2used with thestd140layout (#1806) @teoxoy - Allow nested accesses in lhs positions (#1794) @JCapucho
- Use forced conversions for vector/matrix constructors (#1796) @JCapucho
- Add support for
barrierfunction (#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
sampler2DMSArraybuiltins on use (#1737) @JCapucho - Inject
samplerCubeArraybuiltins 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
texelFetchaccept 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
reverseBitsandcountOneBits(#1897) @hasali19 - Use
OpCopyObjectfor matrix identity casts (#1916) @teoxoy - Use
OpCopyObjectfor bool - bool conversion due toOpBitcastnot being feasible for booleans (#1916) @teoxoy - Zero init variables in function and private address spaces (#1871) @teoxoy
- Use
SReminstead 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
MatrixStrideformatCx2andmat2xR(#1781) @teoxoy - Use
OpImageQuerySizefor 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
invariantqualifier on vertex shader outputs (#1821) @jimblandy - Fix packed
vec3stores (#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
ImageLoadandImageStore(#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
matCx2fixes (#1989) (#1989) @teoxoy - Fix fallthrough in switch statements (#1920) @teoxoy
- Fix missing break statements (#1919) @teoxoy
- Fix
countOneBitsandreverseBitsfor signed integers (#1928) @hasali19 - Fix array constructor return type (#1914) @teoxoy
- Fix hlsl output for writes to scalar/vector storage buffer (#1903) @hasali19
- Use
fmodinstead 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_majorqualifier 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
matCx2translation 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
countOneBitsimplementation (#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