Re: output setup and configuration, what lives where?



On Fri, 2014-10-17 at 16:30 +1000, Dave Airlie wrote:
On 16 October 2014 10:41, Dave Airlie <airlied gmail com> wrote:
On 13 October 2014 17:34, drago01 <drago01 gmail com> wrote:
On Mon, Oct 13, 2014 at 8:53 AM, Dave Airlie <airlied gmail com> wrote:
Hey,

So I've been looking at 4K monitors that require DP MST and present as
two screens with some tiling info in the EDID extensions, and I've
been taking a look at how to integrate these with gnome.

Just to clear things up, I tried to hide these in the kernel, the side
effects were too messy to cover up, and stuff broke in wierd ways, so
I've decided to follow Windows and push this up a few levels.

So I've built a kernel property to describe tiles, and passed it
through X to test, and hacked on mutter 3.10, so

a) windows maximize properly
b) initial mutter configuration picks a sane config.

(cgit.freedesktop.org/~airlied/mutter - will eventually have it).

Now the question is what else needs changing for this, I know I should
probably start to target master or least F21 versions and I'll
probably get to that,

I'm getting the feeling at least,
gnome-desktop
and
gnome-control-center

will need work, control-center will probably need design work so the
UI doesn't suck for this use-case.

I'm just not sure how things like monitors.xml fit in, who writes this
file, who reads it,

The file is handled by mutter i.e it reads and writes it see:
https://git.gnome.org/browse/mutter/tree/src/backends/meta-monitor-config.c
(or https://git.gnome.org/browse/mutter/tree/src/core/monitor-config.c?h=gnome-3-10
in 3.10).

is there
some stuff talking over dbus here,

Mutter exposes the settings over dbus and works as an abstraction
layer over xrandr / kms (on wayland).

does gnome-session-daemon get
involved anywhere etc, so pointers/answers etc all appreciated.

gnome-desktop now uses the dbus api exposed by mutter instead of
xrandr directly. gnome-settings-daemon just uses gnome-desktop

So you have to

1) Update mutter to expose it via dbus
2) Extend GnomeRR in gnome-desktop to expose it to clients like g-s-d
and control-center
3) Add UI for control-center that actually uses it (should talk to
designers about it).

Okay I've taken a first go at getting mutter/g-d/g-c-c working,

http://cgit.freedesktop.org/~airlied/gnome-desktop/log/?h=tile-monitor-1
http://cgit.freedesktop.org/~airlied/gnome-control-center/log/?h=tile-monitor-1
http://cgit.freedesktop.org/~airlied/mutter/log/?h=tile-monitor-1

Okay I did my second investigation, same mutter patches,

http://cgit.freedesktop.org/~airlied/gnome-desktop/log/?h=tile-monitor-2
http://cgit.freedesktop.org/~airlied/gnome-control-center/log/?h=tile-monitor-2

This just adds a new API to gnome-desktop to see if an output is a primary
tile, and uses it in gnome-control-center to not display non-primary tiles.

Then gnome-desktop hides the non-primary tile manipulation inside itself.

This seems much cleaner, and might be more supportable long term.

This is certainly pretty good. A couple of comments:
- Please attach those bugs to bugzilla, you can use git-bz[1] for that:
  git bz file gnome-desktop/general HEAD~3
  for example.
- in 
http://cgit.freedesktop.org/~airlied/gnome-desktop/commit/?h=tile-monitor-2&id=46164d58a618f697cbf140515ecc5560d9cfccad
 :
  space before brackets
  the GnomeRRTile definition can probably be typedef'ed straight away
  the GnomeRRMode changes need to use the same spacing as above (tab vs. space)
  one line conditionals don't use braces
  line feed in gnome-rr.h
  gnome_rr_output_info_is_primary_tile() is probably missing API docs
- in 
http://cgit.freedesktop.org/~airlied/gnome-control-center/commit/?h=tile-monitor-2&id=a31a75b933f94af229a80bedf1ff718fbb508e0b
 :
  split that code in multiple patches (at the very least moving the function should be separate from adding 
new features to it)
- in 
http://cgit.freedesktop.org/~airlied/gnome-control-center/commit/?h=tile-monitor-2&id=e50de3058add7f123c1f734870626e22f4ab6019
 :
  the subject line is not correct, gpointer being cast to something else won't generate warnings (use already 
assigned variable is probably more accurate)

The last patch to 

I still can't see how I can hide it in mutter!.

I wouldn't know either, and I was hoping that Jasper or Giovanni would
explain how to do this.

Cheers

[1]: http://git.fishsoup.net/cgit/git-bz/plain/git-bz



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]