Bug 5190

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>
Severity: enhancement    
Priority: high CC: alexdeucher, Bernd.Bartmann, bjohnson, bojan, drewelmore, gajownik, lance, M.Schouten, rodrigo, sebastian, wguy4biz
Version: unspecified   
Hardware: All   
OS: All   
Whiteboard:
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 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.
Comment 13 Aaron Plattner 2007-05-30 15:35:34 UTC
*** Bug 11107 has been marked as a duplicate of this bug. ***

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.