Enabling AV1 video encoding for the Intel Arc A750 GPU on Ubuntu
Hi everyone,
Yesterday, I installed a new Graphics Processing Unit (GPU) into my main machine. Unfortunately, I had some problems when attempting to encode videos to AV1. However, it is easy to solve when we perform the following steps.
It seems that we must use Intel-provided packages in order to enable the full use of the hardware. Barely using ffmpeg with Ubuntu’s default packages will show a couple of errors which are fixed when we install the intel packages.
Note that I’m using Ubuntu 24.10 development version and my own daily Linux Kernel builds. I tried using the Ubuntu-provided kernels and this is not the problem.
So, in order to enable AV1 encoding, we must do the following steps:
Step 1: Add Intel Graphics repository to Ubuntu:
This is performed with the following command lines. First, we must add the Intel Graphics repository key with:
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \
sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
We now add the APT repository with:
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | \
sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list
At this point, we have added the Intel Graphics APT repository to our Ubuntu installation.
Step 2: Update APT repository and install the packages
First, update your apt repositories with sudo apt update
.
Next, purge libmfx-gen1.2
if you have it installed. It conflicts with the Intel-provided version:
sudo apt purge libmfx-gen1.2
Finally, install the Intel packages with the following commands:
sudo apt install -y intel-opencl-icd intel-level-zero-gpu level-zero intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo
Install the i386 packages for compatibility with x86 software. First, enable the i386 architecture:
sudo dpkg --add-architecture i386
Now we can install the packages:
sudo apt install -y udev mesa-va-drivers:i386 mesa-common-dev:i386 mesa-vulkan-drivers:i386 libd3dadapter9-mesa-dev:i386 libegl1-mesa:i386 libegl1-mesa-dev:i386 libgbm-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev:i386 libgles2-mesa:i386 libgles2-mesa-dev:i386 libosmesa6:i386 libosmesa6-dev:i386 libwayland-egl1-mesa:i386 libxatracker2:i386 libxatracker-dev:i386 mesa-vdpau-drivers:i386 libva-x11-2:i386
Finally, install the development packages. This should be optional, but I installed it in case it was needed:
sudo apt install -y libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev
Step 3: Enable GuC/HuC Firmware in the i915 module
Type the following command to enable the GuC/HuC firmware for this card:
echo "options i915 enable_guc=3" | sudo tee /etc/modprobe.d/i915.conf
Then, reboot your machine so it is loaded.
Step 4: Enjoy encoding AV1 videos with ffmpeg
If you haven’t installed ffmpeg, you can use the Ubuntu-provided version. Simply install with sudo apt install ffmpeg
.
Now, you can enjoy encoding your videos to AV1 using your GPU.
Use -c:v av1_qsv
to encode to AV1 using Intel Quick Sync.
An example command would be ffmpeg -i input_file.mp4 -c:v av1_qsv -c:a libopus -b:v 2M -b:a 96K output.webm
Until the next time!
You can get this GPU on Amazon using the following link:
Note: Links to Amazon are referral links. This site earns a small percentage from orders placed with those links, helping keep this site operating.