The representation a decoder or scaler hands frames back in.
A choice, not a promise of GPU residency. Native lets a
hardware backend keep its picture where it made it, which on a software
backend is CPU memory anyway. Cpu is the portable exit: the
result is always Surface::I420, downloaded when it
had to be. #[non_exhaustive] so a narrower choice (a specific device, a
shareable handle) can be added without breaking a match.
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
The backend’s natural representation: a GPU surface from a hardware
decoder or scaler, CPU pixels from a software one. The default, since it
never pays for a download nobody asked for. Match on each
Surface rather than assuming either.
CPU-resident I420, whatever produced it. A hardware
decode pays a download per picture; a backend that can decode straight
to system memory does that instead.