Enabling Intel Quick Sync Video

Intel Quick Sync Video™ is a hardware acceleration technology for video processing on modern Intel CPUs. It dramatically increases video transcoding performance by using build-in GPU (graphics processing unit) of Intel processors.
Prerequisites
Currently Intel Quick Sync Video has the following requirements:
  • CentOS 7.3
  • Intel® Xeon® Processor E3-12xx series with Intel HD Graphics 4200+ and motherboard with C226 chipset
  • 4th Generation Intel Core™ Processors with Intel® Iris™ Pro Graphics, Intel Iris Graphics or Intel HD Graphics 4200+ Series (with motherboards 8X chipset series (Q85, Q87, B85, H81, H87, Z87))
  • 5th Generation Intel Core™ Processors with Intel Iris™ Pro Graphics, Intel Iris Graphics or Intel HD Graphics 5000/6000+ Series (with motherboards 8X chipset series (Q85, Q87, B85, H81, H87, Z87))
Please note that XEON processors require C226 chipset. This is not relevant for Core processors. If you have different hardware configuration, Intel Quick Sync Video probably won't work!

We have successfully tested Intel Quick Sync Video with the following hardware configurations:
  • Intel Xeon E3-1225, E3-1245, E-1246, E3-1276, E3-1285, E3-1286 with SuperMicro X10SLH-F and Intel S1200V3RPM motherboards (C226 chipset)
  • Intel Core i7-4790, i5-4590, i5-4570
To quickly check your hardware, use the modified Intel system analyzer:

wget http://repo.streambuilder.pro/open/binary/sb_sys_analyzer_linux.py
python sb_sys_analyzer_linux.py
Enabling Intel Quick Sync on CentOS
Get the latest CentOS 7 installed on the server. Make sure that lspci | grep VGA displays only Intel Graphic Controller:

00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3 Processor Integrated Graphics Controller [8086:041a] (rev 06)
To enable Intel Quick Sync Video on CentOS 7, download and apply kernel patch 3.10.0-229.el7.x86_64. The command below must be executed as a non-privileged user (not root!):

wget -q http://repo.streambuilder.pro/open/binary/mss_install.sh  -O mss_install.sh && bash mss_install.sh
After kernel patching is completed, reboot the server so changes may take effect. Intel Quick Sync Video will be enabled.
Kernel options
If you are experiencing hang on boot or hardware acceleration still not working, you may need to add kernel options to GRUB.
Open /etc/default/grub and search for GRUB_CMDLINE_LINUX variable. Append the following line to its' value:

i915.enable_rc6=0 i915.disable_display=1 i915.verbose_state_checks=1
Update GRUB configuration:

grub2-mkconfig -o /boot/grub2/grub.cfg
Reboot and check the hardware acceleration.

Following CPU models and mainboard are probably affected:

  • Intel(R) Xeon(R) CPU E3-1285 v4 3.50GHz w/ Supermicro X10SLH-F
  • Intel(R) Xeon(R) CPU E3-1285 v3 3.60GHz w/ Supermicro X10SLH-F
Enabling Intel Quick Sync on C226 chipset
By default Intel QSV is not enabled for video encoding acceleration. Follow steps below to enable it (on Supermicro X10SLH-F, other mainboard may have differencies):

1. Setup and configure your server to start SSH server. Make sure you have a remote access to your server.
2. Update BIOS firmware version to the latest one.
3. In BIOS disable offboard video card: Advanced (top menu) → Chipset Configuration → System Agent Configuration → Graphic Configuration → Internal Graphics. Switch to "Enabled". Save changes and exit.
4. Turn power off. Disable VGA output by switching JPG1 jumper to the position 2-3 (as shown below). Refer to the mainboard manual for more information.
5. Turn power on. You are not able to use the display with VGA output turned on, but you still have remote access which is enough to configure and maintain the server.
Troubleshooting IQSV on CentOS
To verify kernel configuration run lsmod | grep i915. You should see:

i915                  938219  4 
drm_kms_helper         98274  1 i915
drm                   311336  3 i915,drm_kms_helper
To check hardware encoding build and run Intel GPU metrics:

cd /opt/intel/mediasdk/tools/metrics_monitor/sample/
sudo ./build.sh
sudo ./metrics_monitor
You should see something like this (numbers may vary):

RENDER usage: 0.00, VIDEO usage: 0.00,  VIDEO_E usage: 0.00
Feel free to contacts us if you still have any issues.
To run more throughout test you may build Intel samples:

sudo yum install -y cmake
wget https://software.intel.com/sites/default/files/managed/1b/ac/MediaSamples_Linux_6.0.16043175.175.tar.bz2
tar xvf MediaSamples_Linux_6.0.16043175.175.tar.bz2
cd MediaSamples_Linux_6.0.16043175.175/samples/
perl build.pl --cmake=intel64.make.release --build --enable-x11=no --enable-ffmpeg=no --enable-opencl=no
Run the samples:

./_bin/x64/sample_multi_transcode_drm -i::mpeg2 _bin/content/test_stream.mpeg2 -o::h264 test_out.h264 -hw
./_bin/x64/sample_multi_transcode_drm -i::h264 _bin/content/test_stream.264 -o::h264 test_out.h264 -hw
You should see [PASSED].