flowchart TB
subgraph up["buffer → texture"]
direction LR
a1["application buffer
12-byte texels"] -->|"rgb32_expand kernel"| a2["scratch
16-byte texels"] -->|"blit"| a3["RGBA32 Metal texture"]
end
subgraph down["texture → buffer"]
direction LR
b1["RGBA32 Metal texture"] -->|"blit"| b2["scratch
16-byte texels"] -->|"rgb32_pack kernel"| b3["application buffer
12-byte texels"]
end
up ~~~ down