xserver and splitting ultra-wide monitors

Michael Wyraz michael at wyraz.de
Fri Feb 10 08:32:22 UTC 2023


Hello Keith,

I have verified that the current implementation actually works exactly 
as suggested. Initially, an auto-generated monitor exists. Adding a user 
defined monitor replaces it. Removing the user defined monitor restores 
the auto-generated monitor.

I have refined the randr spec regarding this. I also changed the 
definition to allow more than one monitor per output. The change can be 
found at

https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/64

After I got some advice from Oliver how to improve my PR, I updated the 
description there and added my findings as well as an estimation what 
side effects this change could have. This PR to xorg-server is at

https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/981

Please let me know if there is anything missing or if some more 
discussion is required to get this merged.

Kind regards,
Michael.

> Michael Wyraz <michael at wyraz.de> writes:
>
>> For the second monitor, the output must be set to "none" which is
>> obviously wrong since it is connected to a device. The reason why it is
>> set to "none" is some code in xserver that removes an monitor if another
>> one is added to the same output:
> That's actually required in the RandR spec:
>
> 	For each output in 'info.outputs, each one is removed from all
> 	pre-existing Monitors. If removing the output causes the list of
> 	outputs for that Monitor to become empty, then that Monitor will
> 	be deleted as if RRDeleteMonitor were called.
>
> The notion of splitting one physical output into multiple virtual
> monitors was not considered when this extension was defined, which is
> why it doesn't work. I don't see any particular reason for *not*
> supporting your use case.
>
> However, there are subtleties here. We want to remove any automatically
> created 'Monitor' objects when mapping user-specified monitors to
> them, and we want to re-generate automatically generated 'Monitors' when
> all virtual monitors associated with an output are removed.
>
> I think what we want is:
>
>   * If no user-specified Monitors map to a particular Output, then automatically
>     create a Monitor for that Output
>
>   * If any user-specified Monitors map to a particular Output, then
>     remove the automatically generated Monitor for that Output.
>     
> In the current spec, there's no real separation between user-specified
> and automatically-generated Monitors, I think that would be necessary to
> make this work?
>


More information about the xorg-devel mailing list