grin agymenései

Intel Skylake/i915 video driver vs. linux

2016-06-30 17:29 írta grin

Recently I have obtained a board with a recent intel internal video "card" which is supposedly more powerful than my 6+ years old NVidia. So let's give it a try, shall we?

This is an intel i7, and the graphis is ASUSTeK Computer Inc. HD Graphics 530 or Sky Lake Integrated Graphics (rev 06) or i915 in linux driverspeak. The system is Debian/sid, semi-upgraded.

There are two xorg ways to do it: the "old" way is to use the intel driver and the new is to use the modesetting driver in the kernel. This is a fairly recent kernel (4.4.14), should work out of the box. The mainboard is an Asus B150-PRO with a fancy uEFI BIOS.

As a fallback I leave the old nvidia in the machine, but I won't use it right now.

What could possibly go wrong?

Well, first the i915 wasn't even visible in lspci! It turned out that the BIOS have to be told to share the cards (which probably meant being able to use multiple cards or whatever), so at least the device is visible.

"At least", yeah, since no matter what combination I have chosen for the HDMI and DVI monitors they only worked on the NVidia external card. Another BIOS setting is which force the machine from "Auto" onto the internal card at boot, so at least I see the BIOS and the booting.

Nice little step to see the boot, so I removed the "nomodeset" from the kernel cmdline. The result was a beautiful vertical colorful screen freeze. Immediately after the kernel init'ed the screen.

From there I have slowly progressing, reboot after reboot, by first removing the nvidia specific glx and gl libs (could be theoretically used together by using the switching package but I couldn't bother), changing BIOS not to use S6 sleeping state for the card (it's rumoured to freeze there), plugging both monitors into the internal card, and after that I have got one working monitor using software DRI (direct rendering), which is the working and slow-as-hell 3D version of the semi-working stuff.

The major obstacle was DRI2, since it just didn't work, it was using VMware software renderer:

[  2622.559] (II) glamor: OpenGL accelerated driver based.
[  2622.579] (II) glamor: EGL version 1.4 (DRI2):
[  2622.579] EGL_MESA_drm_image required.
[  2622.579] (EE) modeset(0): glamor initialization failed
If you try to google for "EGL_MESA_drm_image" you get a lot of -- nothing. Don't bother, the problem is that all the related libraries, and their related libraries, and theirs and so on should be upgraded to the latest version. After that the DRI2 worked.

Still: there is no second monitor. xrandr says it's disconnected. No it isn't, but still. I can force it by raping it:

xrandr --output HDMI-2 --mode 1920x1200 --left-of HDMI-1
no, actually that won't work since 1920x1200 modeline isn't there, no edid for disconnected stuff. So I can borrow the smaller monitor's resolution as
xrandr --output HDMI-2 --mode 1280x1024 --left-of HDMI-1
which works in a kind of retro way. Still, it's not good, the monitor is "disconnected" and the system rejects to handle it.

The solution was kernel cmdline hacking:

video=HDMI-A-2:e video=HDMI-A-1:e
which is enabling the device forcefully. HorribleHack™. Works, as from then on both monitors is detected by the system at boot and we have nicely mirrored console, then detected by modesetting driver then, finally, used by xorg. From then on xrandr (or technically xfce4-display-settings) is able to put them where they should be in the dual-monitor setup.

The card isn't nuclear reactor but faster than the NVidia GT220, so until it gets upgraded it should suffice.

Intel Skylake/i915 video driver vs. linux


grin agymenései