Similar to external blocks, NZSL should support shared blocks:
shared <OptionalName>
{
foo: i32,
bar: f64
}
Shared blocks are shared memory inside a workgroup for compute shaders, their usage is heavily linked to atomics and barriers which are currently lacking in NZSL.
Bit reinterpretation should also be supported, as float are not directly supported by atomic operations it's common to reinterpret them as integers for min/max operations.
(SPIR-V has extensions to support atomic float min/max, how should that be exposed?)
Similar to external blocks, NZSL should support shared blocks:
Shared blocks are shared memory inside a workgroup for compute shaders, their usage is heavily linked to atomics and barriers which are currently lacking in NZSL.
Bit reinterpretation should also be supported, as float are not directly supported by atomic operations it's common to reinterpret them as integers for min/max operations.
(SPIR-V has extensions to support atomic float min/max, how should that be exposed?)