Monday, November 30, 2009

Fedora 10 issues with intel driver and multihead

Over the holidays I upgraded my laptop to Fedora 10 (previously I had only upgraded my MythTV server). The upgrade went fairly smoothly following the information from my previous post on upgrading a MythTV server to F10. However, my laptop supports dual monitors. Of course, that didn’t work out of the box.

The laptop, my trusty Acer Aspire 1691WLMi with Intel i915GM graphics, offers output to the LCD, an external VGA port and a TV out. The latter I use when I use the laptop as a MythTV frontend and plug into the big screen TV. The VGA port I use when giving talks at user groups or presentations at work.

Note: Use of the laptop as a MythTV frontend is no longer much of an issue now that the big screen TV died right before xmas. *sigh* However, I still use the laptop as a frontend while working, with an external monitor used for normal use and the LCD as my TV screen.

With Fedora 9 and prior the setup for using multihead with the intel driver required making changes to the xorg.conf file. With F10 there is no xorg.conf file – the configuration is automatically determined by the driver. This works fine for singlehead configuration (just the LCD, for example) but fails with the external monitor. The reason it fails is that the default virtual display size is too small to place the monitors side by side (or even top and bottom) in the video memory space. What is required is a Virtual entry in the Screen Display section of the xorg.conf. This will increase the default size to something large enough to fit both monitors.

And here is where things broke with F10. If you specify the Virtual entry in that section of the xorg.conf file the gdm greeter locks up the system before you can login and use the new configuration. This is a known problem (see the Red Hat report and the associated freedesktop.org bug reports on the intel driver and GEM) that may be fixed but the latest F10 updates (as of 2009-01-01) apparently do not include the fix.

The workaround is to disable acceleration in the driver by adding the noaccel option (see my F10 xorg.conf file for an example). Disabling acceleration isn’t a problem for me so far, especially since the older F9 configuration specified that anything over 2048×2048 (which is what I need for my dual monitors) would disable 3D support anyway. However it does affect the quality of video playback under the MythTV frontend. The best configuration I can get from this is to go under Setup->TV Settings->Playback and change the following:

* General Playback: Enable realtime priority threads
* Playback Profiles: Set Current Video Playback Profile to Slim.

I then have to run the frontend as root:

sudo mythfrontend

This allows the realtime priority threads to function. The playback doesn’t drop many frames but the video is blurry, especially action shots like live sports.

Until F10 updates the xorg-x11-drv-i810 package (which hold the intel video driver), there isn’t much you can do about this short of compiling the driver yourself from X.org’s source. I don’t recommend that for the average user, however. Even I’m not inclined to grab that source and build it. Last time I did (which was before they dropped imake support) it was not a simple process. Maybe things are easier these days. Who knows.

Update: 2009-01-04

I found the MythTV is essentially useless to me with the driver in the current state so I’m going to attempt to update manually. According to the comment from Gordon Jin from the bug report, you need kernel version 2.6.28 and either the master branch or xf86-video-intel-2.6-branch or the upcoming 2.6 release of the intel driver. The latter requires a git checkout and build, something I’ve not done with X since before the switch to autoconf from imake. And I always seem to run into problems moving from the current distro kernel to a new kernel with the same config (even though I use the config from the current kernel). Not to mention that this fix requires upgrading the entire Xorg core components to 1.6 (Fedora 10 shows the X server at 1.5.3). So this is no simple feat. I wish I had fedora’s build tools to package the RPMs for X. That might make it easier. Maybe.

So my chances of success are not good here, but I’m going to give it a shot. I’ll post an update on my progress later.

Update: 2009-01-05

I just happened across the Intel open source pages tonight and was reminded about IntelLinuxGraphics.org, the primary web site for the xorg driver. I’d been here before but hadn’t really looked at the information available for developers. Tonight I read through their information on how to build the driver. It’s still not clear to me if the driver in the Master branch for xorg will build against the version of xorg I’m running, but notes in the driver source lead me to believe it may have a chance. So I’m starting down this path instead of trying to build all of the xorg source.

While I may be able to build the driver I have a feeling it may build without the fix I need given that I’m running against a 2.6.27 kernel and the older 1.5.3 Xorg server. But hey, it’s worth a shot. At the moment, MythTV is completely unusable in my dual monitor setup and I really don’t want to reinstall F9 just to get that working again. One thing I noted right off the bat (after only a few minutes playing with the build before trying to finish an already late column for Linux Format) is that the installed version of libdrm is too old as well, so I’ll have to build that too at a minimum.

More updates when I get some more time to play with this.

No comments:

Post a Comment