1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
# Media Features Summary
## Supported Decoding Output Format and Max Resolution
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 | 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 |
| | Max Res. | 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 |
| | Max Res. | 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 |
| | Max Res. | 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 | NV12 | NV12 | |
| | Max Res. | 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 | P010 | | |
| | Max Res. | 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 | | | | | |
| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | | | | | |
| VP9 8bit | Output | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12/AYUV | NV12 | NV12 | | |
| | Max Res. | 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 | | | |
| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | 8k | 8k | | | |
| VP9 12bit | Output** | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | P016/Y416 | | | | | |
| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | | | | | |
| AV1 8bit | Output | NV12 | NV12 | NV12 | NV12 | NV12 | NV12 | | | | | |
| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k | | | | | |
| AV1 10bit | Output | P010 | P010 | P010 | P010 | P010 | P010 | | | | | |
| | Max Res. | 16k | 16k | 16k | 16k | 8k | 8k |
| VVC 8bit | Output | | NV12 | | | | | | | | | |
| | Max Res. | | 16k | | | | |
| VVC 10bit | Output | | P010 | | | | | | | | | |
| | Max Res. | | 16k | | | | |
- \* VP8 is only supported on TGL platform
- \** HVEC/VP9 12bit use P016/Y216/Y416 with the least significant 4 bits are set to zero
### JPEG Decoding Format Support
| 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<br/>interleaved single scan | YUY2 | 16K | BDW+ |
| 420 / 422H<br/>interleaved single scan | UYVY | 16K | BDW+ |
| 420 / 422H / 422V<br/>interleaved single scan | NV12 | 16K | BDW+ |
| 400/420/422H/444/RGB/BGR<br/>interleaved single scan | A8R8G8B8 | 16K | SKL+ |
## Supported Encoding Input Format and Max Resolution
### Hardware Encoding, Low Power Encoding(VDEnc/Huc)
| 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 | | | | | | | |
- \*More: KBL/CFL/ICL/TGL AVC encoding supported input formats: NV12/YUY2/YUYV/YVYU/UYVY/AYUV/ARGB
- \**Note: JPEG encoding supports input format NV12/YUY2/UYVY/ABGR/Y8 and output format YUV400/YUV420/YUV422H_2Y/YUV444/RGB24.
- \***: 16k=16384x12288
### Hardware(PAK) + Shader(media kernel+VME) Encoding
| 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 |
## Supported Video Processing CSC/Scaling Format
| 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 |
* \* For SFC path, there are NOT real 16bit, SFC precision is 12bit; For kernel path, we support real 16bit.
* TGL/DG1/SG1 capable of max resolution: 16K; ICL/JSL/EHL/SKL/BXT/KBL/BDW capable of max resolution: 4k.
* Composition path does not support conversion from BT2020 RGB to BT2020 YUV, BT2020->BT601/BT709, BT601/BT709 -> BT2020. So if some formats, RGB444 planar for example, are only supported by compositon path, make sure the color space isn't BT2020.
## Supported Video Processing Feature Combination
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.
* VEBOX: Chroma Sitting, De-Interlace, De-Noise, Procamp, STD/E, TCC, HDR10 TM, 3DLUT, CSC
##### HDR10 TM is the feature for HDR video content, hence, not compatible with denoise, deinterlace, STD/E, TCC.
* SFC: Chroma Sitting, CSC, Mirroring, Rotation, Scaling, Sharpening, Color Fill
* EU (Media Kernel or Shader): Blending, CSC, Rotation, Scaling, Color Fill
## Supported Media Copy
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](http://intel.github.io/libva/va_8h.html#a5ff39794f6201b8a68ccb0d0f934be1e).
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](https://dri.freedesktop.org/docs/drm/gpu/driver-uapi.html#c.drm_i915_gem_userptr)
##### Resolution definition: 2k=2048x2048, 4k=4096x4096, 8k=8192x8192, 16k=16384x16384
|