|Summary:||Support Multi-Head in "nv" driver.|
|Product:||xorg||Reporter:||Terje Bless <link>|
|Component:||Driver/nVidia (open)||Assignee:||Xorg Project Team <xorg-team>|
|Status:||RESOLVED WONTFIX||QA Contact:||Xorg Project Team <xorg-team>|
|Priority:||high||CC:||alexdeucher, Bernd.Bartmann, bjohnson, bojan, drewelmore, gajownik, lance, M.Schouten, rodrigo, sebastian, wguy4biz|
|i915 platform:||i915 features:|
Description Terje Bless 2005-11-29 12:42:10 UTC
The "nv" driver should support Multi-Head operation. Using a Quadro NVS 280, trial and error suggests the "nv" driver doesn't support using both heads at once and Google and Bugzilladiving appear to agree. Some incompetent groping about the source suggests it does know how to work with both heads, just not both at the same time; which I take to mean that it's possible (if not necessarily practical) to implement. In my case dual-head on this card is what's keeping me on the proprietary driver, so a way out would be very welcome. :-)
Comment 1 Alex Deucher 2005-12-29 16:52:18 UTC
the xorg nv driver does not currently support dualhead. IIRC, the xorg driver knows enough to get single head working correctly when the crtcs are mapped oddly, but that's it. the open source beos nv driver supports it however. It should be possible to port the needed changes over to get the xorg nv driver to support it. Patches welcome :)
Comment 2 Bojan Smojver 2006-01-05 11:04:41 UTC
Apparently, this document: http://xorg.freedesktop.org/wiki/DriverDevelopment claims that one can simply do what Chips 69030 driver does (the code doesn't look complicated at all) and dual head with the same card should be possible. The only problems is: how does one determine if one card actually has two heads (in Chips 69030 case that's easy - it is that particular card)? Is that what pNv->twoHeads flag is all about (I don't think so, but I have no idea what I'm talking about anyway :-)? Or does it have to do with CRTCs? Any hints welcome...
Comment 3 Alex Deucher 2006-01-05 16:09:09 UTC
(In reply to comment #2) > Apparently, this document: > > http://xorg.freedesktop.org/wiki/DriverDevelopment > > claims that one can simply do what Chips 69030 driver does (the code doesn't > look complicated at all) and dual head with the same card should be possible. > The only problems is: how does one determine if one card actually has two heads > (in Chips 69030 case that's easy - it is that particular card)? Is that what > pNv->twoHeads flag is all about (I don't think so, but I have no idea what I'm > talking about anyway :-)? Or does it have to do with CRTCs? > > Any hints welcome... that's basically correct as far as the non-chip specific code is concerned, but that's the easy part. The hard part is figuring out how to program the two crtcs and map the outputs, then divide it up such that the two instances of the driver will work together properly (e.g. regsiters that have to be written in a particular order, registers that are used by both crtcs, etc.). I find it is often easier to get one instance of the driver to set up both crtcs, then work on dividing it up to work with multiple instances. As far as detecting whether a chip is capable of multiple heads or not, you really have to know before hand which chips support dualhead and which do not. In the case of the chips driver only the 69030 chip supports dualhead, for r128 chips only the m3 and m4 variants support dualhead. I suspect the twoHeads flag does exactly that. Since the driver doesn't support dualhead, I think the flag is used to make sure the crtc in use is mapped to the correct output.
Comment 4 Bojan Smojver 2006-01-05 16:59:14 UTC
Thanks for the info Alex. It does appear to be much more complicated then I anticipated... Nevertheless (and although I never tried any X programming) I'll try to find something that relates to this issue in BE sources (if you know which files to pick, please feel free to point them out). Also, if there is NVidia folks out there that would like to teach us how to/do this in the open source driver, now is the time ;-)
Comment 5 Bojan Smojver 2006-01-06 10:46:21 UTC
As far as I can see, BE source for NVidia stuff should be here: http://svn.berlios.de/viewcvs/haiku/haiku/trunk/src/add-ons/accelerants/nvidia/ http://svn.berlios.de/viewcvs/haiku/haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/
Comment 6 Alex Deucher 2006-01-07 07:12:34 UTC
(In reply to comment #5) > As far as I can see, BE source for NVidia stuff should be here: > > http://svn.berlios.de/viewcvs/haiku/haiku/trunk/src/add-ons/accelerants/nvidia/ > http://svn.berlios.de/viewcvs/haiku/haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/ more info: http://www.bebits.com/app/3636 http://www.bebits.com/app/1401 beos driver also supports 3D: http://www.bebits.com/app/4129
Comment 7 Adam Jackson 2006-01-21 06:17:40 UTC
*** Bug 5672 has been marked as a duplicate of this bug. ***
Comment 8 Adam Jackson 2006-01-21 06:28:01 UTC
*** Bug 3174 has been marked as a duplicate of this bug. ***
Comment 9 Ian Malone 2006-12-14 06:50:49 UTC
Any chance that even if dual-head support is a while off, the driver could run in single head mode rather than producing a corrupted display? Reasons for this: 1. More obvious troubleshooting; with two displays plugged in and only one working it is more apparent that the problem is dual-head related. 2. It seems that even if the NVidia driver is used, if a graphical boot sequence is used e.g. RedHat's rhgb, the nv driver corruption will affect the system even after the nvidia module has been loaded (RedHat bugzilla 218416 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218416).
Comment 10 Daniel Stone 2007-02-27 01:28:58 UTC
Sorry about the phenomenal bug spam, guys. Adding xorg-team@ to the QA contact so bugs don't get lost in future.
Comment 11 Aaron Plattner 2007-03-09 13:07:17 UTC
*** Bug 8458 has been marked as a duplicate of this bug. ***
Comment 12 Aaron Plattner 2007-03-09 13:10:26 UTC
The nv driver will support dual head via RandR 1.2 eventually for G80-based cards, but we can't implement it for earlier cards. Sorry! Marking WONTFIX.