diff options
Diffstat (limited to 'displayconfig-TODO')
-rw-r--r-- | displayconfig-TODO | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/displayconfig-TODO b/displayconfig-TODO new file mode 100644 index 0000000..926f7d9 --- /dev/null +++ b/displayconfig-TODO @@ -0,0 +1,135 @@ +* How many cards do we have? autodetection? +* Is our card a dualhead card? +* How many monitors are connected? + +* difference between one and two card is different device sections +* twinview has one device, one screen, one serverlayout +* xinerama has two devices, two screens, two monitors + +twinview <> xinerama: + all sections double + +one or two cards: + different device sections + +one or two monitors + ?? one or two cards + ?? twinview or xinerama (driver? different resolutions?) + + +class XSetup(Object): + Screens[] getScreens() + bool maySetDualhead() + getUseDualhead() + setUseDualhead(bool) + (xoff,yoff) getDualheadPosition() # offset from screen 1 top left corner. + setDualheadOrientation(xoff,yoff) + + bool is3DAccelerated() + + GFXCard[] getGFXCards() + + +class Screen(Object): + maySetResolution() + Resolution[] getAvailableResolutions() + getResolution() + setResolution(Resolution) + + maySetRefresh() + int getRefreshRate() + setRefreshRate(int) + + maySetRotation() + getRotation() + getAvailableRotations() + setRotation() + + bool isAvailableMirrorHorizontal() + getMirrorHorizontal() + setMirrorHorizontal() + bool isAvailableMirrorVertical() + getMirrorVertical() + setMirrorVertical() + +class Resolution(Object): + int getWidth() + int getHeight() + int[] getRefreshRates(): + + + +* What is the current setup? (Xinerama? Singlehead? Twinview?) + +- Warning: Xinerama vs. DRI + * "unlinking" the sliders will yield a warning "Using different + resolutions on the screens will disable 3D hardware acceleration on + the second head", which is a Xinerama deficiency). + + Note: Probably only Ati and nvidia do support mergedFB properly, other + drivers might lose xinerama features like placement and maximize + +- Drag and drop widget + * The fun part: implementing a Drag and Drop widget where the (resizing) + screens can be dragged into their respective relative position, + "snapping" in the more obvious ones, i.e. plain "left of" and "right + of", "above" and "under" (without offset). + + +- displayconfig.MonitorPreview: + Singleheadpreview: Monitor keeps size + DualheadPreview: like now, monitor resizes to show relative screen size + +Displayconfig; Notes abstractielaag +------------------------------------- +* een XSetup heeft N gfxcards. +* een GfxCard heeft N Monitors +* XSetup is een container voor alle objecten uit de abstractielaag. +* XSetup.addMonitor(monitor,gfxcard) waarbij gfxcard al in XSetup zit en een + referentie naar de kaart vormt waarop monitor is aangesloten. +* Een Adaptor heeft een 1:1 relatie met een monitor, en is 'onderdeel' van + een "Screen" (in de zin van Screen section uit xorg.conf) +* Controls zoals resize en de rotatie / mirroring widgets manipuleren een + Adaptor, die intern de Screen manipuleert +* Singlehead resolutie verandert via xrandr en slaat settings op via + displayconfig-restore.py +* Dualhead resolutie aanpassen pakt intern een passende metamode (bij twinview) + en checkt of alle zinvolle metamodes beschikbaar zijn, anders wordt de user + gewaarschuwd dat dit eerst moet gebeuren. +* Adaptor in dualhead / twinview modus worden dus naar een screen vertaald + metamodes heeft. +* Screen moet dan nog support voor metamodes krijgen. + + + +displayconfig: +=============== +* Current resolution doesn't get recognized if current != highest resolution +* new tab display powermanagement, just like the existing tab, we need to be + able to at least replace existing functionality + + +New Widgets: +------------- +* DualheadPreview +* RadioButtons instead of dropdown for Positioning + +* Detect if we're already running on dualhead, (en|dis)able widgets accordingly +* Nvidia MergedFB + - Make preview of dualhead more clear (only xinerama or also mergedFB?) + - Generate list of Metamodes from resolutions available + - write dualhead settings to xorg.conf +* Compare dualhead with different drivers WRT xorg.conf + - generic Xinerama (Matrox, others?) + - dualhead for fglrx, SiS ... + - MergedFB as special case for nvidia (sis?) +* Preview should be rotatable (and|or) resizable (and|or) DualHeadpreview? +* Add missing elements to DualHeadTab + - [ ] Use MergedFB (binds two resolution sliders) + - label with warning "You can only use DRI on one head with different resolutions blahblah" +FIXME: enabling Dualhead should: + - Update resolutions with "metamodes" + - disable Rotation/mirroring stuff + - Add ServerLayout to xorg.conf + - Add second Screen to xorg.conf + - Alternatively (if both resolutions are the same enable MergedFB |