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.tomldepends onmojoonly, never onmax. A CI grep fails onimport maxorfrom max.