X.org work

We're nearing the beta freeze for Intrepid. Some stuff I've been working on lately...

Fix for bad gradient banding on -ati - In testing some newer hardware with newish ATI chips, there's a noticeable issue with gradient rendering (see screenshot). It's quite noticeable with the Ubuntu background image, but can also be reproduced easily in Inkscape or Gimp. I coded up a patch to use dithering to minimize the banding. Having to use dithering on this very new hardware seems less than optimal, but at least it looks ok.

Documenting Quirks - The -intel driver has a nifty quirk system, which has been a boon with Ubuntu. Because Ubuntu has so many users, it gives us a huge range of hardware coverage, so once I understand a given quirk, it's pretty straightforward to locate relevant bugs in Ubuntu's bug tracker and send quirks in for them. I've written up quirk documentation explaining each of the issues these fix, the symptoms to look for, and what to include in bug reports for requesting them.

-ati AGPMode quirk system - The -ati driver doesn't have as sophisticated of a quirking system as -intel, but since it proved so handy, I coded a quirk system, that handles quirking based on AGP incompatibilities between a given ATI gfx card and the host bridge. Hopefully the contribution will be taken upstream; meantime it's in Ubuntu's -ati tree (and directions for testing and requesting quirks are in the quirk docs).

-ati bug squashery - During Hardy development, I focused pretty intently on bugs with -intel, bringing the total count in Launchpad from 160 down to 100 by the release. This time around, I've been trying to do the same with -ati; we started from a bit higher point than -intel, but I'm optimistic that the remaining 45 or so can be knocked out by release.

Reworking Failsafe-X - With displayconfig-gtk being retired, I decided to go back to the blackboard and reinvent our failure handling code. Originally, many people needed to hand configure things in xorg.conf, and errors in doing so could drop you into the failure mode (the infamous blue gdm screen). Since that was a pretty common failure mode, the failsafe X handler was designed specifically for handling that case. However, upstream changes to make X auto-configure itself rendered much of this obsolete pretty rapidly.

These days, most people don't need anything in xorg.conf, and the original use case has been greatly reduced (yay!) The remaining failure use cases tend to be pretty scattered across the board, and not easy to solve with a universal tool.

So, I'm taking more of a "toolbox" approach in Intrepid. Instead of a sophisticated GUI, there's just a series of simple menus for easily reconfiguring or troubleshooting. It now shows you the exact error message(s) it ran into in the first dialog, which I hope helps make errors more obvious. The default option is to just use the VGA mode, just one time (so if someone's in a hurry or finds the system scary, it will at least help get them into a functioning Ubuntu without having to think about it or risking permanent breakage). There's an option to just exit to the command line, or to view/archive Xorg and gdm log files for bug reporting, or even just popping open xorg.conf in a text editor. In Jaunty I hope to expand on this with an xorg.conf validator based on x-kit, and an automatic bug reporter (but I need logic to filter out non-bugs, false-positives, and user-errors first).

Non-functioning hotkeys - A large chunk of time this month went into investigating hotkey issues, particularly around the sleep/battery keys. That involved into digging through 'acpi-support', which I'm wondering if we need to just drop and go with straight HAL/pmutils. There are a ton of outstanding patches from Debian that we don't have, and even with them I think it may redundant. It's too late in Intrepid to do much more than duct tape, but for Jaunty this is going to need a lot of focus.

Posted in Submitted by bryce on Wed, 2008-09-24 00:01.
bryce's blog

Well, the fix I put in was specific to 3670 cards, and without knowing what card you have I can't say if it'd fix it for you.

It took quite a bit of fiddling to get the dithering to look okay. And It's far from what I'd call perfect. But at least the banding is gone.

I did do a search in launchpad for any other -ati bugs mentioning 'banding', 'gradients', 'dithering'. There was only one such bug which affects macbooks, and yesterday I put in a change that might help, and if not I built a debugging package to gather info to assist in further investigation:

http://bryceharrington.org/ubuntu/AtiDithering/

So, if anyone else is also seeing banding issues, *please* file a bug report about it. Install the appropriate deb from the above link, restart X, and collect the Xorg.0.log; this will have some "BWH:" lines. Include that Xorg.0.log, and the output of 'lspci -vvnn' in a bug report, and in the subject mention "gradient banding" and the model of graphics card.

bryce | Thu, 2008-09-25 19:18

OMG, are you really going to fix it? This has been irritating me for so long that I nearly lost any hope to see this fixed. Kudos to you then :)

prokoudine (not verified) | Thu, 2008-09-25 16:48

Thanks for the update! There seem to be quite a few regressions with the ati driver on intrepid... will these receive any special attention in the next few weeks? This is especially needed I think because fglrx will probably not be available at release time.

Anonymous (not verified) | Wed, 2008-09-24 22:10

You'll need to dig through the acpi-support, pm-utils, and/or hal code to figure out what's going wrong. These issues tend to be very hardware-specific, so you'll probably need to make sure the quirks for your model of equipment are functioning properly.

Thanks for the answer! I'll have a look at those parts then!

oliver (not verified) | Wed, 2008-09-24 19:47

Do you have a hint what to do for hotkeys that only generate an ACPI event? With acpi_listen, there's some text printed when pressing the hotkey, but showkey etc. doesn't display anything. What should I do to get this working?

You'll need to dig through the acpi-support, pm-utils, and/or hal code to figure out what's going wrong. These issues tend to be very hardware-specific, so you'll probably need to make sure the quirks for your model of equipment are functioning properly.

bryce | Wed, 2008-09-24 19:21

Thanks for the info.

Hugo Heden (not verified) | Wed, 2008-09-24 09:41

Do you have a hint what to do for hotkeys that only generate an ACPI event? With acpi_listen, there's some text printed when pressing the hotkey, but showkey etc. doesn't display anything. What should I do to get this working?

oliver (not verified) | Wed, 2008-09-24 09:07

Thanks for the update on the state of X!

Anonymous (not verified) | Wed, 2008-09-24 03:35

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
More information about formatting options