[FFmpeg-devel] [PATCH v6 00/10] make QSV works with the Intel's oneVPL
Soft Works
softworkz at hotmail.com
Wed Oct 20 02:00:57 EEST 2021
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> Jean-Baptiste Kempf
> Sent: Tuesday, October 19, 2021 11:19 PM
> To: ffmpeg-devel at ffmpeg.org
> Subject: Re: [FFmpeg-devel] [PATCH v6 00/10] make QSV works with the
> Intel's oneVPL
>
> Hello,
>
> On Fri, 15 Oct 2021, at 22:23, Soft Works wrote:
> > I really appreciate all the effort that Intel is taking to improve
> > ffmppeg for QSV hw acceleration, but in this case I'm not convinced
> > that this should be merged into ffmpeg at this time.
> >
> > [...]
> > In its current state, oneVPL is all about removal of features that
> > have existed for a long time.
> >
> > In its current state, it does not provide a single benefit over
> > libmfx 1.x
>
> Indeed.
> But libmfx is not supported anymore by upstream, who's moving to
> oneVPL, aka mfx 2.0.
>
> You can think this is a bad move from Intel to remove feature, but,
> de facto, they don't support libmfx anymore, the new features will
> come only on oneVPL and the new hardware will only be supported in
> oneVPL.
That's not exactly true. There might no new features be added
but it will still be supported because oneVPL doesn't replace it,
at least not the runtime.
Let's look at it in detail, there are 4 components involved:
1. Dispatchers
The dispatcher is what ffmpeg is interfacing with. It loads the
runtimes (there are GPU and sw runtimes) and forwards calls to
the runtimes.
1.1. libmfx Dispatcher (Intel Media SDK)
This is the dispatcher that ffmpeg is currently using, latest
version is 1.35:
https://github.com/Intel-Media-SDK/MediaSDK/tree/master/api/mfx_dispatch
Many are also using this variant for ffmpeg compilation:
https://github.com/lu-zero/mfx_dispatch
1.2 oneVPL Dispatcher
This is the new oneVPL dispatcher which has those features
removed and doesn't include any new ones:
https://github.com/oneapi-src/oneVPL/tree/master/dispatcher
2. Runtimes
The runtimes are containing the actual implementations, which
are partially CPU gen specific and include a range of hardware
kernels/shaders that provide functionality that VAAPI doesn't
have.
The following table shows which hardware is supported by each
runtime and which runtimes are loaded by the dispatchers:
https://github.com/Intel-Media-SDK/MediaSDK#media-sdk-support-matrix
[I'm leaving out the CPU runtimes]
2.1. Media SDK Runtime (libmfxhw64)
This is what you get from building the MediaSDK repo. It supports
all Intel hw up to Tiger Lake.
https://github.com/Intel-Media-SDK/MediaSDK#how-to-build
2.2. oneVPL Runtime (libmfx-gen)
The new oneVPL runtime supports only the very latest hardware and
needs to be built from this repo:
https://github.com/oneapi-src/oneVPL-intel-gpu
THE CONSEQUENCES
If you want to ship the runtimes as part of an application and you
want to support all Intel hardware, you will always need to
build and ship BOTH runtimes.
The only good thing is that both dispatchers can work with both
runtimes.
And that means in turn that the currently used dispatcher (libmfx
1.35) will be sufficient to work even with the latest hardware.
That means that there's no pressing reason to use the oneVPL
dispatcher instead.
New features are promised for oneVPL but there don't exist any
yet. Even when those will be added, it will take a number of
years until they'll get really attractive to be used, because
Intel announced that these would only be available with the
oneVPL runtime.
The only hardware for which the dispatchers are loading the
oneVPL runtime instead of the MSDK runtime are Alder Lake CPUs.
From my point of view, it's of very low interest to use a
feature - no matter how great it might be - that is limited
to a single CPU gen.
Others might think different, that's why I only said that we
should at least wait until any of those new features exists.
Factually there doesn't exist a single benefit or reason
to adopt oneVPL at this time.
Kind regards,
softworkz
More information about the ffmpeg-devel
mailing list