[Intel-gfx] rfc: breaking old userspace gamma for 10-bit support

Andrew Lutomirski luto at mit.edu
Wed Apr 20 21:45:56 CEST 2011


On Wed, Apr 20, 2011 at 3:38 PM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
>> > Andrew, do you have anything hacked together for this yet?
>>
>> Nope.  I gave up because I couldn't even get the mode to set. :)
>
> Ok well you should be able to now. :)  Using the patchset I posted
> earlier along with the two attached patches, the testdisplay program in
> intel-gpu-tools will set a 30bpp mode and draw some nice gradients
> (though without a 10bpc gamma ramp loaded).

Will test at home (that's where by 10bpc display is).

>
>> One issue was that the RandR apis aren't really designed for cards
>> that can accept more than one gamma ramp size.  Someone (I forget who)
>> suggested adding a display property to control it.  It might be
>> possible to kill two birds with one stone by adding a property with
>> two settings:
>>
>>  - Low depth: the logic you implemented: the bit depth is set to match
>> the framebuffer when possible and the gamma ramp size is set according
>> to the framebuffer depth.
>>  - High depth: the bit depth is set to the maximum that the encoder,
>> connector, and monitor support at the requested resolution and the
>> gamma ramp size is set to whatever gives the highest precision in each
>> entry.
>
> Well, I haven't implemented anything, gamma-wise.  If you select say
> 30bpp when you start X *and* you have a kernel with my patches applied,
> you'll get 10bpc all the way out to the display if it supports it.  If
> the display does *not* support 10bpc, the pipe will dither it to 8bpc
> before sending it to the encoder.  Current DDX on an old kernel will
> fail to create an FB with 10bpc because the kernel will reject it.
>
> So I guess I don't understand your low vs high distinction; the bit
> depth is ultimately tied to the framebuffer and its allocation.
> Correction happens after the fact in hw when the plane feeds bits to the
> pipe.

I want to have a 24-bit display plane with a 10-bit precision (or
12-bit interpolated) gamma ramp driving a 10bpc pipe and 10bpc over
DisplayPort.  That way I can ask Argyll for a 10bpc gamma ramp and I
get a gamma-corrected display without any banding but also without
having to wait for all the userspace stuff (mesa, compiz, etc.) to be
able to draw to a 30-bit framebuffer.

--Andy



More information about the Intel-gfx mailing list