Intel Iris

From LinuxReviews
Jump to navigationJump to search
Intel-logo.png

Intel Iris is, primarily, a Mesa OpenGL graphics driver for Intel iGPUs which uses the same Gallium graphics stack the RadeonSI Mesa driver for AMD graphics drivers use. It was first merged in February 2019[1]. It has slightly lower CPU overhead than the older i965 driver. The Intel Iris OpenGL driver became the default graphics driver for Broadwell (Gen 8) graphics chips when Mesa 20 was released.

Iris As A Intel Marketing Term

"Intel Iris Xe" is a marketing term Intel begun to use to describe their twelfth generation graphics chips in 2020. These chips can be found on Intel Tiger Lake laptops launched in September, 2020.

"Intel Iris" is also, ironically, a marketing term Intel used for their "Pro" line from around 2012 to around 2016. Older Intel Iris chips like the Iris 5000 and the Iris Pro 5200 are 7.5th generation Intel graphics chips. These older Intel Iris chips can't use the Intel Iris OpenGL Mesa driver which requires a gen8+ graphics chip.

Intel graphics division PR-person Lisa Pearce shared this story in response to us saying that "Intel Iris" is something that's been around for almost a decade:

"It actually is a new architecture for Xe. The Linux Iris name was for the redesign to reduce CPU overhead but it doesn’t map to HW arch changes at all. We always use hardware abstraction layers to keep unified driver stacks (win & Linux)."

Lisa Pearce, September 17th, 2020

Intel Iris is, in bullet summary:

  • A almost a decade old marketing term for Intel Pro-line graphics chips with 7.5th-9th generation Intel graphics technology
  • A new Mesa OpenGL graphics driver for Intel 8th generation and newer Intel chips
  • A marketing term for 12th generation Intel graphics chips. There's typically a Xe as in Iris Xe in that context.

Intel hinted that there will be dedicated GPUs based on their 12th generation Iris Xe architecture time and time again throughout 2020.

Intel Iris vs Intel i965

Intel i965 is a older Mesa OpenGL graphics driver. All Intel graphics chips running on Linux used it for OpenGL until Iris, a new and shiny OpenGL driver for Intel graphics chips, replaced it as default for gen8+ (i)GPUs starting with Mesa 20. Iris got on-disk shader cache support in May 2019[2].

The good old i965 driver remains optionally available on machines with gen8+ Intel graphics and it remains the default on machines with gen <=7.5 graphics.

The i915 Linux kernel driver is the right driver (and only driver) regardless of what user-space OpenGL driver is used.

Performance

There does not appear to be any huge difference in either performance or stability between iris and i965. iris scores slightly lower in Basemark GPU 1.2.1 and marginally higher in UNIGINE Superposition.

Unity WebGL, Chromium 85
Intel i7-5500U, Kernel 5.9.0 rc5, Mesa 20.2.0 rc4
OpenGL driver Run #1 Run #2
iris 60339 58543
i965 61915 61530

That is not a huge difference is this test done ages ago when Mesa 19.2.2 was new but it is a barely more than margin of error win for Iris.

Basemark GPU 1.2.1 special "Media" edition
Official Test, OpenGL, "Medium"
Intel i7-5500U, Kernel 5.9.0 rc5, Mesa 20.2.0 rc4
OpenGL driver Run #1 Run #2
iris 2329 2358
i965 2604 2607
UNIGINE Superposition, 720p Low
Official Test, OpenGL, "Medium"
Intel i7-5500U, Kernel 5.9.0 rc5, Mesa 20.2.0 rc4
OpenGL driver Run #1 Run #2
iris 1464 1470
i965 1451 1462

Manually Choosing Your Mesa Driver

You can manually override what Mesa graphics driver is used for OpenGL on Intel (i)GPUs. The choices are iris and i965. What choice you make does not affect Vulkan, Vulkan support on Intel graphics chips is is handled by a completely different driver called ANV.

  • iris has been available since Mesa 19.2.0. You can't choose it in earlier versions.
  • iris requires Linux 5.0 or newer. You can't choose it with Linux 4.x and Mesa will default to i965 (assuming Mesa even supports iris if the distribution is shipping a kernel that old).
  • iris has been the default for 8th generation, and newer, Intel graphics chips since Mesa 20.0.

You can set MESA_LOADER_DRIVER_OVERRIDE or use a $HOME/.drirc file to override the default. Note that you can only choose if you have Broadwell (gen8 graphics) or newer, Intel chips up to and including Haswell can only use the i965 OpenGL driver.

MESA_LOADER_DRIVER_OVERRIDE= should be set to either i965 or iris

glxinfo does not clearly say which driver is in use. However, there is a slight tell-tale difference. Vendor: Intel (0x8086) is listed when Iris is used, the longer string Vendor: Intel Open Source Technology Center (0x8086) is shown when the older i965 driver is used.

$ glxinfo -B | grep Vendor
    Vendor: Intel (0x8086)
$ MESA_LOADER_DRIVER_OVERRIDE=iris glxinfo -B | grep Vendor
    Vendor: Intel (0x8086)
$ MESA_LOADER_DRIVER_OVERRIDE=i965 glxinfo -B | grep Vendor
    Vendor: Intel Open Source Technology Center (0x8086)

It is possible to start specific applications and games by using the loader override variable as a prefix:

MESA_LOADER_DRIVER_OVERRIDE=iris supertuxkart

It is of course possible to force systems where Iris is the default to use the older i965 driver. It has more CPU overhead and it is slower. There may be compatibility reasons why you don't want to use it even so:

MESA_LOADER_DRIVER_OVERRIDE=i965 supertuxkart

$HOME/.drirc can be used to permanently enable Iris on a system where Iris is available and i965 is the default (that would be distributions shipping a 5.0+ kernel and Mesa versions between 19.2.0 and 20.0):

File: $HOME/.drirc
<driconf>
  <device driver="loader" kernel_driver="i915">
    <option name="dri_driver" value="iris" />
  </device>
</driconf>
Kemonomimi rabbit.svg
'Note: The above .drirc configuration will enable Iris for all Intel GPUs even if it is a pre-Broadwell GPU which is unsupported by the Iris driver. You will have a problem if you force-enable Iris on unsupported Intel GPU so make sure yours is gen8+ before creating such a .drirc file.

It's also possible to use .drirc to force-enable i965 to be used:

File: $HOME/.drirc
<driconf>
  <device driver="loader" kernel_driver="i915">
    <option name="dri_driver" value="i965" />
  </device>
</driconf>

More advanced .drirc configuration can be done using the graphical adriconf tool.

Notes

Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.