summaryrefslogtreecommitdiffstats
path: root/displayconfig-TODO
diff options
context:
space:
mode:
Diffstat (limited to 'displayconfig-TODO')
-rw-r--r--displayconfig-TODO135
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