DocsDecisions

ADR-0002: No MAX / max.gpu for rendering; GPU compute is WGSL

Status: Accepted, 2026-11-08

Context #

Mojo 1.x moved GPU programming out of the standard library into the max package (max.gpu.*), per the 1.0.0 and 1.1.0 release notes. MAX device buffers are allocated and owned by MAX's runtime and cannot be imported into a wgpu WGPUBuffer or WGPUTexture; there is no documented interop for sharing memory with a wgpu surface or swap chain.

Decision #

Cinder does not depend on max at all. All GPU compute work (clustered light culling, IBL prefiltering and irradiance, BRDF LUT generation, GPU culling, particles) is written as WGSL compute shaders and dispatched through wgpu-native, in the same device and queue as rendering.

Consequences #

  • One GPU runtime, one validation layer, one set of synchronisation rules.
  • Mojo's SIMD is used on the CPU side (culling, animation, math); GPU parallelism lives in WGSL.
  • pixi.toml depends on mojo only, never on max. A CI grep fails on import max or from max.
View as MarkdownSource: docs/adr/0002-no-max-gpu.md