forked from tinygrad/tinygrad
Stream 240KB chunks into two alternating 256KB SRAM bounce windows; each chunk ends in a unique 512B sentinel that a prebuilt SDMA ring polls before copying the chunk to VRAM, followed by an in-order drain fence that the host waits on before re-arming a window. No timing assumptions in either direction: the sentinel is in-stream proof of data landing, the fence proves a full drain. Adds a small pooled async bulk-OUT layer to USB3 so staging the next chunk overlaps the wire, and a slot_start parameter to scsi_write for the second window. 107 -> 276 MB/s copyin on tinyc8 (Kryo-3XX host). Co-authored-by: tiny <tiny@local>