Hardware encoding - really confused after switching from Manjaro to EOS

I recently switched from Manjaro to EOS on my main machine. It’s a laptop with a i5-10210U and I often use this computer to encode videos. Since the CPU is much too slow for HEVC CPU encoding I rely on HW encoding, using the GPU of the Intel chip.

I use Shotcut and these are the settings I always used for encoding:

settings

On Manjaro, using those settings, I got export times of ~1.25. What I mean is that it took about 1h 15min to export 1h of video.

Strangely, now on EOS, using the same settings, export time is much longer:

hevc_vaapi

As you can see it’s now about 55 minutes for a 30 minute test video, so about 1h50min for a 1h video. You can also see that the CPU usage is rather low, but that was also the case on Manjaro.

Since this is far from ideal, I looked through the settings and found another HW encoder besides hevc_vaapi. It’s called hevc_qsv and I remember that I tried it on Manjaro only once but never used it because it was slower while using more CPU.
Now, on EOS, this encoder is actually the faster one:

hevc_qsv

This is about 43 minutes for the test video, so about 1h26min for a 1 hour video. Still slower than hevc_vaapi was on Manjaro and it also uses around twice as much CPU.

OK, I hope you can see, why I’m confused. Why was hevc_vaapi so much faster on Manjaro? Why was hevc_qsv slower on Manjaro but is actually faster on EOS? And, another thing I don’t really get, what’s even the difference between hevc_vaapi and hevc_qsv? I always thought that VAAPI is just an API to use HW encoding, so shouldn’t those options be the same?

Can anybody shed some light on this all?

You’d have to compare the setup on both, for example the running kernel and the driver in use for the Intel GPU, as well as things like power settings, desktop compositor, and other running applications using the GPU.

This page is also worth reading:

https://wiki.archlinux.org/title/Hardware_video_acceleration

Kernel was current LTS on both. Can’t compare drivers anymore ofc. And yeah, I’ve read the Wiki page. I have both, intel-media-driver and libva-intel-driver installed. Strangely, the WIKI page only mentions support up to coffee lake (2017). My CPU is a 10th Gen from 2019. Is it possible that Manjaro has newer drivers than what’s available for Arch? Hard to imagine, but who knows?

It might be that Manjaro was using the intel driver whereas EnOS is using modesetting, but that’s a pure guess.

No. :grin:

1 Like

No idea what modesetting is but is there any way to check this?

https://wiki.archlinux.org/title/Intel_graphics

inxi -Ga

is as good as place as any to start.

I love Igni, so why not use Inxi also :laughing:

Graphics:
  Device-1: Intel CometLake-U GT2 [UHD Graphics] driver: i915 v: kernel
    bus-ID: 00:02.0 chip-ID: 8086:9b41 class-ID: 0300

Is this helpful?

edit: Is it possible that I need to enable GuC / HuC firmware loading?

What happened to the rest of the output?

But anyway, looks like you’re probably using modesetting given it’s using a driver from the kernel.

I don’t know - is it?

Maybe? I’d have thought it would be done by default for compatible GPUs though… ? What does the wiki page say?

The rest is about the Nvidia GPU, the web cam, the display…not useful here I guess.

Well, if I knew I wouldn’t ask…

On supported Skylake and newer processors, some video features (e.g. CBR rate control on SKL low-power encoding mode) may require the use of an updated GPU firmware,[3] which is loaded by default only on Gen 11+ hardware since Linux 5.4.

Seems like it’s not enabled by default on 10th Gen CPU. I just don’t know if this is even connected to my problem. It just mentions CBR, which I don’t use.

Wait - you have an NVIDIA GPU and you’re doing encoding on the Intel GPU? Why not use NVENC?

Because it’s a MX250 which doesn’t support NVENC :slightly_frowning_face:

MX250 is Pascal-based, which according to the Arch wiki that supports NVENC… ?

Same cpu and gpu here. intel-media-driver is the va-api driver for the gpu (all the newer igpu from intel use this one).

In laptop graphics, NVIDIA MX Graphics do not include NVENC as they are based on a Maxwell -generation GM108 or a Pascal-generation GP108 chip.

1 Like

Guess that’s correct. I tried with just this one and with libva-intel-driver installed also. No difference.