intel / vpl-gpu-rt

MIT License
113 stars 92 forks source link

Intel® Video Processing Library (Intel® VPL) GPU Runtime

Intel® Video Processing Library (Intel® VPL) GPU Runtime is a Runtime implementation of Intel® VPL API for Intel Gen GPUs. Runtime provides access to hardware-accelerated video decode, encode and filtering.

Supported video encoders: HEVC, AVC, MPEG-2, JPEG, VP9, AV1
Supported video decoders: HEVC, AVC, VP8, VP9, MPEG-2, VC1, JPEG, AV1, VVC
Supported video pre-processing filters: Color Conversion, Deinterlace, Denoise, Resize, Rotate, Composition

Implementation is written in C++ 14 with parts in C-for-Media (CM).

Intel® VPL GPU Runtime is a part of Intel software stack for graphics:

Intel® VPL Library and Intel® VPL GPU Runtime are successors for Intel Media SDK.

How to use

This runtime implementation is not self-sufficient. Application should use one of the available frontend dispatcher libraries:

We strongly recommend to use Intel® VPL as a dispatcher frontend (libvpl.so.2). Media SDK dispatcher (libmfx.so.1) can be used as well, but you will get capabilities limited by those which are exposed via Media SDK API and which are actually implemented by Intel® VPL Runtime. Basically, compatibility with Media SDK is provided to support Media SDK based applications which did not yet migrate to Intel® VPL on a new HW platforms.

Intel® VPL Gen Runtime implementation supports the following hardware platforms:

Dependencies

Intel® VPL GPU Runtime depends on LibVA. This version of Intel® VPL GPU Runtime is compatible with the open source Intel Media Driver for VAAPI. Dispatcher and Samples code hosted in Intel® VPL repository.

Table of contents

License

Intel® VPL GPU Runtime is licensed under MIT license. See LICENSE for details.

How to contribute

See CONTRIBUTING for details. Thank you!

System requirements

Operating System:

Software:

Hardware: Intel platforms supported by the Intel Media Driver for VAAPI starting with Tiger Lake.

How to build

Build steps

Get sources with the following Git command (pay attention that to get full Intel® VPL GPU Runtime sources bundle it is required to have Git with LFS support):

git clone https://github.com/intel/vpl-gpu-rt vpl-gpu-rt
cd vpl-gpu-rt

To configure and build Intel® VPL GPU Runtime install cmake version 3.14 or later and run the following commands:

mkdir build && cd build
cmake ..
make
make install

Intel® VPL GPU Runtime depends on a number of packages which are identified and checked for the proper version during configuration stage. Please, make sure to install these packages to satisfy Intel® VPL GPU Runtime requirements. After successful configuration 'make' will build Intel® VPL GPU Runtime binaries and samples. The following cmake configuration options can be used to customize the build:

Option Values Description
ENABLE_ITT ON|OFF Enable ITT (VTune) instrumentation support (default: OFF)
ENABLE_TEXTLOG ON|OFF Enable textlog trace support (default: OFF)
ENABLE_STAT ON|OFF Enable stat trace support (default: OFF)
BUILD_ALL ON|OFF Build all the BUILD_* targets below (default: OFF)
BUILD_RUNTIME ON|OFF Build Intel® VPL runtime (default: ON)
BUILD_TESTS ON|OFF Build unit tests (default: OFF)
USE_SYSTEM_GTEST ON|OFF Use system gtest version instead of bundled (default: OFF)
BUILD_TOOLS ON|OFF Build tools (default: OFF)
MFX_ENABLE_KERNELS ON|OFF Build Intel® VPL with media shaders support (default: ON)

The following cmake settings can be used to adjust search path locations for some components Intel® VPL GPU Runtime build may depend on:

Setting Values Description
CMAKE_ITT_HOME Valid system path Location of ITT installation, takes precendence over CMAKE_VTUNE_HOME (by default not defined)
CMAKE_VTUNE_HOME Valid system path Location of VTune installation (default: /opt/intel/vtune_amplifier)

Enabling Instrumentation and Tracing Technology (ITT)

To enable the Instrumentation and Tracing Technology (ITT) API you need to:

and configure Intel® VPL GPU Runtime with the -DENABLE_ITT=ON. In case of VTune it will be searched in the default location (/opt/intel/vtune_amplifier). You can adjust ITT search path with either CMAKE_ITT_HOME or CMAKE_VTUNE_HOME.

Once Intel® VPL GPU Runtime was built with ITT support, enable it in a runtime creating per-user configuration file ($HOME/.mfx_trace) or a system wide configuration file (/etc/mfx_trace) with the following content:

Output=0x10

Recommendations