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