Tiling is a method of re-arranging the pixels of a surface so that pixels that are close in the two-dimensional euclidean space are more likely to be stored close to each other in the memory. A tiled image is formed by dividing the image pixels into two-dimensional blocks or tiles. Each tile takes up a chunk of contiguous memory. Tiles are stored in raster scan order from left to right and from top to bottom within each plane.
| Tile0 | Tile1 | Tile2 | ... | TileN-2 | TileN-1 | |
| TileN | TileN+1 | TileN+2 | ... | Tile2N-2 | Tile2N-1 | |
| Tile2N | Tile2N+1 | Tile2N+2 | ... | Tile3N-2 | Tile3N-1 | |
| ... | ... | ... | ... | ... | ... |
The frame buffer read and write IPs support memory video format in two tile sizes: 32 × 4 and 64 × 4.
- 32 × 4 Tiled Format
-
With B corresponding to a block of 4 × 4 pixel components, the sample order within a 32 × 4 tile corresponds to a sequence of eight 4 × 4 blocks:
B0 B1 B2 B3 B4 B5 B6 B7 - 64 × 4 Tiled Format
-
The sample order within a 64 × 4 tile corresponds to a sequence of sixteen 4 × 4 blocks:
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 The sample order within each 4 × 4 block B corresponds to the raster scan order.
The following tables explain the expected pixel mappings in memory for each of the supported tile formats.
- 8-bit Tile Format
- 8-bit samples are packed starting from the least significant bits of memory words. The footprint of an 8-bit 32x4 tile is 128 bytes (8 x 128-bit words) and the footprint of an 8-bit 64x4 tile is 256 bytes (16 x 128-bit words). An example of tile buffer for luma samples is as follows:
- 10-bit Tile Format
- 10-bit samples are packed starting from the least significant bits of memory words. The footprint of a 10-bit 32x4 tile is 160 bytes (10 x 128-bit words) and the footprint of a 10-bit 64x4 tile is 320 bytes (20 x 128-bit words). An example of tile buffer for luma samples is as follows:
- 12-bit Tile Format
- 12-bit samples are packed starting from the least significant bits of memory words. The footprint of a 12-bit 32x4 tile is 192 bytes (12 x 128-bit words) and the footprint of a 12-bit 64x4 tile is 384 bytes (24 x 128-bit words). An example of tile buffer for luma samples is as follows:
The following table shows the pixel formats with tile scan order in memory supported by the Video Mixer.
| Video Format | Description | Bits per Component | Bytes per 32x4 Tile | Bytes per 64x4 Tile |
|---|---|---|---|---|
| Y_U_V8 | 3 planar YUV 4:4:4 | 8 | 128 | 256 |
| Y_U_V10 | 3 planar YUV 4:4:4 | 10 | 160 | 320 |
| Y_U_V12 | 3 planar YUV 4:4:4 | 12 | 192 | 384 |
| Y_UV8 | semi-planar YUV 4:2:2 | 8 | 128 | 256 |
| Y_UV10 | semi-planar YUV 4:2:2 | 10 | 160 | 320 |
| Y_UV12 | semi-planar YUV 4:2:2 | 12 | 192 | 384 |
| Y_UV8_420 | semi-planar YUV 4:2:0 | 8 | 128 | 256 |
| Y_UV10_420 | semi-planar YUV 4:2:0 | 10 | 160 | 320 |
| Y_UV12_420 | semi-planar YUV 4:2:0 | 12 | 192 | 384 |
| Y8 | monochrome YUV 4:0:0 | 8 | 128 | 256 |
| Y10 | monochrome YUV 4:0:0 | 10 | 160 | 320 |
| Y12 | monochrome YUV 4:0:0 | 12 | 192 | 384 |