Note: Before vaapi version(1.9.0), media driver only allow to create 16bit surface for 12bit bitstream decoding, padding bits will be filled with 0 by hardware. After 1.9.0 vaapi version, media driver is supported to create both 12bit and 16bit surface for 12bit bitstream decoding.
| Codec | Type | PTL | BMG | LNL | MTLx | DG2/ATSM | DG1/SG1 | TGLx | ICL | KBLx | BXTx | SKL | BDW |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AVC | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 |
| Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | |
| MPEG-2 | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 |
| Max Res. | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | 2k | |
| VC-1 | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | |||||
| Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k | ||||||
| VP8 | Output | NV12 | NV12 | NV12 | NV12 | NV12* | NV12 | NV12 | NV12 | NV12 | NV12 | ||
| Max Res. | 4k | 4k | 4k | 4k | 4k* | 4k | 4k | 4k | 4k | 4k | |||
| HEVC 8bit | Output | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12 | NV12 | NV12 | |
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | 8k | 8k | ||
| HEVC 10bit | Output | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y210/Y410 | P010 | P010 | ||
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | 8k | |||
| HEVC 12bit | Output** | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | P016/Y216/Y416 | |||||
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | ||||||
| VP9 8bit | Output | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12 | NV12 | ||
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | 4k | |||
| VP9 10bit | Output | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010 | |||
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | ||||
| VP9 12bit | Output** | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | |||||
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | ||||||
| AV1 8bit | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | |||||
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | ||||||
| AV1 10bit | Output | P010 | P010 | P010 | P010 | P010 | P010 | P010 | |||||
| Max Res. | 16k | 16k | 16k | 16k | 16k | 8k | 8k | ||||||
| VVC 8bit | Output | NV12 | NV12 | ||||||||||
| Max Res. | 16k | 16k | |||||||||||
| VVC 10bit | Output | P010 | P010 | ||||||||||
| Max Res. | 16k | 16k |
| Input Format | Output Format | Max resolution | Supported Platforms |
|---|---|---|---|
| 4:2:0, 8-bit | IMC3 | 16K | BDW+ |
| 4:2:2, 8-bit | 422H | 16K | BDW+ |
| 4:2:2, 8-bit | 422V | 16K | BDW+ |
| 4:1:1, 8-bit | 411P | 16K | BDW+ |
| 4:4:4, 8-bit | 444P | 16K | BDW+ |
| 4:4:4, 8-bit | RGBP / BGRP | 16K | BDW+ |
| 4:0:0, 8-bit | 400P | 16K | BDW+ |
| 420 / 422H interleaved single scan | YUY2 | 16K | BDW+ |
| 420 / 422H interleaved single scan | UYVY | 16K | BDW+ |
| 420 / 422H / 422V interleaved single scan | NV12 | 16K | BDW+ |
| 400/420/422H/444/RGB/BGR interleaved single scan | A8R8G8B8 | 16K | SKL+ |
| Codec | Type | BMG | LNL | MTLx | DG2/ATSM | DG1/SG1 | TGLx | ICL | KBLx | BXTx | SKL | BDW |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AVC | Input | *More | *More | *More | *More | *More | *More | *More | *More | NV12 | NV12 | |
| Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | 4k | ||
| JPEG | Input/Output | **Note | **Note | **Note | **Note | **Note | **Note | **Note | **Note | **Note | **Note | |
| Max Res. | 16k | 16k | 16k | 16k | 16k | 16k | 16k | 16k | 16k | 16k | ||
| HEVC 8bit | Input | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/YUY2/AYUV/RGB | NV12/AYUV | ||||
| Max Res. | 16k*** | 16k*** | 16k*** | 16k*** | 8k | 8k | 8k | |||||
| HEVC 10bit | Input | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y210/Y410/RGB | P010/Y410 | ||||
| Max Res. | 16k*** | 16k*** | 16k*** | 16k*** | 8k | 8k | 8k | |||||
| VP9 8bit | Input | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | ||||||
| Max Res. | 8k | 8k | 8k | 8k | 8k | |||||||
| VP9 10bit | Input | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | P010/Y410 | ||||||
| Max Res. | 8k | 8k | 8k | 8k | 8k | |||||||
| AV1 8bit | Input | NV12 | NV12 | NV12 | NV12 | |||||||
| Max Res. | 8k | 8k | 8k | 8k | ||||||||
| AV1 10bit | Input | P010 | P010 | P010 | P010 | |||||||
| Max Res. | 8k | 8k | 8k | 8k |
| Codec | Type | DG1/SG1 | TGLx | ICL | KBLx | BXTx | SKL | BDW |
|---|---|---|---|---|---|---|---|---|
| AVC | Input | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 |
| Max Res. | 4k | 4k | 4k | 4k | 4k | 4k | 4k | |
| MPEG2 | Input | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | |
| Max Res. | 2k | 2k | 2k | 2k | 2k | 2k | ||
| VP8 | Input | NV12 | NV12 | NV12 | NV12 | |||
| Max Res. | 4k | 4k | 4k | 4k | ||||
| HEVC 8bit | Input | NV12/YUY2/AYUV | NV12/YUY2/AYUV | NV12/AYUV | NV12 | NV12 | NV12 | |
| Max Res. | 8k | 8k | 8k | 4k | 4k | 4k | ||
| HEVC 10bit | Input | P010/Y210/Y410 | P010/Y210/Y410 | P010/Y410 | ||||
| Max Res. | 8k | 8k | 8k |
| Platform | Format | NV12 | YV12 | I420 | P010 | YUY2 | UYVY | Y210 | AYUV | Y410 | P016* | Y216* | Y416* | ARGB/ABGR | A2R10G10B10/A2B10G10R10 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BDW | Input | Y | Y | Y | Y | Y | N | ||||||||
| Output | Y | Y | Y | Y | Y | N | |||||||||
| SKL/BXTx/KBLx | Input | Y | Y | Y | Y | Y | Y | N | |||||||
| Output | Y | Y | Y | Y | Y | N | |||||||||
| ICL | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | |||
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||
| JSL/EHL | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | |||
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||
| TGLx | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||
| DG1/SG1 | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||
| DG2/ATSM | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||
| MTLx | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||
| LNL | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||
| BMG | Input | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| Output | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Video processing has various feature filters including Blending(or Composition), CSC(Color Space Conversion), De-Interlace, De-Noise, Luma Key, Mirroring, Procamp, Rotation, Scaling, Sharpening, STD/E, TCC, Color Fill, Chroma Sitting, HDR10 TM, 3DLUT. These features can be divided into VEBOX/SFC/EU 3 categories according to hardware units. Generally, VEBOX+SFC or VEBOX+EU feature combination is valid and HW execution sequence is usually VEBOX first, SFC/EU second.
For media usage, there are a lot of interactive between CPU and GPU memory. To accelerate CPU<->GPU surface sharing performance, media copy is enabled to use GPU hardware engine or GPU kernel to copy the surface from/to CPU accessable location. It's supported from ATSM/Meteor Lake(MTL)+ platforms. You could get the detail API information from vaCopy.
Media Copy support most of formats like Nv12/p010/p016/ARGB/yuy2/y210/y216/AYUV/y410/ARGB10, and also popular resolution like 8K/4k/2k/1080p/720p/480p/320P, etc.
Besides, it's required that CPU start address need 4k alignment, you can refer: drm_i915_gem_userptr