<div dir="ltr"><div>Is there a reason we can't somehow "merge" the two CRTCs together into one virtual CRTC? Too difficult to modeset?<br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Jan 16, 2014 at 2:11 PM, Aaron Plattner <span dir="ltr"><<a href="mailto:aplattner@nvidia.com" target="_blank">aplattner@nvidia.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So, monitor manufacturers are starting to make high-resolution displays that<br>
consist of one LCD panel that appears to the PC as two.  The one I've got is a<br>
Dell UP2414Q.  It shows up to the PC as two DisplayPort 1.2 multistream devices<br>
that have the same GUID but different EDIDs.  There's an extension block in the<br>
EDID that's supposed to indicate which side is the left tile and which is the<br>
right, though I haven't tried to decode it yet.<br>
<br>
The problem, obviously, is that applications (including some games) treat the<br>
two tiles as if they were completely separate monitors.  Windows maximize to<br>
only half of the screen.  My question is, how do we want to deal with these<br>
monitors?<br>
<br>
As far as I see it, we have four options:<br>
<br>
 1. Hide the presence of the second tile in the X server.<br>
<br>
    Somehow combine the two tiles into a single logical output at the RandR<br>
    protocol level.  The X server would be responsible for setting up the right<br>
    configuration to drive the logical output using the correct physical<br>
    resources.<br>
<br>
 2. Hide the presence of the second tile in libXrandr.<br>
<br>
    This would allow interested applications to query the real state of the<br>
    hardware while also making it easier to do modesets on a per-monitor level<br>
    rather than per-output.<br>
<br>
    This could be exposed either as a new "simple" modeset API in libXrandr or<br>
    similar, or by modifying the existing interface and having a new interface<br>
    to punch through the façade and get at the real configuration, for clients<br>
    that care.<br>
<br>
 3. Update every application that uses RandR 1.2.<br>
<br>
    Applications can detect the presence of these monitors and deal with them<br>
    themselves, but this might have poor adoption because programmers are a lazy<br>
    bunch in general.<br>
<br>
 4. Do nothing and hope the problem goes away.<br>
<br>
    Hopefully, the situation with current 4k monitors is temporary and we'll<br>
    start seeing single-tile 4k displays soon, fixing the problem "forever".<br>
    Until we get 8k tiled displays.<br>
<br>
If the real output devices are still exposed through the protocol, it might make<br>
sense to add new properties describing their relative positions to make it<br>
easier for clients to lay them out in the right order.  This might be useful for<br>
power-walls too.<br>
<br>
The problem with the first two options is that driving these monitors consumes<br>
two crtcs.  If we present them as a single output to applications, they'll make<br>
the assumption that they can just assign a single crtc to that output and use<br>
the remaining crtcs for something else.  I suspect that deleting crtcs or<br>
otherwise marking them as used as a side effect of setting a mode on a different<br>
crtc is going to explode a lot of existing applications.<br>
<br>
~~<br>
<br>
Regardless of what we do about the current crop of 4k monitors, one feature I<br>
would like to add is a standardized OutputGroup property.  Multiple outputs with<br>
the same value of OutputGroup should be considered (both by clients and the<br>
server) as a single logical monitor.  This would affect the Xinerama information<br>
presented by rrxinerama.c, and window managers that use RandR 1.2 directly would<br>
be encouraged to consider output groups in their UI behavior.<br>
<br>
The X server could configure OutputGroups automatically when setting up the<br>
initial configuration based on the presence of tiled displays, and clients could<br>
reconfigure the groups at runtime to get different behavior if desired.<br>
<br>
Does this sound like a reasonable extension to RandR?<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Aaron<br>
_______________________________________________<br>
<a href="mailto:xorg-devel@lists.x.org">xorg-devel@lists.x.org</a>: X.Org development<br>
Archives: <a href="http://lists.x.org/archives/xorg-devel" target="_blank">http://lists.x.org/archives/xorg-devel</a><br>
Info: <a href="http://lists.x.org/mailman/listinfo/xorg-devel" target="_blank">http://lists.x.org/mailman/listinfo/xorg-devel</a></font></span></blockquote></div><br><br clear="all"><br>-- <br>  Jasper<br>
</div>