Skip to content

v0.17.15

Choose a tag to compare

@kolkov kolkov released this 15 Jun 08:32
7429a8b

MSL: function-scope workgroup variables (PR #77, @georgebuilds)

Fixed

  • MSL workgroup vars at function-body scope — workgroup (threadgroup) variables
    are now declared inside the kernel function body instead of as entry-point parameters.
    The parameter form requires the host to call setThreadgroupMemoryLength:atIndex: before
    dispatch; our Pure Go Metal HAL does not, causing workgroup memory to silently no-op.
    Function-scope declarations are legal MSL, statically sized by the compiler, and need
    no host-side setup. Verified on Apple M3 Max with Metal 3.1 runtime (@lkmavi).

  • MSL per-entry-point workgroup zero-init filteringwriteWorkgroupZeroInit now
    filters by entry-point usage (matching Rust naga), so only workgroup vars actually used
    by the entry point are declared and zeroed.

Changed

  • CONTRIBUTING.md — snapshot test infrastructure docs: golden file naming convention
    (1:1 with Rust naga test suite), reference allow-list, adding new test shaders.
    Updated project structure and testing commands.

Quality gates

  • TestRustReference: ALL PASS (100%)
  • SPIR-V validation: 172/172 (100%)
  • golangci-lint: 0 issues
  • CI: 11/11 checks pass (Linux, macOS, Windows)
  • Hardware verified: Apple M3 Max, Metal 3.1 (@lkmavi)