Trying Out & Benchmarking The New Experimental Intel Xe Linux Graphics Driver
One of the new features to look forward to with the upcoming Linux 6.8 kernel cycle is the merging of the experimental "Xe" Intel kernel graphics driver. This driver has been in development for quite a while but has reached the state now at which Intel is comfortable with developing it further while in the mainline kernel tree.
Eventually the goal of the Intel Xe driver is to offer better performance with this clean-sheet driver design that is now able to make better use of modern kernel interfaces and features without having to worry about backwards compatibility with the i915 driver. This driver is designed just to support Intel Tigerlake Gen12 graphics and newer -- both integrated and discrete graphics moving forward. With focusing on just more recent Intel graphics generations they are able to make better design decisions and carry less baggage within the driver. The Intel Xe driver is also designed to be non-x86_64 compatible for allowing this driver to eventually be used nicely for Intel discrete graphics on ARM or RISC-V architectures, for example. Long story short in the end this will be a nice driver for modern Intel graphics on Linux, but as of the end of 2023 it very much remains in active development. Today marks one year to the day since Intel first publicly announced they were developing this new kernel graphics driver>.
With the Xe DRM driver in Linux 6.8, the driver remains disabled by default for all released Intel integrated and discrete graphics hardware. Even when building the Intel Xe driver to be part of the kernel, it will be off by default with the long-used i815 kernel driver remaining the default. But it is easy to switch to this new driver when the Xe driver is included. Via boot parameters like "i915.force_probe=!56a2 xe.force_probe=56a2" is enough to prevent loading of the i915 driver and loading instead the experimental Xe driver, assuming your PCI graphics ID is 0x56a2. Just adjust for your appropriate Intel PCI graphics ID and from there it's easy to boot with this new kernel driver.
Besides enabling the Xe driver to be used for your modern Intel integrated/discrete graphics hardware, you also need to worry about the user-space support. Intel has merged support into Mesa for interfacing with the Xe kernel mode driver, but it's disabled by default right now. The Meson build option of "-Dintel-xe-kmd=enabled" currently needs to be used for enabling the Xe kernel driver compatibility and without that there won't be OpenGL or Vulkan driver support. During my testing I was bit by the issue at first with Mesa 24.0-devel while now for easy testing the Oibaf PPA is shipping its Mesa build with -Dintel-xe-kmd=enabled set.
The current Intel Compute Runtime stack binaries also are shipping without Xe kernel mode driver support, but hopefully that will change soon with the Xe driver going upstream in Linux 6.8. Also make sure you have the latest Intel graphics firmware support from linux-firmware.git.
For my testing with my kernel I built from the Intel Xe driver development tree, it showed some rough spots like the Undefined Behavior Sanitizer (UBSAN) reporting various array index out of bounds errors and similar within the Xe driver.
During testing I also ran into cases of a number of fault errors on pipes.
In any event being curious about the current performance of the Intel Xe kernel driver, I ran some benchmarks of using the Intel Xe kernel driver compared to using the i915 kernel driver on the same build. The same Mesa 24.0-devel build was used throughout testing. No other changes were made during testing besides switching the kernel graphics driver being used (Xe vs. i915) and swapping graphics cards. I ran some OpenGL and Vulkan benchmarks on the Intel Arc Graphics A580, A750, and A770 graphics cards.