53 KiB
53 KiB
Change Log
For changelogs after v0.14, see the wgpu changelog.
v0.14 (2023-10-25)
GENERAL
- Add support for const-expressions. (#2309) @teoxoy, @jimblandy
- Add support for the
rgb10a2uintstorage format. (#2525) @teoxoy - Implement module compaction for snapshot testing and the CLI. (#2472) @jimblandy
- Fix validation and GLSL parsing of
ldexp. (#2449) @fornwall - Add support for dual source blending. (#2427) @freqmod
- Bump
indexmapto v2. (#2426) @daxpedda - Bump MSRV to 1.65. (#2420) @jimblandy
API
- Split
UnaryOperator::NotintoUnaryOperator::LogicalNot&UnaryOperator::BitwiseNot. (#2554) @teoxoy - Remove
IsFinite&IsNormalrelational functions. (#2532) @teoxoy - Derive
PartialEqonExpression. (#2417) @robtfm - Use
FastIndexMapforSpecialTypes::predeclared_types. (#2495) @jimblandy
CLI
- Change
--generate-debug-symbolsfrom anoptionto aswitch. (#2472) @jimblandy - Add support for
.{vert,frag,comp}.glslfiles. (#2462) @eliemichel
VALIDATOR
- Require
Capabilities::FLOAT64for 64-bit floating-point literals. (#2567) @jimblandy - Add
Capabilities::CUBE_ARRAY_TEXTURES. (#2530) @teoxoy - Disallow passing pointers to variables in the workgroup address space to functions. (#2507) @teoxoy
- Avoid OOM with large sparse resource bindings. (#2561) @teoxoy
- Require that
FunctionandPrivatevariables beCONSTRUCTIBLE. (#2545) @jimblandy - Disallow floating-point NaNs and infinities. (#2508) @teoxoy
- Temporarily disable uniformity analysis for the fragment stage. (#2515) @teoxoy
- Validate that
textureSampleBiasis only used in the fragment stage. (#2515) @teoxoy - Validate variable initializer for address spaces. (#2513) @teoxoy
- Prevent using multiple push constant variables in one entry point. (#2484) @andriyDev
- Validate
binding_arrayvariable address space. (#2422) @teoxoy - Validate storage buffer access. (#2415) @teoxoy
WGSL-IN
- Fix expected min arg count of
textureLoad. (#2584) @teoxoy - Turn
Error::OtherintoError::Internal, to help devs. (#2574) @jimblandy - Fix OOB typifier indexing. (#2570) @teoxoy
- Add support for the
bgra8unormstorage format. (#2542 & #2550) @nical - Remove the
outerProductbuilt-in function. (#2535) @teoxoy - Add support for
i32overload of thesignbuilt-in function. (#2463) @fornwall - Properly implement
modfandfrexp. (#2454) @fornwall - Add support for scalar overloads of
all&anybuilt-in functions. (#2445) @fornwall - Don't splat the left hand operand of a binary operation if it's not a scalar. (#2444) @fornwall
- Avoid splatting all binary operator expressions. (#2440) @fornwall
- Error on repeated or missing
@workgroup_size(). (#2435) @fornwall - Error on repeated attributes. (#2428) @fornwall
- Fix error message for invalid
texture{Load,Store}()on arrayed textures. (#2432) @fornwall
SPV-IN
- Disable
Modf&Frexpand translateModfStruct&FrexpStructto their IR equivalents. (#2527) @teoxoy - Don't advertise support for
Capability::ImageMSArray&Capability::InterpolationFunction. (#2529) @teoxoy - Fix
OpImageQueriesto allow Uints. (#2404) @evahop
GLSL-IN
- Disable
modf&frexp. (#2527) @teoxoy
SPV-OUT
- Require
ClipDistance&CullDistancecapabilities if necessary. (#2528) @teoxoy - Change
naga::back::spv::DebugInfo::file_nameto a&Path. (#2501) @jimblandy - Always give structs with runtime arrays a
Blockdecoration. (#2455) @TheoDulka - Decorate the result of the
OpLoadwithNonUniform(not the access chain) when loading images/samplers (resources in the Handle address space). (#2422) @teoxoy - Cache
OpConstantNull. (#2414) @evahop
MSL-OUT
- Add and fix minimum Metal version checks for optional functionality. (#2486) @teoxoy
- Make varyings' struct members unique. (#2521) @evahop
- Add experimental vertex pulling transform flag. (#5254) @bradwerth
GLSL-OUT
- Cull functions that should not be available for a given stage. (#2531) @teoxoy
- Rename identifiers containing double underscores. (#2510) @evahop
- Polyfill
frexp. (#2504) @evahop - Add built-in functions to keywords. (#2410) @fornwall
WGSL-OUT
- Generate correct code for bit complement on integers. (#2548) @jimblandy
- Don't include type parameter in splat expressions. (#2469) @jimblandy
v0.13 (2023-07-21)
GENERAL
- Move from
maketocargo xtaskworkflows. (#2297) @ErichDonGubler - Omit non referenced expressions from output. (#2378) @teoxoy
- Bump
bitflagsto v2. (#2358) @daxpedda - Implement
workgroupUniformLoad. (#2201) @DJMcNab
API
- Expose early depth test field. (#2393) @Joeoc2001
- Split image bounds check policy. (#2265) @teoxoy
- Change type of constant sized arrays to
NonZeroU32. (#2337) @teoxoy - Introduce
GlobalCtx. (#2335) @teoxoy - Introduce
Expression::Literal. (#2333) @teoxoy - Introduce
Expression::ZeroValue. (#2332) @teoxoy - Add support for const-expressions (only at the API level, functionality is still WIP). (#2266) @teoxoy, @jimblandy
DOCS
- Document which expressions are in scope for a
break_ifexpression. (#2326) @jimblandy
VALIDATOR
- Don't
use std::opsIndex, used only when"validate"is on. (#2383) @jimblandy - Remove unneeded
ConstantError::Unresolved{Component,Size}. (#2330) @ErichDonGubler - Remove
TypeError::UnresolvedBase. (#2308) @ErichDonGubler
WGSL-IN
- Error on param redefinition. (#2342) @SparkyPotato
SPV-IN
- Improve documentation for SPIR-V control flow parsing. (#2324) @jimblandy
- Obey the
is_depthfield ofOpTypeImage. (#2341) @expenses - Convert conditional backedges to
break if. (#2290) @eddyb
GLSL-IN
- Support commas in structure definitions. (#2400) @fornwall
SPV-OUT
- Add debug info. (#2379) @wicast
- Use
IndexSetinstead ofHashSetfor iterated sets (capabilities/extensions). (#2389) @eddyb - Support array bindings of buffers. (#2282) @kvark
MSL-OUT
- Rename
allow_point_sizetoallow_and_force_point_size. (#2280) @teoxoy - Initialize arrays inline. (#2331) @teoxoy
HLSL-OUT
- Implement Pack/Unpack for HLSL. (#2353) @Elabajaba
- Complete HLSL reserved symbols. (#2367) @teoxoy
- Handle case insensitive FXC keywords. (#2347) @PJB3005
- Fix return type for firstbitlow/high. (#2315) @evahop
GLSL-OUT
textureSizelevel must be a signed integer. (#2397) @nical- Fix functions with array return type. (#2382) @Gordon-F
WGSL-OUT
- Output
@interpolate(flat)attribute for integer locations. (#2318) @expenses
v0.12.3 (2023-07-09)
WGSL-OUT
- (Backport) Output
@interpolate(flat)attribute for integer locations. (#2318) @expenses
v0.12.2 (2023-05-30)
SPV-OUT
- (Backport) Support array bindings of buffers. (#2282) @kvark
v0.12.1 (2023-05-18)
SPV-IN
- (Backport) Convert conditional backedges to
break if. (#2290) @eddyb
v0.12 (2023-04-19)
GENERAL
- Allow
array_indexto be unsigned. (#2298) @daxpedda - Add ray query support. (#2256) @kvark
- Add partial derivative builtins. (#2277) @evahop
- Skip
gl_PerVertexunused builtins in the SPIR-V frontend. (#2272) @teoxoy - Differentiate between
i32andu32in switch statement cases. (#2269) @evahop - Fix zero initialization of workgroup memory. (#2259) @teoxoy
- Add
countTrailingZeros. (#2243) @gents83 - Fix texture built-ins where u32 was expected. (#2245) @evahop
- Add
countLeadingZeros. (#2226) @evahop - [glsl/hlsl-out] Write sizes of arrays behind pointers in function arguments. (#2250) @pluiedev
VALIDATOR
- Validate vertex stage returns the position built-in. (#2264) @teoxoy
- Enforce discard is only used in the fragment stage. (#2262) @Uriopass
- Add
Capabilities::MULTISAMPLED_SHADING. (#2255) @teoxoy - Add
Capabilities::EARLY_DEPTH_TEST. (#2255) @teoxoy - Add
Capabilities::MULTIVIEW. (#2255) @teoxoy - Improve forward declaration validation. (#2232) @JCapucho
WGSL-IN
- Use
aliasinstead oftypefor type aliases. (#2299) @FL33TW00D - Add predeclared vector and matrix type aliases. (#2251) @evahop
- Improve invalid assignment diagnostic. (#2233) @SparkyPotato
- Expect semicolons wherever required. (#2233) @SparkyPotato
- Fix panic on invalid zero array size. (#2233) @SparkyPotato
- Check for leading
{while parsing a block. (#2233) @SparkyPotato
SPV-IN
- Don't apply interpolation to fragment shaders outputs. (#2239) @JCapucho
GLSL-IN
- Add switch implicit type conversion. (#2273) @evahop
- Document some fields of
naga::front::glsl::context::Context. (#2244) @jimblandy - Perform output parameters implicit casts. (#2063) @JCapucho
- Add
notvector relational builtin. (#2227) @JCapucho - Add double overloads for relational vector builtins. (#2227) @JCapucho
- Add bool overloads for relational vector builtins. (#2227) @JCapucho
SPV-OUT
- Fix invalid spirv being generated from integer dot products. (#2291) @PyryM
- Fix adding illegal decorators on fragment outputs. (#2286) @Wumpf
- Fix
countLeadingZerosimpl. (#2258) @teoxoy - Cache constant composites. (#2257) @evahop
- Support SPIR-V version 1.4. (#2230) @kvark
MSL-OUT
- Replace
per_stage_mapwithper_entry_point_map(#2237) @armansito - Update
firstLeadingBitfor signed integers (#2235) @evahop
HLSL-OUT
- Use
Interlocked<op>intrinsic for atomic integers (#2294) (#2294) @ErichDonGubler - Document storage access generation. (#2295) @jimblandy
- Emit constructor functions for arrays. (#2281) @ErichDonGubler
- Clear
named_expressionsinserted by duplicated blocks. (#2116) @teoxoy
GLSL-OUT
- Skip
invariantforgl_FragCoordon WebGL2. (#2254) @grovesNL - Inject default
gl_PointSize = 1.0in vertex shaders ifFORCE_POINT_SIZEoption was set. (#2223) @REASY
v0.11.1 (2023-05-18)
SPV-IN
- (Backport) Convert conditional backedges to
break if. (#2290) @eddyb
v0.11 (2023-01-25)
API
- Add handle validation pass to
Validator(#2090) @ErichDonGubler - Add
Range::new_from_bounds(#2148) @robtfm
DOCS
- Fix docs for
Emitstatements (#2208) @jimblandy - Fix invalid
<...>URLs with code spans (#2176) @ErichDonGubler - Explain how case clauses with multiple selectors are supported (#2126) @teoxoy
- Document
EarlyDepthTestandConservativeDepthsyntax (#2132) @coreh
VALIDATOR
- Allow
u32coordinates fortextureStore/textureLoad(#2172) @PENGUINLIONG - Fix array being flagged as constructible when its base isn't (#2111) @teoxoy
- Add
type_flagstoModuleInfo(#2111) @teoxoy - Remove overly restrictive array stride check (#2215) @fintelia
- Let the uniformity analysis trust the handle validation pass (#2200) @jimblandy
- Fix warnings when building tests without validation (#2177) @jimblandy
- Add
ValidationFlags::BINDINGS(#2156) @kvark - Fix
textureGatherontexture_2d<u32/i32>(#2138) @JMS55
ALL (FRONTENDS/BACKENDS)
ALL BACKENDS
- Add support for zero-initializing workgroup memory (#2111) @teoxoy
WGSL-IN
- Implement module-level scoping (#2075) @SparkyPotato
- Remove
isFiniteandisNormal(#2218) @evahop - Update inverse hyperbolic built-ins (#2218) @evahop
- Add
refractbuilt-in (#2218) @evahop - Update reserved keywords (#2130) @teoxoy
- Remove non-32bit integers (#2146) @teoxoy
- Remove
workgroup_sizebuiltin (#2147) @teoxoy - Remove fallthrough statement (#2126) @teoxoy
SPV-IN
- Support binding arrays (#2199) @Patryk27
GLSL-IN
- Fix position propagation in lowering (#2079) @JCapucho
- Update initializer list type when parsing (#2066) @JCapucho
- Parenthesize unary negations to avoid
--(#2087) @ErichDonGubler
SPV-OUT
- Add support for
atomicCompareExchangeWeak(#2165) @aweinstock314 - Omit extra switch case blocks where possible (#2126) @teoxoy
- Fix switch cases after default not being output (#2126) @teoxoy
MSL-OUT
- Don't panic on missing bindings (#2175) @kvark
- Omit extra switch case blocks where possible (#2126) @teoxoy
- Fix
textureGathercompatibility on macOS 10.13 (#2104) @xiaopengli89 - Fix incorrect atomic bounds check on metal back-end (#2099) @raphlinus
- Parenthesize unary negations to avoid
--(#2087) @ErichDonGubler
HLSL-OUT
- Simplify
write_default_init(#2111) @teoxoy - Omit extra switch case blocks where possible (#2126) @teoxoy
- Properly implement bitcast (#2097) @cwfitzgerald
- Fix storage access chain through a matrix (#2097) @cwfitzgerald
- Workaround FXC Bug in Matrix Indexing (#2096) @cwfitzgerald
- Parenthesize unary negations to avoid
--(#2087) @ErichDonGubler
GLSL-OUT
- Introduce a flag to include unused items (#2205) @robtfm
- Use
fmapolyfill for versions below gles 320 (#2197) @teoxoy - Emit reflection info for non-struct uniforms (#2189) @Rainb0wCodes
- Introduce a new block for switch cases (#2126) @teoxoy
WGSL-OUT
- Write correct scalar kind when
width != 4(#1514) @fintelia
v0.10.1 (2023-06-21)
SPV-OUT
- Backport #2389 (Use
IndexSetinstead ofHashSetfor iterated sets (capabilities/extensions)) by @eddyb, @jimblandy in https://github.com/gfx-rs/naga/pull/2391
SPV-IN
- Backport #2290 (Convert conditional backedges to
break if) by @eddyb in https://github.com/gfx-rs/naga/pull/2387
v0.10 (2022-10-05)
- Make termcolor dependency optional by @AldaronLau in https://github.com/gfx-rs/naga/pull/2014
- Fix clippy lints for 1.63 by @JCapucho in https://github.com/gfx-rs/naga/pull/2026
- Saturate by @evahop in https://github.com/gfx-rs/naga/pull/2025
- Use
Option::as_derefas appropriate. by @jimblandy in https://github.com/gfx-rs/naga/pull/2040 - Explicitly enable std for indexmap by @maxammann in https://github.com/gfx-rs/naga/pull/2062
- Fix compiler warning by @Gordon-F in https://github.com/gfx-rs/naga/pull/2074
API
- Implement
CloneforModuleby @daxpedda in https://github.com/gfx-rs/naga/pull/2013 - Remove the glsl-validate feature by @JCapucho in https://github.com/gfx-rs/naga/pull/2045
DOCS
- Document arithmetic binary operation type rules. by @jimblandy in https://github.com/gfx-rs/naga/pull/2051
VALIDATOR
- Add
emit_to_{stderr,string}helpers to validation error by @nolanderc in https://github.com/gfx-rs/naga/pull/2012 - Check regular functions don't have bindings by @JCapucho in https://github.com/gfx-rs/naga/pull/2050
WGSL-IN
- Update reserved WGSL keywords by @norepimorphism in https://github.com/gfx-rs/naga/pull/2009
- Implement lexical scopes by @JCapucho in https://github.com/gfx-rs/naga/pull/2024
- Rename
ScopetoRule, since we now have lexical scope. by @jimblandy in https://github.com/gfx-rs/naga/pull/2042 - Splat on compound assignments by @JCapucho in https://github.com/gfx-rs/naga/pull/2049
- Fix bad span in assignment lhs error by @JCapucho in https://github.com/gfx-rs/naga/pull/2054
- Fix inclusion of trivia in spans by @SparkyPotato in https://github.com/gfx-rs/naga/pull/2055
- Improve assignment diagnostics by @SparkyPotato in https://github.com/gfx-rs/naga/pull/2056
- Break up long string, reformat rest of file. by @jimblandy in https://github.com/gfx-rs/naga/pull/2057
- Fix line endings on wgsl reserved words list. by @jimblandy in https://github.com/gfx-rs/naga/pull/2059
GLSL-IN
- Add support for .length() by @SpaceCat-Chan in https://github.com/gfx-rs/naga/pull/2017
- Fix missing stores for local declarations by @adeline-sparks in https://github.com/gfx-rs/naga/pull/2029
- Migrate to
SymbolTableby @JCapucho in https://github.com/gfx-rs/naga/pull/2044 - Update initializer list type when parsing by @JCapucho in https://github.com/gfx-rs/naga/pull/2066
SPV-OUT
- Don't decorate varyings with interpolation modes at pipeline start/end by @nical in https://github.com/gfx-rs/naga/pull/2038
- Decorate integer builtins as Flat in the spirv writer by @nical in https://github.com/gfx-rs/naga/pull/2035
- Properly combine the fixes for #2035 and #2038. by @jimblandy in https://github.com/gfx-rs/naga/pull/2041
- Don't emit no-op
OpBitCastinstructions. by @jimblandy in https://github.com/gfx-rs/naga/pull/2043
HLSL-OUT
- Use the namer to sanitise entrypoint input/output struct names by @expenses in https://github.com/gfx-rs/naga/pull/2001
- Handle Unpack2x16float in hlsl by @expenses in https://github.com/gfx-rs/naga/pull/2002
- Add support for push constants by @JCapucho in https://github.com/gfx-rs/naga/pull/2005
DOT-OUT
- Improvements by @JCapucho in https://github.com/gfx-rs/naga/pull/1987
v0.9 (2022-06-30)
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 (relevant 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 attributes 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 fallthrough 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
v0.8.5 (2022-01-25)
MSL-OUT
- Make VS-output positions invariant on even more systems (#1697) @cwfitzgerald
- Improve support for point primitives (#1696) @kvark
v0.8.4 (2022-01-24)
MSL-OUT
- Make VS-output positions invariant if possible (#1687) @kvark
GLSL-OUT
- Fix
floatBitsToUintspelling (#1688) @cwfitzgerald - Call proper memory barrier functions (#1680) @francesco-cattoglio
v0.8.3 (2022-01-20)
- Don't pin
indexmapversion (#1666) @a1phyr
MSL-OUT
- Fix support for point primitives (#1674) @kvark
GLSL-OUT
- Fix sampler association (#1671) @JCapucho
v0.8.2 (2022-01-11)
VALIDATOR
- Check structure resource types (#1639) @kvark
WGSL-IN
- Improve type mismatch errors (#1658) @Gordon-F
SPV-IN
SPV-OUT
- Fix modulo operator (use
OpFReminstead ofOpFMod) (#1653) @JCapucho
MSL-OUT
v0.8.1 (2021-12-29)
API
- Make
WithSpanclonable (#1620) @jakobhellermann
MSL-OUT
HLSL-OUT
GLSL-OUT
v0.8 (2021-12-18)
- development release for wgpu-0.12
- lots of fixes in all parts
- validator:
- now gated by
validatefeature - nicely detailed error messages with spans
- now gated by
- API:
- image gather operations
- WGSL-in:
- remove
[[block]]attribute elseifis removed in favor ofelse if
- remove
- MSL-out:
- full out-of-bounds checking
v0.7.3 (2021-12-14)
- API:
view_indexbuiltin
- GLSL-out:
- reflect textures without samplers
- SPV-out:
- fix incorrect pack/unpack
v0.7.2 (2021-12-01)
- validator:
- check stores for proper pointer class
- HLSL-out:
- fix stores into
mat3 - respect array strides
- fix stores into
- SPV-out:
- fix multi-word constants
- WGSL-in:
- permit names starting with underscores
- SPV-in:
- cull unused builtins
- support empty debug labels
- GLSL-in:
- don't panic on invalid integer operations
v0.7.1 (2021-10-12)
- implement casts from and to booleans in the backends
v0.7 (2021-10-07)
- development release for wgpu-0.11
- API:
- bit extraction and packing functions
- hyperbolic trigonometry functions
- validation is gated by a cargo feature
view_indexbuiltin- separate bounds checking policies for locals/buffers/textures
- IR:
- types and constants are guaranteed to be unique
- WGSL-in:
- new hex literal parser
- updated list of reserved words
- rewritten logic for resolving references and pointers
switchcan use unsigned selectors
- GLSL-in:
- better support for texture sampling
- better logic for auto-splatting scalars
- GLSL-out:
- fixed storage buffer layout
- fix module operator
- HLSL-out:
- fixed texture queries
- SPV-in:
- control flow handling is rewritten from scratch
- SPV-out:
- fully covered out-of-bounds checking
- option to emit point size
- option to clamp output depth
v0.6.3 (2021-09-08)
- Reduced heap allocations when generating WGSL, HLSL, and GLSL
- WGSL-in:
- support module-scope
lettype inference
- support module-scope
- SPV-in:
- fix depth sampling with projection
- HLSL-out:
- fix local struct construction
- GLSL-out:
- fix
select()order
- fix
- SPV-out:
- allow working around Adreno issue with
OpName
- allow working around Adreno issue with
v0.6.2 (2021-09-01)
- SPV-out fixes:
- requested capabilities for 1D and cube images, storage formats
- handling
breakandcontinuein aswitchstatement - avoid generating duplicate
OpTypeImagetypes
- HLSL-out fixes:
- fix output struct member names
- MSL-out fixes:
- fix packing of fields in interface structs
- GLSL-out fixes:
- fix non-fallthrough
switchcases
- fix non-fallthrough
- GLSL-in fixes:
- avoid infinite loop on invalid statements
v0.6.1 (2021-08-24)
- HLSL-out fixes:
- array arguments
- pointers to array arguments
- switch statement
- rewritten interface matching
- SPV-in fixes:
- array storage texture stores
- tracking sampling across function parameters
- updated petgraph dependencies
- MSL-out:
- gradient sampling
- GLSL-out:
- modulo operator on floats
v0.6 (2021-08-18)
- development release for wgpu-0.10
- API:
- atomic types and functions
- storage access is moved from global variables to the storage class and storage texture type
- new built-ins:
primitive_indexandnum_workgroups - support for multi-sampled depth images
- WGSL:
select()order of true/false is swapped
- HLSL backend is vastly improved and now usable
- GLSL frontend is heavily reworked
v0.5 (2021-06-18)
- development release for wgpu-0.9
- API:
- barriers
- dynamic indexing of matrices and arrays is only allowed on variables
- validator now accepts a list of IR capabilities to allow
- improved documentation
- Infrastructure:
- much richer test suite, focused around consuming or emitting WGSL
- lazy testing on large shader corpuses
- the binary is moved to a sub-crate "naga-cli"
- Frontends:
- GLSL frontend:
- rewritten from scratch and effectively revived, no longer depends on
pomelo - only supports 440/450/460 versions for now
- has optional support for codespan messages
- rewritten from scratch and effectively revived, no longer depends on
- SPIRV frontend has improved CFG resolution (still with issues unresolved)
- WGSL got better error messages, workgroup memory support
- GLSL frontend:
- Backends:
- general: better expression naming and emitting
- new HLSL backend (in progress)
- MSL:
- support
ArraySizeexpression - better texture sampling instructions
- support
- GLSL:
- multisampling on GLES
- WGSL is vastly improved and now usable
v0.4.2 (2021-05-28)
- SPIR-V frontend:
- fix image stores
- fix matrix stride check
- SPIR-V backend:
- fix auto-deriving the capabilities
- GLSL backend:
- support sample interpolation
- write out swizzled vector accesses
v0.4.1 (2021-05-14)
- numerous additions and improvements to SPIR-V frontend:
- int8, in16, int64
- null constant initializers for structs and matrices
OpArrayLength,OpCopyMemory,OpInBoundsAccessChain,OpLogicalXxxEqual- outer product
- fix struct size alignment
- initialize built-ins with default values
- fix read-only decorations on struct members
- fix struct size alignment in WGSL
- fix
fwidthin WGSL - fix scalars arrays in GLSL backend
v0.4 (2021-04-29)
- development release for wgpu-0.8
- API:
- expressions are explicitly emitted with
Statement::Emit - entry points have inputs in arguments and outputs in the result type
input/outputstorage classes are gone, butpush_constantis addedInterpolationis moved intoBinding::Locationvariant- real pointer semantics with required
Expression::Load TypeInner::ValuePointeris added- image query expressions are added
- new
Statement::ImageStore - all function calls are
Statement::Call GlobalUseis moved out into processingHeaderis removed- entry points are an array instead of a map
- new
SwizzleandSplatexpressions - interpolation qualifiers are extended and required
- struct member layout is based on the byte offsets
- expressions are explicitly emitted with
- Infrastructure:
- control flow uniformity analysis
- texture-sampler combination gathering
CallGraphprocessor is moved out intoglslbackendInterfaceis removed, instead the analysis producesModuleInfowith all the derived info- validation of statement tree, expressions, and constants
- code linting is more strict for matches
- new GraphViz
dotbackend for pretty visualization of the IR - Metal support for inlined samplers
convertexample is transformed into the default binary target namednaga- lots of frontend and backend fixes
v0.3.2 (2021-02-15)
- fix logical expression types
- fix FragDepth semantics
- spv-in:
- derive block status of structures
- spv-out:
- add lots of missing math functions
- implement discard
v0.3.1 (2021-01-31)
- wgsl:
- support constant array sizes
- spv-out:
- fix block decorations on nested structures
- fix fixed-size arrays
- fix matrix decorations inside structures
- implement read-only decorations
v0.3 (2021-01-30)
- development release for wgpu-0.7
- API:
- math functions
- type casts
- updated storage classes
- updated image sub-types
- image sampling/loading options
- storage images
- interpolation qualifiers
- early and conservative depth
- Processors:
- name manager
- automatic layout
- termination analysis
- validation of types, constants, variables, and entry points
v0.2 (2020-08-17)
- development release for wgpu-0.6
v0.1 (2020-02-26)
- initial release