Tint changes during Origin Trial
Changes for M106
array() constructor can now infer type and count. tint:1628
static_assert statement has been added. tint:1625
- The list of reserved words has been sync'd to the WGSL specification. tint:1463
Changes for M105
var<private> can now infer the storage type, like function-scope
atanh builtin functions are now supported tint:1465
smoothStep() builtin has been removed (use
smoothstep instead). tint:1483
let has been replaced with module-scope
- Note: Module-scope
const does not support structure types. Use
var<private> if you need a module-scope structure type.
- Struct members can no longer be separated with semicolons (use commas instead). tint:1475
- Single scalar matrix constructors have been removed. These were never part of the WGSL spec. tint:1597
@stage attribute has been deprecated. The short forms should be used instead (
Changes for M104
- Tint now supports abstract-numerics, removing the need to always suffix unsigned integers with
- Parsing of
Changes for M103
- Produce warnings for when calling barriers, textureSample, and derivative builtins in non-uniform control flow tint:880
- Matrix identity constructors and constructors for a single scalar value are now supported tint:1545
atomicCompareExchangeWeak returns a struct instead of a vec2. tint:1185
Changes for M102
- Parentheses are no longer required around expressions for if and switch statements tint:1424
- Compound assignment statements are now supported. tint:1325
- Postfix increment and decrement statements are now supported. tint:1488
- The colon in case statements is now optional. tint:1485
- Struct members are now separated by commas. tint:1475
@block attribute has been removed. tint:1324
@stride attribute has been removed. tint:1381
- Attributes using
[[attribute]] syntax are no longer supported. tint:1382
elseif keyword is no longer supported. tint:1289
smoothStep() builtin has been renamed to
Changes for M101
- Tint now supports unicode identifiers. tint:1437
isNormal() builtins have been removed. tint:1312
Changes for M100
@interpolate(flat) attribute must now be specified on integral user-defined IO. tint:1224
ignore() intrinsic has been removed. Use phoney-assignment instead:
_ = expr;.
break statements in
continuing blocks are now correctly validated.
- Module-scope declarations can now be declared in any order. tint:1266
override keyword and
@id() attribute for pipeline-overridable constants are now supported, replacing the
@override attribute. tint:1403
Changes for M99
Obviously infinite loops (no condition, no break) are now a validation error.
The following features have been deprecated and will be removed in M102:
[[block]] attribute has been deprecated. tint:1324
- Attributes now use the
@decoration syntax instead of the
[[decoration]] syntax. tint:1382
elseif has been replaced with
else if. tint:1289
[[stride]] attribute has been deprecated. tint:1381
- Vector and matrix element type can now be inferred from constructor argument types. tint:1334
- Added builtins
radians() for converting between degrees and radians. tint:1329
let arrays and matrices can now be dynamically indexed. tint:1352
- Storage and Uniform buffer types no longer have to be structures. tint:1372
- A struct declaration does not have to be followed by a semicolon. tint:1380
- Fixed an issue where for-loops that contain array or structure constructors in the loop initializer statements, condition expressions or continuing statements could fail to compile. tint:1364
Changes for M98
- Taking the address of a vector component is no longer allowed.
- Module-scope declarations can no longer alias a builtin name. tint:1318
- It is now an error to call a function either directly or transitively, from a loop continuing block, that uses
isNormal() builtins has been deprecated and will be removed in M101. tint:1312
- New texture gather builtins:
- Shadowing is now fully supported. tint:819
dot() builtin now supports integer vector types.
- Identifiers can now start with a single leading underscore. tint:1292
- Control flow analysis has been improved, and functions no longer need to
return if the statement is unreachable. tint:1302
- Unreachable statements now produce a warning instead of an error, to allow WGSL code to be updated to the new analysis behavior. These warnings may become errors in the future gpuweb#2378
- Fixed an issue where using a module-scoped
let in a
workgroup_size may result in a compilation error. tint:1320
Changes for M97
frexp() builtin overloads that take a pointer second parameter have been removed.
- Deprecated texture builtin functions that accepted a
read access controlled storage texture have been removed.
- Storage textures must now only use the
write access control.
ignore() builtin has been replaced with phony-assignment. gpuweb#2127
all() now support a
bool parameter. These simply return the passed argument. tint:1253
- Call statements may now include functions that return a value (
ignore() is no longer needed).
interpolate(flat) attribute can now be specified on integral user-defined IO. It will eventually become an error to define integral user-defined IO without this attribute.
- Matrix construction from scalar element values is now supported.
- Swizzling of
vec3 types in
uniform buffers has been fixed for Metal 1.x. tint:1249
- Calling a function that returns an unused value no longer produces an FXC compilation error. tint:1259
abs() fixed for unsigned integers on SPIR-V backend
Changes for M95
- The size of an array can now be defined using a non-overridable module-scope constant
num_workgroups builtin is now supported.
- Hex floats: now correctly errors when the magnitude is non-zero, and the exponent would cause overflow. tint:1150, tint:1166
- Identifiers beginning with an underscore are now correctly rejected. tint:1179