RandR 1.2 feedback
aritger at nvidia.com
Thu Nov 23 11:50:21 PST 2006
On Thu, 23 Nov 2006, Xavier Bestel wrote:
> On Wed, 2006-11-22 at 17:38 -0800, Andy Ritger wrote:
>> - The proposed spec lets the client separately configure the X screen
>> size and each CRTC. This has very nice flexibility in that each piece
>> can be separately controlled.
>> One minor downside is that it takes multiple requests to reconfigure
>> things, and if one request fails, then the client may need to unravel
>> the previous requests to restore the X server to the previous state.
> Would being able to change several settings atomically solve that
> problem ?
Yes, I think being able to change the screen size and CRTC/output
configurations atomically would solve that.
>> For our research into display configuration in the NVIDIA driver,
>> we've used the idea of a MetaMode as a container of an X screen's
>> configuration: X screen size, per-output mode, mode positioning,
>> panning, etc. A client can use NV-CONTROL protocol to dynamically
>> add new MetaModes to an X screen (the X screen contains a list of
>> MetaModes); then, the client separately switches which MetaMode the
>> X screen should use.
> Wouldn't MetaModes list explode with the number of Gfx cards plugged in
> a PC ?
There is growth, but it's linear with the number of X screens.
In NVIDIA's current implementation, a MetaMode is a per X screen object
(i.e., it describes an X screen's configuration, not the X server's
configuration). So each X screen has a list of it's MetaModes.
Generally, the MetaMode list is relatively short (though clients can
add as many valid unique MetaModes to the list as they like). For each
GPU (and thus for each additional X screen), that adds another list of
MetaModes for that X screen. MetaModes don't span across X screens, and
it's not like MetaModes need to be added for all possible combinations,
just the configurations the client is interested in (and the client can
delete MetaModes he is no longer interested in).
When a user changes his configuration in nvidia-settings, normally we just
add a new MetaMode and switch to it. If switching to it was successful,
the previous MetaMode is removed.
More information about the xorg