==> program.toml <==1# doom: a raycaster, 4 tasks a frame, the pose and keys on the GPU
2# (layout: mesh_abi::v2::views::doom; docs/plan-program-loading.md §3.8)
3name = "doom"
4abi = 6
5view_bytes = 0x4000
6view_abi = 2
7snap_bytes = 0x3100
8nodes = 4
9policy = "periodic"
10hz = 30
11fanout = 4
12in_flight = "batch"
13input = 64
14counters = ["frames", "keys", "stalls", "follows"]
15fields = ["pos_x:f32:0x0", "pos_y:f32:0x4", "dir_x:f32:0x8", "dir_y:f32:0xc", "plane_x:f32:0x10", "plane_y:f32:0x14", "frame:u32:0x20", "keys:u32:0x28", "shown:u32:0x2000", "place:u32:0x2004", "lat_us:u32:0x200c"]
16autostart = true
17backends = ["cuda", "metal"]
18# Placement across a cluster (mesh-abi v2 "placement"): pin to one machine, or
19# split its 4 parts of 32 columns over several (the owner of part 0 owns the pose).
20place = "split"
21place_state = ["0x0:0x24", "0x28:0x4", "0x100:0x400"]
22place_frame = 0x20
23place_out = ["0x1000:0x200", "0x1400:0x200", "0x1800:0x200", "0x1c00:0x200"]
24place_show = 0x2000