Skia pixel formats
The Skia pixel formats fall into 3 different categories: packed formats, array formats and index formats (not described in this guide). All formats follow the scheme:
component-bits part specify the order and sizes of the
components in the pixel.
Formats where all components are 8 bits are array formats, and the component
order as specified in
components refers to the memory order, with the
leftmost component occupying the lowest memory address and the rightmost
component occupying the highest memory address.
Other formats are considered packed, and the component order as specified in
components refers to their order in a native type, with the leftmost
component occupying the most significant bits, and the rightmost occupying the
least significant bits.
Skia doesn’t officially support big-endian architectures, so the memory layout of packed formats is currently considered to always be that of the native type on a little-endian system.
This is a packed format, but the component order in the name is incorrect. The format is actually 0xRGBA (not 0xARGB as the name indicates) with each component occupying 4 bits.
This is an array format where each component is a 16-bit float (i.e., a half-float) stored in memory in little-endian order. The memory layout of this format is: R₀, R₁, G₀, G₁, B₀, B₁, A₀, A₁ with R₀ at the lowest address and A₁ at the highest address (R₀ and R₁ refer to the low and high byte of the R component , respectively).