Wednesday, June 3, 2015

Solution: Distorted / Garbled Graphics in Fedora 22 with Pre-SandyBridge Intel Graphics Chips


Fedora 22 was released recently on 26th May 2015 and continuing the trend since version 20 (at least for me), it has been a rock solid release for the most part. It features Linux Kernel 4.0, Gnome 3.16, KDE Frameworks 5.3 with Plasma Workspaces, XFCE 4.12, Mate 1.10 etc along with all the usual developer goodies like latest versions of compilers/interpreters including GCC 5, Python 2 and 3, OpenJDK 8 etc. The default package manager has been changed from Yum to DNF in this release and is extremely fast at dependency resolution because of the underlying libsolv library from the openSUSE gang. I've been using this release since its Alpha came out on Virtual Box and on bare metal since RC1, my usual timings.

Some folks at FedoraForums.org, which by the way is a great community for Fedora users, enthusiasts, evangelists and developers alike, have reported having  garbled / distorted graphics on some of the Intel Integrated Graphics chips. On analyzing further, I noticed that these chips are mostly from the Intel 4 series of chipsets (for ex. the G41 chipset with GMA X4500 graphics) or in other words, chipsets from pre-Sandybridge era. Have a look at the screenshot below to understand what I am talking about:


Now this, is pretty bad and almost unusable and I could sense the agony of the users upgrading to or trying switching to Fedora 22. So I thought may be I can be of some help and researched a little on it, for the sake of the great Fedora community's growth and well being. It has done so much for me and I would be glad if I could give back anything at all.

My first suspect was the Intel driver itself, xorg-x11-drv-intel but the one strange fact was that the same version of driver and the same version of kernel were working just fine on Fedora 21 on these machines. So this issue is confined to Fedora 22 and it changes, that's for sure. I think it could be the result of one of the two changes introduced in Fedora 22:
  1. As part of the changes for Wayland and other stuff, the X server now runs in a root-less mode. This can have implication on applications that access the graphics stack at lower levels.
  2. If I am not wrong, GCC 5 compiler collection has support for C++14 which introduced ABI (Application Binary Interface) changes and many of the components including the Intel driver itself has been recompiled with GCC5 for maintaining binary compatibility. So even though the version of the driver is same, its not binary compatible with the driver present in Fedora 21.
 Anyways, this is something still to be discussed with the Fedora/Intel teams but for now there is a solution you can use. I am not sure if it can be used with Live CDs written on optical disks but I think it can be used on Live CDs written to USB drives and on installed systems.

Create a new text file called /etc/X11/xorg.conf.d/20-intel.conf with your favorite text editor (or edit it if it is already present) and enter below text in it:
Section "Device"
        Identifier  "card0"
        Driver       "intel"
        Option      "AccelMethod"  "uxa"
EndSection
 If the section for intel card is already present, just add the Option   "AccelMethod"   "uxa" line in it. Save this file and reboot. Please note that since this file resides in /etc folder and not your home directory, you will need root / sudo access to create or edit this file.

Atleast 5+ users at Fedora Forum have confirmed that this "fix" has resolved their issue. What this essentially does is it asks the Intel driver to use the "UXA (Unified Acceleration Architecture)" for graphics acceleration instead of the "SNA (Sandybridge New Acceleration)" architecture. SNA is the new and preferred way of doing accelerated graphics on Intel chips and it's supposed to be backward compatible with older cards as well (and it was till F21), however, there is some regression introduced to it in Fedora 22 probably because of the mentioned changes.

Here is the link for the original forum thread for those who want to check out the whole discussion that took place :


So that's that, all's well and no harm done. Enjoy the awesome Fedora 22 release and do upgrade your hardware whenever you can :)

Cheers!

No comments: