[Intel-gfx] rfc: breaking old userspace gamma for 10-bit support
luto at mit.edu
Fri Jul 23 22:29:06 CEST 2010
On Fri, Jul 23, 2010 at 4:13 PM, Eric Anholt <eric at anholt.net> wrote:
> On Fri, 23 Jul 2010 14:00:30 -0400, Andrew Lutomirski <luto at mit.edu> wrote:
>> AFAICT intel hardware wants a 129-entry LUT when using high precision
>> gamma ramps. Rather than hacking some kind of decimation into the
>> kernel driver (and thus silently breaking DirectColor), I'd like to
>> teach userspace how to deal with variable gamma sizes.
>> gnome-color-manager already more-or-less supports arbitrary gamma ramp
>> sizes (supposedly), dispwin ought to do it, and there might not be any
>> other software that really cares. gnome-screensaver saves and
>> restores the gamma ramp, and I haven't checked if it works right for
>> funny sizes.
>> The worst problem we'll have is that current xf86-drv-intel can't
>> handle non-256 gamma sizes at all. So if we change the kernel we'll
>> break it completely.
>> One option is to have the kernel report gamma_size = 129 but still
>> accept 256 and decimate itself. That might cause current userspace to
>> keep working (except for DirectColor).
>> Any thoughts?
> The kernel doesn't get to break old userspace. The kernel could support
> new userspace that only asks for 129 slots and set a mode that has
> better precision in that case. New interfaces would probably be
> required to communicate that up front -- I haven't looked into it, but I
> just want to make sure you don't spend a bunch of time going down a path
> that will be rejected.
Does that include not breaking DirectColor? If we program the gamma
ramp to 129 slots, old userspace submits 256 entries that are not
monotonic, and we decimate the gamma ramp, we'll display the wrong
thing. I have no idea if there are any programs *at all* that do
that, though. (If they did, presumably they'd make the entire screen
look rather odd.)
I'll look in to whether we can switch between 256 and 129 slot modes
without flicker. We can maybe take advantage of the fact that current
userspace doesn't even check the reported gamma ramp size but just
blindly shoves 256 entries at the kernel.
More information about the Intel-gfx