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