* tile property contents
@ 2014-10-14 3:23 Dave Airlie
[not found] ` <CAPM=9tzCLM2eV2Gre_52AUcdSa0z_qqYFppfGvz75e5o9eUwFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 15+ messages in thread
From: Dave Airlie @ 2014-10-14 3:23 UTC (permalink / raw)
To: dri-devel, X.Org Devel List
Hi,
So I've been hacking on mutter and the gnome pieces for tiling, and
I've at least fixed mutter locally so maximise windows works and the
heads are in the right order.
Now I've strung all the pieces together using a single KMS property
that X.org propogates, and mutter picks up and propagates over dbus as
well,
Currently I've ascii encoded the property into a blob,
<ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
I'm thinking of dropping the version field and just exposing TILE2
property if we need it later to add more values,
The other fields:
tileid: a group id assigned by the kernel to all tiles in the same
group - unique per group
flags: bit 0 : single monitor enclosure
maxhtiles: total number of horiz tiles
maxvtiles: total number of vert tiles
h_tile_loc: horiz location of this output in tile group
v_tile_loc: vert location of this output in tile group
tile_w: width of this tile
tile_h: height of this tile.
Now we extract all of these from the DisplayID v1.3 block, and I'm
wondering if maybe I shouldn't just export the whole DisplayID tiling
info block instead, it however encodes a few other pieces of
information, including bezel info, and some flags specifying behaviour
in some cases.
The former could be more suitable for cases where DisplayID isn't
available (Dual DSI panels?) but I'm worried abuot exposing too little
at this point making TILE useless when the next monitor comes out.
I'm not sure any part of the stack should be extracting things and
splitting them out, I'd like to just give the same tile property all
the way through.
Dave.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
[not found] ` <CAPM=9tzCLM2eV2Gre_52AUcdSa0z_qqYFppfGvz75e5o9eUwFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2014-10-14 11:40 ` Thierry Reding
2014-10-14 20:35 ` Dave Airlie
2014-10-22 6:34 ` Andy Ritger
2014-12-03 0:01 ` Aaron Plattner
2 siblings, 1 reply; 15+ messages in thread
From: Thierry Reding @ 2014-10-14 11:40 UTC (permalink / raw)
To: Dave Airlie; +Cc: X.Org Devel List, dri-devel
[-- Attachment #1.1: Type: text/plain, Size: 3121 bytes --]
On Tue, Oct 14, 2014 at 01:23:22PM +1000, Dave Airlie wrote:
> Hi,
>
> So I've been hacking on mutter and the gnome pieces for tiling, and
> I've at least fixed mutter locally so maximise windows works and the
> heads are in the right order.
>
> Now I've strung all the pieces together using a single KMS property
> that X.org propogates, and mutter picks up and propagates over dbus as
> well,
>
> Currently I've ascii encoded the property into a blob,
>
> <ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
>
> I'm thinking of dropping the version field and just exposing TILE2
> property if we need it later to add more values,
>
> The other fields:
> tileid: a group id assigned by the kernel to all tiles in the same
> group - unique per group
> flags: bit 0 : single monitor enclosure
> maxhtiles: total number of horiz tiles
> maxvtiles: total number of vert tiles
> h_tile_loc: horiz location of this output in tile group
> v_tile_loc: vert location of this output in tile group
> tile_w: width of this tile
> tile_h: height of this tile.
>
> Now we extract all of these from the DisplayID v1.3 block, and I'm
> wondering if maybe I shouldn't just export the whole DisplayID tiling
> info block instead, it however encodes a few other pieces of
> information, including bezel info, and some flags specifying behaviour
> in some cases.
>
> The former could be more suitable for cases where DisplayID isn't
> available (Dual DSI panels?) but I'm worried abuot exposing too little
> at this point making TILE useless when the next monitor comes out.
I don't think this is a good fit to describe dual DSI panels in the
first place. While one of the modes (left-right split) could probably be
described using the above, the other mode (odd-even split) is more
difficult. In the latter mode, one controller will provide the odd lines
and the other controller will provide the even lines.
Also exporting the details about tiling presumes that each of the tiles
can work pretty much independently, too. That's not necessarily the case
for dual DSI. For a symmetric left-right split configuration this may be
somewhat true, at least for one of the halves. The second half can't
operate standalone. For an odd-even split I don't think either half can
be made to work standalone. I'm also not sure how left-right split
configurations work in video mode. I can imagine that both are really
needed for the panel to properly sync, since only the right half gets
the HBLANK and VBLANK signals.
One other thing that worries me about this is that we defer handling of
these complex configurations to userspace. I suppose this is fine, and
in fact the only way, if there is no knowledge about the tile layout in
kernel space. But if we know precisely how these various tiles are
connected, wouldn't we be better off abstracting this away within the
kernel and expose a single connector that is the union of all the tiles?
After all that's what the kernel is, an abstraction between hardware and
userspace.
Thierry
[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 219 bytes --]
_______________________________________________
xorg-devel-go0+a7rfsptAfugRpC6u6w@public.gmane.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
2014-10-14 11:40 ` Thierry Reding
@ 2014-10-14 20:35 ` Dave Airlie
2014-10-15 8:29 ` Thierry Reding
0 siblings, 1 reply; 15+ messages in thread
From: Dave Airlie @ 2014-10-14 20:35 UTC (permalink / raw)
To: Thierry Reding; +Cc: X.Org Devel List, dri-devel
On 14 October 2014 21:40, Thierry Reding <thierry.reding@gmail.com> wrote:
> On Tue, Oct 14, 2014 at 01:23:22PM +1000, Dave Airlie wrote:
>> Hi,
>>
>> So I've been hacking on mutter and the gnome pieces for tiling, and
>> I've at least fixed mutter locally so maximise windows works and the
>> heads are in the right order.
>>
>> Now I've strung all the pieces together using a single KMS property
>> that X.org propogates, and mutter picks up and propagates over dbus as
>> well,
>>
>> Currently I've ascii encoded the property into a blob,
>>
>> <ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
>>
>> I'm thinking of dropping the version field and just exposing TILE2
>> property if we need it later to add more values,
>>
>> The other fields:
>> tileid: a group id assigned by the kernel to all tiles in the same
>> group - unique per group
>> flags: bit 0 : single monitor enclosure
>> maxhtiles: total number of horiz tiles
>> maxvtiles: total number of vert tiles
>> h_tile_loc: horiz location of this output in tile group
>> v_tile_loc: vert location of this output in tile group
>> tile_w: width of this tile
>> tile_h: height of this tile.
>>
>> Now we extract all of these from the DisplayID v1.3 block, and I'm
>> wondering if maybe I shouldn't just export the whole DisplayID tiling
>> info block instead, it however encodes a few other pieces of
>> information, including bezel info, and some flags specifying behaviour
>> in some cases.
>>
>> The former could be more suitable for cases where DisplayID isn't
>> available (Dual DSI panels?) but I'm worried abuot exposing too little
>> at this point making TILE useless when the next monitor comes out.
>
> I don't think this is a good fit to describe dual DSI panels in the
> first place. While one of the modes (left-right split) could probably be
> described using the above, the other mode (odd-even split) is more
> difficult. In the latter mode, one controller will provide the odd lines
> and the other controller will provide the even lines.
Okay I'm happy with dual-DSI panels that you can hide those in the
kernel, they don't seem hotpluggable,
so if you have one in your device-tree, you can probably just never
expose the second crtc/encoder in the mode groups,
and keep them for the kernel to use as slaves for the panel.
> One other thing that worries me about this is that we defer handling of
> these complex configurations to userspace. I suppose this is fine, and
> in fact the only way, if there is no knowledge about the tile layout in
> kernel space. But if we know precisely how these various tiles are
> connected, wouldn't we be better off abstracting this away within the
> kernel and expose a single connector that is the union of all the tiles?
> After all that's what the kernel is, an abstraction between hardware and
> userspace.
>
We can't do that for the MST panels, because the abstractions is too
leaky, stealing crtcs dynamically at runtime, is screwed up and
getting pageflipping across crtcs without userspace knowing is also a
large pit of fail.
Dave.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
2014-10-14 20:35 ` Dave Airlie
@ 2014-10-15 8:29 ` Thierry Reding
2014-10-15 10:04 ` Daniel Stone
0 siblings, 1 reply; 15+ messages in thread
From: Thierry Reding @ 2014-10-15 8:29 UTC (permalink / raw)
To: Dave Airlie; +Cc: X.Org Devel List, dri-devel
[-- Attachment #1.1: Type: text/plain, Size: 4558 bytes --]
On Wed, Oct 15, 2014 at 06:35:52AM +1000, Dave Airlie wrote:
> On 14 October 2014 21:40, Thierry Reding <thierry.reding@gmail.com> wrote:
> > On Tue, Oct 14, 2014 at 01:23:22PM +1000, Dave Airlie wrote:
> >> Hi,
> >>
> >> So I've been hacking on mutter and the gnome pieces for tiling, and
> >> I've at least fixed mutter locally so maximise windows works and the
> >> heads are in the right order.
> >>
> >> Now I've strung all the pieces together using a single KMS property
> >> that X.org propogates, and mutter picks up and propagates over dbus as
> >> well,
> >>
> >> Currently I've ascii encoded the property into a blob,
> >>
> >> <ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
> >>
> >> I'm thinking of dropping the version field and just exposing TILE2
> >> property if we need it later to add more values,
> >>
> >> The other fields:
> >> tileid: a group id assigned by the kernel to all tiles in the same
> >> group - unique per group
> >> flags: bit 0 : single monitor enclosure
> >> maxhtiles: total number of horiz tiles
> >> maxvtiles: total number of vert tiles
> >> h_tile_loc: horiz location of this output in tile group
> >> v_tile_loc: vert location of this output in tile group
> >> tile_w: width of this tile
> >> tile_h: height of this tile.
> >>
> >> Now we extract all of these from the DisplayID v1.3 block, and I'm
> >> wondering if maybe I shouldn't just export the whole DisplayID tiling
> >> info block instead, it however encodes a few other pieces of
> >> information, including bezel info, and some flags specifying behaviour
> >> in some cases.
> >>
> >> The former could be more suitable for cases where DisplayID isn't
> >> available (Dual DSI panels?) but I'm worried abuot exposing too little
> >> at this point making TILE useless when the next monitor comes out.
> >
> > I don't think this is a good fit to describe dual DSI panels in the
> > first place. While one of the modes (left-right split) could probably be
> > described using the above, the other mode (odd-even split) is more
> > difficult. In the latter mode, one controller will provide the odd lines
> > and the other controller will provide the even lines.
>
> Okay I'm happy with dual-DSI panels that you can hide those in the
> kernel, they don't seem hotpluggable,
>
> so if you have one in your device-tree, you can probably just never
> expose the second crtc/encoder in the mode groups,
> and keep them for the kernel to use as slaves for the panel.
For reference: on Tegra a single CRTC sends pixel data to both DSI
outputs. The DSI outputs can then be programmed to take only the pixels
that they need to display. In the driver that I've submitted for review
a couple of days ago this is done by enslaving the second DSI output so
that it doesn't expose a regular DSI connector. The first DSI output is
then "augmented" to support a maximum of 8 data lanes instead of only 4
data lanes.
It'd be interesting to see if some of that can be extracted into common
code, but for now I've opted to handle it all in the Tegra driver since
it is the only implementation of this mode at this time.
> > One other thing that worries me about this is that we defer handling of
> > these complex configurations to userspace. I suppose this is fine, and
> > in fact the only way, if there is no knowledge about the tile layout in
> > kernel space. But if we know precisely how these various tiles are
> > connected, wouldn't we be better off abstracting this away within the
> > kernel and expose a single connector that is the union of all the tiles?
> > After all that's what the kernel is, an abstraction between hardware and
> > userspace.
> >
>
> We can't do that for the MST panels, because the abstractions is too
> leaky, stealing crtcs dynamically at runtime, is screwed up and
> getting pageflipping across crtcs without userspace knowing is also a
> large pit of fail.
I see. That sounds like it can indeed not be reasonably hidden in the
kernel. Or at least I wouldn't know how, so dealing with it in userspace
seems like a better option.
Just for my understanding, is it typical for each of these panels to be
standalone (own housing, ...) or are there monitors that actually take
two connectors and each of them drives a different part of the same
panel? A quick search on the internet indicates that the former is more
common (I haven't actually been able to find an example of the latter).
Thierry
[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
2014-10-15 8:29 ` Thierry Reding
@ 2014-10-15 10:04 ` Daniel Stone
2014-10-15 11:07 ` Thierry Reding
0 siblings, 1 reply; 15+ messages in thread
From: Daniel Stone @ 2014-10-15 10:04 UTC (permalink / raw)
To: Thierry Reding; +Cc: X.Org Devel List, dri-devel
[-- Attachment #1.1: Type: text/plain, Size: 676 bytes --]
Hi,
On 15 October 2014 10:29, Thierry Reding <thierry.reding@gmail.com> wrote:
> Just for my understanding, is it typical for each of these panels to be
> standalone (own housing, ...) or are there monitors that actually take
> two connectors and each of them drives a different part of the same
> panel? A quick search on the internet indicates that the former is more
> common (I haven't actually been able to find an example of the latter).
>
You're in luck, because people are actually just that insane:
http://www.anandtech.com/show/8496/dell-previews-27inch-5k-ultrasharp-monitor-5120x2880
Two separate DP1.2 connectors, each using MST, for a 2x2 tile.
Cheers,
Dan
[-- Attachment #1.2: Type: text/html, Size: 1334 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
2014-10-15 10:04 ` Daniel Stone
@ 2014-10-15 11:07 ` Thierry Reding
0 siblings, 0 replies; 15+ messages in thread
From: Thierry Reding @ 2014-10-15 11:07 UTC (permalink / raw)
To: Daniel Stone; +Cc: X.Org Devel List, dri-devel
[-- Attachment #1.1: Type: text/plain, Size: 794 bytes --]
On Wed, Oct 15, 2014 at 12:04:38PM +0200, Daniel Stone wrote:
> Hi,
>
> On 15 October 2014 10:29, Thierry Reding <thierry.reding@gmail.com> wrote:
>
> > Just for my understanding, is it typical for each of these panels to be
> > standalone (own housing, ...) or are there monitors that actually take
> > two connectors and each of them drives a different part of the same
> > panel? A quick search on the internet indicates that the former is more
> > common (I haven't actually been able to find an example of the latter).
> >
>
> You're in luck, because people are actually just that insane:
> http://www.anandtech.com/show/8496/dell-previews-27inch-5k-ultrasharp-monitor-5120x2880
>
> Two separate DP1.2 connectors, each using MST, for a 2x2 tile.
Oh my...
Thierry
[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
[not found] ` <CAPM=9tzCLM2eV2Gre_52AUcdSa0z_qqYFppfGvz75e5o9eUwFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-14 11:40 ` Thierry Reding
@ 2014-10-22 6:34 ` Andy Ritger
2014-10-22 21:20 ` Daniel Vetter
2014-12-03 0:01 ` Aaron Plattner
2 siblings, 1 reply; 15+ messages in thread
From: Andy Ritger @ 2014-10-22 6:34 UTC (permalink / raw)
To: Dave Airlie; +Cc: X.Org Devel List, dri-devel
I assume the TILE property described below would be per-connector?
It looks like this would handle the DP MST tiled display case.
At the risk of trying to solve too much at once:
There are also configurations where users configure multiple heads to
drive power walls that they want to be treated as one logical monitor,
similar to the DP MST tiled display case. Normally, those powerwall
configurations don't have any layout information from the monitors
themselves, and the layout is configured by the user.
Would it be appropriate for users to be able to set the TILE property
in that sort of scenario?
For the sake of generality, I wonder if max[hv]tiles and [hv]_tile_loc
should be expressed in pixels rather than tiles? Sometimes, the tiles
in those powerwalls may not all have the same resolution, or may be
configured with overlap. I suppose that would make the TILE configuration
specific to the current modetimings on each tile...
Thanks,
- Andy
On Tue, Oct 14, 2014 at 01:23:22PM +1000, Dave Airlie wrote:
> Hi,
>
> So I've been hacking on mutter and the gnome pieces for tiling, and
> I've at least fixed mutter locally so maximise windows works and the
> heads are in the right order.
>
> Now I've strung all the pieces together using a single KMS property
> that X.org propogates, and mutter picks up and propagates over dbus as
> well,
>
> Currently I've ascii encoded the property into a blob,
>
> <ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
>
> I'm thinking of dropping the version field and just exposing TILE2
> property if we need it later to add more values,
>
> The other fields:
> tileid: a group id assigned by the kernel to all tiles in the same
> group - unique per group
> flags: bit 0 : single monitor enclosure
> maxhtiles: total number of horiz tiles
> maxvtiles: total number of vert tiles
> h_tile_loc: horiz location of this output in tile group
> v_tile_loc: vert location of this output in tile group
> tile_w: width of this tile
> tile_h: height of this tile.
>
> Now we extract all of these from the DisplayID v1.3 block, and I'm
> wondering if maybe I shouldn't just export the whole DisplayID tiling
> info block instead, it however encodes a few other pieces of
> information, including bezel info, and some flags specifying behaviour
> in some cases.
>
> The former could be more suitable for cases where DisplayID isn't
> available (Dual DSI panels?) but I'm worried abuot exposing too little
> at this point making TILE useless when the next monitor comes out.
>
> I'm not sure any part of the stack should be extracting things and
> splitting them out, I'd like to just give the same tile property all
> the way through.
>
> Dave.
> _______________________________________________
> xorg-devel-go0+a7rfsptAfugRpC6u6w@public.gmane.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
_______________________________________________
xorg-devel-go0+a7rfsptAfugRpC6u6w@public.gmane.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
2014-10-22 6:34 ` Andy Ritger
@ 2014-10-22 21:20 ` Daniel Vetter
[not found] ` <CAKMK7uHE=cCfpZkSaCMmePF+M2uUGXVnY4wQ4qeEN43d8n2DGA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 15+ messages in thread
From: Daniel Vetter @ 2014-10-22 21:20 UTC (permalink / raw)
To: Andy Ritger; +Cc: X.Org Devel List, dri-devel
On Wed, Oct 22, 2014 at 8:34 AM, Andy Ritger <aritger@nvidia.com> wrote:
> I assume the TILE property described below would be per-connector?
>
> It looks like this would handle the DP MST tiled display case.
>
> At the risk of trying to solve too much at once:
>
> There are also configurations where users configure multiple heads to
> drive power walls that they want to be treated as one logical monitor,
> similar to the DP MST tiled display case. Normally, those powerwall
> configurations don't have any layout information from the monitors
> themselves, and the layout is configured by the user.
>
> Would it be appropriate for users to be able to set the TILE property
> in that sort of scenario?
>
> For the sake of generality, I wonder if max[hv]tiles and [hv]_tile_loc
> should be expressed in pixels rather than tiles? Sometimes, the tiles
> in those powerwalls may not all have the same resolution, or may be
> configured with overlap. I suppose that would make the TILE configuration
> specific to the current modetimings on each tile...
Why can't users just set that mode?
And if this is about the initial configuration problem then we (at
intel) are working on some way to load a dt blob as a firmware image
which would contain the entire kms state, and which we'd apply in an
atomic modeset at driver load. Everyone else (boot splash, X, ...)
will then just inherit that config. That should give you even
flicker-free screen walls if you want to ;-)
Cheers, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
[not found] ` <CAKMK7uHE=cCfpZkSaCMmePF+M2uUGXVnY4wQ4qeEN43d8n2DGA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2014-10-22 23:03 ` Andy Ritger
2014-10-23 7:58 ` Daniel Vetter
0 siblings, 1 reply; 15+ messages in thread
From: Andy Ritger @ 2014-10-22 23:03 UTC (permalink / raw)
To: Daniel Vetter; +Cc: X.Org Devel List, Dave Airlie, dri-devel
On Wed, Oct 22, 2014 at 11:20:09PM +0200, Daniel Vetter wrote:
> On Wed, Oct 22, 2014 at 8:34 AM, Andy Ritger <aritger-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> wrote:
> > I assume the TILE property described below would be per-connector?
> >
> > It looks like this would handle the DP MST tiled display case.
> >
> > At the risk of trying to solve too much at once:
> >
> > There are also configurations where users configure multiple heads to
> > drive power walls that they want to be treated as one logical monitor,
> > similar to the DP MST tiled display case. Normally, those powerwall
> > configurations don't have any layout information from the monitors
> > themselves, and the layout is configured by the user.
> >
> > Would it be appropriate for users to be able to set the TILE property
> > in that sort of scenario?
> >
> > For the sake of generality, I wonder if max[hv]tiles and [hv]_tile_loc
> > should be expressed in pixels rather than tiles? Sometimes, the tiles
> > in those powerwalls may not all have the same resolution, or may be
> > configured with overlap. I suppose that would make the TILE configuration
> > specific to the current modetimings on each tile...
>
> Why can't users just set that mode?
Sure, users can set the mode, but:
* Part of what the TILE property conveys is how monitors should be grouped
for purposes of window maximization. Users don't have a great way to
express that today, that I'm aware of.
* Users might configure the mode they want, but then gnome-settings-daemon
may come along later and decide it knows better than the user how things
should be configured. One scenario where this comes up is:
(a) user meticulously configures his power wall
(b) user hotplugs another monitor
I've definitely seen cases where window managers will try to be clever
in response to a hotplug, and clobber the user's current configuration.
If the TILE property conveyed how some set of monitors was supposed
to be grouped, that would hopefully give window managers additional
information, such that they would know to keep that group intact.
> And if this is about the initial configuration problem then we (at
> intel) are working on some way to load a dt blob as a firmware image
> which would contain the entire kms state, and which we'd apply in an
> atomic modeset at driver load. Everyone else (boot splash, X, ...)
> will then just inherit that config. That should give you even
> flicker-free screen walls if you want to ;-)
Neat :)
> Cheers, Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
xorg-devel-go0+a7rfsptAfugRpC6u6w@public.gmane.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
2014-10-22 23:03 ` Andy Ritger
@ 2014-10-23 7:58 ` Daniel Vetter
[not found] ` <20141023075840.GZ26941-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
0 siblings, 1 reply; 15+ messages in thread
From: Daniel Vetter @ 2014-10-23 7:58 UTC (permalink / raw)
To: Andy Ritger; +Cc: X.Org Devel List, dri-devel
On Wed, Oct 22, 2014 at 04:03:21PM -0700, Andy Ritger wrote:
> On Wed, Oct 22, 2014 at 11:20:09PM +0200, Daniel Vetter wrote:
> > On Wed, Oct 22, 2014 at 8:34 AM, Andy Ritger <aritger@nvidia.com> wrote:
> > > I assume the TILE property described below would be per-connector?
> > >
> > > It looks like this would handle the DP MST tiled display case.
> > >
> > > At the risk of trying to solve too much at once:
> > >
> > > There are also configurations where users configure multiple heads to
> > > drive power walls that they want to be treated as one logical monitor,
> > > similar to the DP MST tiled display case. Normally, those powerwall
> > > configurations don't have any layout information from the monitors
> > > themselves, and the layout is configured by the user.
> > >
> > > Would it be appropriate for users to be able to set the TILE property
> > > in that sort of scenario?
> > >
> > > For the sake of generality, I wonder if max[hv]tiles and [hv]_tile_loc
> > > should be expressed in pixels rather than tiles? Sometimes, the tiles
> > > in those powerwalls may not all have the same resolution, or may be
> > > configured with overlap. I suppose that would make the TILE configuration
> > > specific to the current modetimings on each tile...
> >
> > Why can't users just set that mode?
>
> Sure, users can set the mode, but:
>
> * Part of what the TILE property conveys is how monitors should be grouped
> for purposes of window maximization. Users don't have a great way to
> express that today, that I'm aware of.
My understanding for why we want the TILE property is to avoid to
duplicate displayId parsing over every bit of userspace (and the fbcon
stuff in the kernel) interested in it. Imo the proper way for userspace is
to always just inherit whatever modeset config is already there.
> * Users might configure the mode they want, but then gnome-settings-daemon
> may come along later and decide it knows better than the user how things
> should be configured. One scenario where this comes up is:
> (a) user meticulously configures his power wall
> (b) user hotplugs another monitor
> I've definitely seen cases where window managers will try to be clever
> in response to a hotplug, and clobber the user's current configuration.
> If the TILE property conveyed how some set of monitors was supposed
> to be grouped, that would hopefully give window managers additional
> information, such that they would know to keep that group intact.
Well, imnsho gnome display control center is a bit too opiniated about
automatic modeset changes. If their assumption is that they always know
perfectly what the user wants upon hotplug I really don't want to work
around this in the kernel. Since for everything else than a laptop +
beamer gnome panel always pisses me off ;-)
I think gnome should just ask the user what it wants if there's more than
2 physical displays (treating a tiled 4k screen as one ofc), since there's
really no way at all to tell.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
[not found] ` <20141023075840.GZ26941-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
@ 2014-10-24 7:25 ` Dave Airlie
2014-10-24 7:41 ` Daniel Vetter
0 siblings, 1 reply; 15+ messages in thread
From: Dave Airlie @ 2014-10-24 7:25 UTC (permalink / raw)
To: Daniel Vetter; +Cc: X.Org Devel List, dri-devel
>> > > There are also configurations where users configure multiple heads to
>> > > drive power walls that they want to be treated as one logical monitor,
>> > > similar to the DP MST tiled display case. Normally, those powerwall
>> > > configurations don't have any layout information from the monitors
>> > > themselves, and the layout is configured by the user.
>> > >
>> > > Would it be appropriate for users to be able to set the TILE property
>> > > in that sort of scenario?
>> > >
>> > > For the sake of generality, I wonder if max[hv]tiles and [hv]_tile_loc
>> > > should be expressed in pixels rather than tiles? Sometimes, the tiles
>> > > in those powerwalls may not all have the same resolution, or may be
>> > > configured with overlap. I suppose that would make the TILE configuration
>> > > specific to the current modetimings on each tile...
>> >
>> > Why can't users just set that mode?
>>
>> Sure, users can set the mode, but:
>>
>> * Part of what the TILE property conveys is how monitors should be grouped
>> for purposes of window maximization. Users don't have a great way to
>> express that today, that I'm aware of.
>
> My understanding for why we want the TILE property is to avoid to
> duplicate displayId parsing over every bit of userspace (and the fbcon
> stuff in the kernel) interested in it. Imo the proper way for userspace is
> to always just inherit whatever modeset config is already there.
Andy's idea is good, I'd considered it before, the problem being how
to expose it nicely,
not sure if you'd want persistent via /sys or dynamic setting of the
property by user for that session, so we could do it like xrandr
modes.
Daniel you are missing the nice case of using TILE for non-displayid
monitors once the infrastructure is in place.
Having it so you can create user defined tile groups to allow users to
configure arbitrary walls is a useful thing, that you can't do any
other way.
>
>> * Users might configure the mode they want, but then gnome-settings-daemon
>> may come along later and decide it knows better than the user how things
>> should be configured. One scenario where this comes up is:
>> (a) user meticulously configures his power wall
>> (b) user hotplugs another monitor
>> I've definitely seen cases where window managers will try to be clever
>> in response to a hotplug, and clobber the user's current configuration.
>> If the TILE property conveyed how some set of monitors was supposed
>> to be grouped, that would hopefully give window managers additional
>> information, such that they would know to keep that group intact.
>
> Well, imnsho gnome display control center is a bit too opiniated about
> automatic modeset changes. If their assumption is that they always know
> perfectly what the user wants upon hotplug I really don't want to work
> around this in the kernel. Since for everything else than a laptop +
> beamer gnome panel always pisses me off ;-)
>
> I think gnome should just ask the user what it wants if there's more than
> 2 physical displays (treating a tiled 4k screen as one ofc), since there's
> really no way at all to tell.
Well its not just a GNOME problem either, once things like SDL respect
tIle properrty,
we can create arbitary tile walls that the whole stack will respect,
instead of hacks
like fake xinerama.
Dave.
_______________________________________________
xorg-devel-go0+a7rfsptAfugRpC6u6w@public.gmane.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
2014-10-24 7:25 ` Dave Airlie
@ 2014-10-24 7:41 ` Daniel Vetter
0 siblings, 0 replies; 15+ messages in thread
From: Daniel Vetter @ 2014-10-24 7:41 UTC (permalink / raw)
To: Dave Airlie; +Cc: X.Org Devel List, dri-devel, Andy Ritger
On Fri, Oct 24, 2014 at 05:25:58PM +1000, Dave Airlie wrote:
> >> > > There are also configurations where users configure multiple heads to
> >> > > drive power walls that they want to be treated as one logical monitor,
> >> > > similar to the DP MST tiled display case. Normally, those powerwall
> >> > > configurations don't have any layout information from the monitors
> >> > > themselves, and the layout is configured by the user.
> >> > >
> >> > > Would it be appropriate for users to be able to set the TILE property
> >> > > in that sort of scenario?
> >> > >
> >> > > For the sake of generality, I wonder if max[hv]tiles and [hv]_tile_loc
> >> > > should be expressed in pixels rather than tiles? Sometimes, the tiles
> >> > > in those powerwalls may not all have the same resolution, or may be
> >> > > configured with overlap. I suppose that would make the TILE configuration
> >> > > specific to the current modetimings on each tile...
> >> >
> >> > Why can't users just set that mode?
> >>
> >> Sure, users can set the mode, but:
> >>
> >> * Part of what the TILE property conveys is how monitors should be grouped
> >> for purposes of window maximization. Users don't have a great way to
> >> express that today, that I'm aware of.
> >
> > My understanding for why we want the TILE property is to avoid to
> > duplicate displayId parsing over every bit of userspace (and the fbcon
> > stuff in the kernel) interested in it. Imo the proper way for userspace is
> > to always just inherit whatever modeset config is already there.
>
> Andy's idea is good, I'd considered it before, the problem being how
> to expose it nicely,
>
> not sure if you'd want persistent via /sys or dynamic setting of the
> property by user for that session, so we could do it like xrandr
> modes.
>
> Daniel you are missing the nice case of using TILE for non-displayid
> monitors once the infrastructure is in place.
>
> Having it so you can create user defined tile groups to allow users to
> configure arbitrary walls is a useful thing, that you can't do any
> other way.
>
> >
> >> * Users might configure the mode they want, but then gnome-settings-daemon
> >> may come along later and decide it knows better than the user how things
> >> should be configured. One scenario where this comes up is:
> >> (a) user meticulously configures his power wall
> >> (b) user hotplugs another monitor
> >> I've definitely seen cases where window managers will try to be clever
> >> in response to a hotplug, and clobber the user's current configuration.
> >> If the TILE property conveyed how some set of monitors was supposed
> >> to be grouped, that would hopefully give window managers additional
> >> information, such that they would know to keep that group intact.
> >
> > Well, imnsho gnome display control center is a bit too opiniated about
> > automatic modeset changes. If their assumption is that they always know
> > perfectly what the user wants upon hotplug I really don't want to work
> > around this in the kernel. Since for everything else than a laptop +
> > beamer gnome panel always pisses me off ;-)
> >
> > I think gnome should just ask the user what it wants if there's more than
> > 2 physical displays (treating a tiled 4k screen as one ofc), since there's
> > really no way at all to tell.
>
> Well its not just a GNOME problem either, once things like SDL respect
> tIle properrty,
> we can create arbitary tile walls that the whole stack will respect,
> instead of hacks
> like fake xinerama.
Hm yeah if we want tile walls als logical displays for full-screening and
all that then this makes indeed sense. I didn't really consider that part,
was probably thrown off by Andy's comments that some tile walls aren't
pixel aligned which would look funky for full-screen apps I guess.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
[not found] ` <CAPM=9tzCLM2eV2Gre_52AUcdSa0z_qqYFppfGvz75e5o9eUwFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-14 11:40 ` Thierry Reding
2014-10-22 6:34 ` Andy Ritger
@ 2014-12-03 0:01 ` Aaron Plattner
[not found] ` <547E52BC.6090905-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2 siblings, 1 reply; 15+ messages in thread
From: Aaron Plattner @ 2014-12-03 0:01 UTC (permalink / raw)
To: Dave Airlie, dri-devel, X.Org Devel List
On 10/13/2014 08:23 PM, Dave Airlie wrote:
> Hi,
>
> So I've been hacking on mutter and the gnome pieces for tiling, and
> I've at least fixed mutter locally so maximise windows works and the
> heads are in the right order.
>
> Now I've strung all the pieces together using a single KMS property
> that X.org propogates, and mutter picks up and propagates over dbus as
> well,
>
> Currently I've ascii encoded the property into a blob,
>
> <ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
>
> I'm thinking of dropping the version field and just exposing TILE2
> property if we need it later to add more values,
Nifty. Is there a randrproto.txt spec for this planned?
> The other fields:
> tileid: a group id assigned by the kernel to all tiles in the same
What format does this ID need to be in? It looks like monitors are
identified by (vendor id, product id, serial number) tuples in the
DisplayID extension block so it would make sense to just concatenate
that into one giant number as the tileid. Having to centrally manage
these (in the kernel??) seems like overkill.
> group - unique per group
> flags: bit 0 : single monitor enclosure
> maxhtiles: total number of horiz tiles
> maxvtiles: total number of vert tiles
> h_tile_loc: horiz location of this output in tile group
> v_tile_loc: vert location of this output in tile group
> tile_w: width of this tile
> tile_h: height of this tile.
>
> Now we extract all of these from the DisplayID v1.3 block, and I'm
> wondering if maybe I shouldn't just export the whole DisplayID tiling
> info block instead, it however encodes a few other pieces of
> information, including bezel info, and some flags specifying behaviour
> in some cases.
I don't know whether the other flags would be useful, but one important
one is the "native resolution" field. At least one monitor I've seen
fails to work if you drive the normal EDID "preferred" timings on both
tiles.
> The former could be more suitable for cases where DisplayID isn't
> available (Dual DSI panels?) but I'm worried abuot exposing too little
> at this point making TILE useless when the next monitor comes out.
>
> I'm not sure any part of the stack should be extracting things and
> splitting them out, I'd like to just give the same tile property all
> the way through.
>
> Dave.
> _______________________________________________
> xorg-devel@lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
--
Aaron
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
[not found] ` <547E52BC.6090905-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
@ 2014-12-03 3:04 ` Dave Airlie
[not found] ` <CAPM=9txM15Fiz75UMUkK=XvoGAU4+Ya=t6P3msOzstMxF8bM2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 15+ messages in thread
From: Dave Airlie @ 2014-12-03 3:04 UTC (permalink / raw)
To: Aaron Plattner; +Cc: X.Org Devel List, dri-devel
On 3 December 2014 at 10:01, Aaron Plattner <aplattner@nvidia.com> wrote:
> On 10/13/2014 08:23 PM, Dave Airlie wrote:
>>
>> Hi,
>>
>> So I've been hacking on mutter and the gnome pieces for tiling, and
>> I've at least fixed mutter locally so maximise windows works and the
>> heads are in the right order.
>>
>> Now I've strung all the pieces together using a single KMS property
>> that X.org propogates, and mutter picks up and propagates over dbus as
>> well,
>>
>> Currently I've ascii encoded the property into a blob,
>>
>>
>> <ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
>>
>> I'm thinking of dropping the version field and just exposing TILE2
>> property if we need it later to add more values,
>
>
> Nifty. Is there a randrproto.txt spec for this planned?
>
Well for KMS its a kernel property and is documented there,
I suppose randrproto should also contain the info.
>
> What format does this ID need to be in? It looks like monitors are
> identified by (vendor id, product id, serial number) tuples in the DisplayID
> extension block so it would make sense to just concatenate that into one
> giant number as the tileid. Having to centrally manage these (in the
> kernel??) seems like overkill.
I don't mind, but central management is what we've done, it wasn't a lot
of work, you could munge the vendor/product/serial, but maybe
DisplayId won't be the only game in town in the future and I'd hate
to tie things to it.
>> group - unique per group
>> flags: bit 0 : single monitor enclosure
>> maxhtiles: total number of horiz tiles
>> maxvtiles: total number of vert tiles
>> h_tile_loc: horiz location of this output in tile group
>> v_tile_loc: vert location of this output in tile group
>> tile_w: width of this tile
>> tile_h: height of this tile.
>>
>> Now we extract all of these from the DisplayID v1.3 block, and I'm
>> wondering if maybe I shouldn't just export the whole DisplayID tiling
>> info block instead, it however encodes a few other pieces of
>> information, including bezel info, and some flags specifying behaviour
>> in some cases.
>
>
> I don't know whether the other flags would be useful, but one important one
> is the "native resolution" field. At least one monitor I've seen fails to
> work if you drive the normal EDID "preferred" timings on both tiles.
I think the last two fields are copied from that, the tile w/h, I can't see
any mention of a specific native res flag.
Dave.
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: tile property contents
[not found] ` <CAPM=9txM15Fiz75UMUkK=XvoGAU4+Ya=t6P3msOzstMxF8bM2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2014-12-03 15:41 ` Aaron Plattner
0 siblings, 0 replies; 15+ messages in thread
From: Aaron Plattner @ 2014-12-03 15:41 UTC (permalink / raw)
To: Dave Airlie; +Cc: X.Org Devel List, dri-devel
On 12/02/2014 07:04 PM, Dave Airlie wrote:
> On 3 December 2014 at 10:01, Aaron Plattner <aplattner@nvidia.com> wrote:
>> On 10/13/2014 08:23 PM, Dave Airlie wrote:
>>>
>>> Hi,
>>>
>>> So I've been hacking on mutter and the gnome pieces for tiling, and
>>> I've at least fixed mutter locally so maximise windows works and the
>>> heads are in the right order.
>>>
>>> Now I've strung all the pieces together using a single KMS property
>>> that X.org propogates, and mutter picks up and propagates over dbus as
>>> well,
>>>
>>> Currently I've ascii encoded the property into a blob,
>>>
>>>
>>> <ver>:<tileid>:<flags>:<maxhtiles>:<maxvtiles>:<h_tile_loc>:<v_tile_loc>:<tile_w>:<tile_h>
>>>
>>> I'm thinking of dropping the version field and just exposing TILE2
>>> property if we need it later to add more values,
>>
>>
>> Nifty. Is there a randrproto.txt spec for this planned?
>>
>
> Well for KMS its a kernel property and is documented there,
> I suppose randrproto should also contain the info.
>>
>> What format does this ID need to be in? It looks like monitors are
>> identified by (vendor id, product id, serial number) tuples in the DisplayID
>> extension block so it would make sense to just concatenate that into one
>> giant number as the tileid. Having to centrally manage these (in the
>> kernel??) seems like overkill.
>
> I don't mind, but central management is what we've done, it wasn't a lot
> of work, you could munge the vendor/product/serial, but maybe
> DisplayId won't be the only game in town in the future and I'd hate
> to tie things to it.
Alright. At least for now, we can just centrally manage group IDs in
our X driver until we move that stuff to the kernel.
>>> group - unique per group
>>> flags: bit 0 : single monitor enclosure
>>> maxhtiles: total number of horiz tiles
>>> maxvtiles: total number of vert tiles
>>> h_tile_loc: horiz location of this output in tile group
>>> v_tile_loc: vert location of this output in tile group
>>> tile_w: width of this tile
>>> tile_h: height of this tile.
>>>
>>> Now we extract all of these from the DisplayID v1.3 block, and I'm
>>> wondering if maybe I shouldn't just export the whole DisplayID tiling
>>> info block instead, it however encodes a few other pieces of
>>> information, including bezel info, and some flags specifying behaviour
>>> in some cases.
>>
>>
>> I don't know whether the other flags would be useful, but one important one
>> is the "native resolution" field. At least one monitor I've seen fails to
>> work if you drive the normal EDID "preferred" timings on both tiles.
>
> I think the last two fields are copied from that, the tile w/h, I can't see
> any mention of a specific native res flag.
Oh, got it. I was confused by this because our DisplayID parsing
library calls this field 'native_resolution'.
--
Aaron
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2014-12-03 15:41 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-14 3:23 tile property contents Dave Airlie
[not found] ` <CAPM=9tzCLM2eV2Gre_52AUcdSa0z_qqYFppfGvz75e5o9eUwFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-14 11:40 ` Thierry Reding
2014-10-14 20:35 ` Dave Airlie
2014-10-15 8:29 ` Thierry Reding
2014-10-15 10:04 ` Daniel Stone
2014-10-15 11:07 ` Thierry Reding
2014-10-22 6:34 ` Andy Ritger
2014-10-22 21:20 ` Daniel Vetter
[not found] ` <CAKMK7uHE=cCfpZkSaCMmePF+M2uUGXVnY4wQ4qeEN43d8n2DGA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-22 23:03 ` Andy Ritger
2014-10-23 7:58 ` Daniel Vetter
[not found] ` <20141023075840.GZ26941-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2014-10-24 7:25 ` Dave Airlie
2014-10-24 7:41 ` Daniel Vetter
2014-12-03 0:01 ` Aaron Plattner
[not found] ` <547E52BC.6090905-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2014-12-03 3:04 ` Dave Airlie
[not found] ` <CAPM=9txM15Fiz75UMUkK=XvoGAU4+Ya=t6P3msOzstMxF8bM2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-03 15:41 ` Aaron Plattner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.