Go Back   nV News Forums > Linux Support Forums > NVIDIA Linux

Newegg Daily Deals

Reply
 
Thread Tools
Old 01-14-13, 01:23 PM   #1
jago25_98
Registered User
 
Join Date: Dec 2003
Location: uk
Posts: 13
Default 2x GPU, 2x screens, DualPort, nvidia-settings crash

AFAIK the problem we are having here is that we are trying to use 2xQuatro 600 cards when most people use just one and connect 2 monitors to that.

I wondered if we can't get this dualport stuff to work whether we could forgo 3D and fallback to Xinerama and "nv" or something like that, at least just for testing.

Is there an example xorg.conf anywhere because the system-display-config seems to use a bad refresh rate and the second monitor still doesn't turn on.

Backtrace for "nvidia-settings" (GUI) below too:

Code:
# nvidia-settings
Locking assertion failure. Backtrace:
#0 /usr/lib64/libxcb-xlib.so.0 [0x332580090c]
#1 /usr/lib64/libxcb-xlib.so.0(xcb_xlib_unlock+0x24) [0x3325800a14]
#2 /usr/lib64/libX11.so.6 [0x3325c4a0f0]
#3 /usr/lib64/libXrandr.so.2(XRRQueryVersion+0x69) [0x33268019d9]
#4 nvidia-settings(NvCtrlInitXrandrAttributes+0xd2) [0x41f5b2]
#5 nvidia-settings(NvCtrlAttributeInit+0xb8) [0x41c518]
#6 nvidia-settings(layout_load_from_server+0x37e) [0x46c83e]
#7 nvidia-settings(ctk_display_config_new+0x12c) [0x46024c]
#8 nvidia-settings(ctk_window_new+0x1a13) [0x4390c3]
#9 nvidia-settings(ctk_main+0x48) [0x4230e8]
#10 nvidia-settings(main+0x131) [0x416521]
#11 /lib64/libc.so.6(__libc_start_main+0xf4) [0x3a19e1d974]
#12 nvidia-settings [0x4140ca]
nvidia-settings: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.
Abort
A copy of an email I sent to a friend regardng the problem (turns out they went to ati because of this sort of thing and can't help):

Quote:
I have a friend at work here with a RedHat Enterprise 5 box at work. It's on kernel 2.6.18-128.e15 SMP, we think 12 cores. This has to be up your street!!

Looking into it it seems to be a nvidia thing though.

They have the nvidia rpm installed and glxgears shows acceleration is working but no second monitor. On my laptop it's a simple case of using xrandr, or a GUI that controls this to setup the layout.

However,

Unfortunately nvidia doesn't support xrandr and you have to use nvidia-settings.
Unfortunately nvidia-settings crashes with a stacktrace (I think) when trying to use the GUI to arrange the screen layout.

I edited the xorg to swap "nvidia" for "nv" but then X didn't load at all.

So I thought I'd look into using .nvidia-settings-rc to setup the screen layout but I can see no example of this file in our setup which uses dual GPUs. We have dual GPUs with a screen connected to each instead of than a single GPU with both screens connected to that via a Y-cable.

So perhaps I should use Xinerama instead of nvidia's "DualPort"... or switch from the "nvidia" to the "nv" driver? -because I have a hunch that although they have beefy GPUs in there, they don't need them for the processing work.

I was thinking maybe we could bodge it and run two X servers and then export some windows from one to another.. switch... ah pants it's a messy idea! Especially as the main program being used is java based, connecting to some sort of daemon process... so I don't know how we would export a single window to a different x display anyway.

What should be my next move?

I've attached the xorg.conf it has... it's pretty messy and no display section for a start. However, I read that nvidia dualport and deal with multiple GPUs.. but that post was back in 2009 and maybe that's changed now.

xorg.conf.bak = the original config file it was using
xorg.bak.dualmonitorexample = an example I've tweaked from online that doesn't work

Also I notice in the nvidia readme for nvidia-settings:

TODO

There are many things still to be added to nvidia-settings. Some of
which include:

- configurability of TwinView (NVIDIA is planning to implement this)

- configurability of multiple X screens (NVIDIA is planning to
implement this)


Any ideas?
xorg.conf that doesn't work:

Code:
Section "ServerLayout"
Identifier     "Layout0"
#Screen      0  "Screen0" RightOf "Screen1" # put it on the RIGHT (other options are Below, Above, LeftOf, RightOf;
# alternatively, you can put an absolute, pixel X and Y offset (so RightOf
# would be 1680 0
Screen      0  "Screen0" 1680 0 # NOTE: Screen 0 MUST be defined BEFORE Screen 1!!!
Screen      1  "Screen1" 0 333 # put this screen on the top left, but adjust it down a little bit to match the portrait screen on the right
InputDevice    "Keyboard0" "CoreKeyboard"
InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "Module"
Load           "dbe"
Load           "extmod"
Load           "type1"
Load           "freetype"
Load           "glx"
EndSection

Section "ServerFlags"
Option         "AutoAddDevices" "False"
Option         "Xinerama" "1"
EndSection

Section "InputDevice"

# generated from default
Identifier     "Mouse0"
Driver         "mouse"
Option         "Protocol" "auto"
Option         "Device" "/dev/psaux"
Option         "Emulate3Buttons" "no"
#Option         "ZAxisMapping" "4 5" # for the Logitech MX 400
EndSection

Section "InputDevice"
Identifier     "Keyboard0"
Driver         "kbd"
Option         "XkbModel" "pc105"
Option         "XkbLayout" "us,fr,de"
Option         "XkbOptions" "grp:shifts_toggle"
EndSection

Section "Monitor"
Identifier     "Monitor0"
VendorName     "Unknown"
ModelName      "Acer X222W"
HorizSync       31.0 - 81.0
VertRefresh     56.0 - 75.0
Option         "DPMS"
Option         "Rotate" "Right" # for portrait mode
EndSection

Section "Monitor"
Identifier     "Monitor1"
VendorName     "Unknown"
ModelName      "Acer X222W"
HorizSync       31.0 - 81.0
VertRefresh     56.0 - 75.0
Option         "DPMS"
EndSection

Section "Device"
Identifier     "Device0"
Driver         "nvidia"
VendorName     "NVIDIA Corporation"
BoardName      "GeForce 8800 GTS"
Option         "RandRRotation" "on"
BusID          "PCI:1:0:0"
Screen          0 # i.e., the monitor on the RIGHT (physically)
EndSection

Section "Device"
Identifier     "Device1"
Driver         "nvidia"
VendorName     "NVIDIA Corporation"
BoardName      "GeForce 8800 GTS"
BusID          "PCI:1:0:0"
Screen          1 # the monitor on the LEFT (physically)
EndSection

Section "Screen"

Identifier     "Screen0"
Device         "Device0"
Monitor        "Monitor0"
DefaultDepth    24
Option         "metamodes" "DFP-0: 1680x1050 +0+0"
SubSection     "Display"
Depth       24
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "Monitor1"
DefaultDepth    24
Option         "metamodes" "DFP-1: 1680x1050 +0+0"
SubSection     "Display"
Depth       24
EndSubSection
EndSection
xorg that also doesn't seem to work:
Code:
Section "ServerLayout"
Identifier     "Layout0"
#Screen      0  "Screen0" RightOf "Screen1" # put it on the RIGHT (other options are Below, Above, LeftOf, RightOf;
# alternatively, you can put an absolute, pixel X and Y offset (so RightOf
# would be 1680 0
Screen      0  "Screen0" 1680 0 # NOTE: Screen 0 MUST be defined BEFORE Screen 1!!!
Screen      1  "Screen1" 0 333 # put this screen on the top left, but adjust it down a little bit to match the portrait screen on the right
InputDevice    "Keyboard0" "CoreKeyboard"
InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "Module"
Load           "dbe"
Load           "extmod"
Load           "type1"
Load           "freetype"
Load           "glx"
EndSection

Section "ServerFlags"
Option         "AutoAddDevices" "False"
Option         "Xinerama" "1"
EndSection

Section "InputDevice"

# generated from default
Identifier     "Mouse0"
Driver         "mouse"
Option         "Protocol" "auto"
Option         "Device" "/dev/psaux"
Option         "Emulate3Buttons" "no"
#Option         "ZAxisMapping" "4 5" # for the Logitech MX 400
EndSection

Section "InputDevice"
Identifier     "Keyboard0"
Driver         "kbd"
Option         "XkbModel" "pc105"
Option         "XkbLayout" "us,fr,de"
Option         "XkbOptions" "grp:shifts_toggle"
EndSection

Section "Monitor"
Identifier     "Monitor0"
VendorName     "Unknown"
ModelName      "Acer X222W"
HorizSync       31.0 - 81.0
VertRefresh     56.0 - 75.0
Option         "DPMS"
Option         "Rotate" "Right" # for portrait mode
EndSection

Section "Monitor"
Identifier     "Monitor1"
VendorName     "Unknown"
ModelName      "Acer X222W"
HorizSync       31.0 - 81.0
VertRefresh     56.0 - 75.0
Option         "DPMS"
EndSection

Section "Device"
Identifier     "Device0"
Driver         "nvidia"
VendorName     "NVIDIA Corporation"
BoardName      "GeForce 8800 GTS"
Option         "RandRRotation" "on"
BusID          "PCI:1:0:0"
Screen          0 # i.e., the monitor on the RIGHT (physically)
EndSection

Section "Device"
Identifier     "Device1"
Driver         "nvidia"
VendorName     "NVIDIA Corporation"
BoardName      "GeForce 8800 GTS"
BusID          "PCI:1:0:0"
Screen          1 # the monitor on the LEFT (physically)
EndSection

Section "Screen"

Identifier     "Screen0"
Device         "Device0"
Monitor        "Monitor0"
DefaultDepth    24
Option         "metamodes" "DFP-0: 1680x1050 +0+0"
SubSection     "Display"
Depth       24
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "Monitor1"
DefaultDepth    24
Option         "metamodes" "DFP-1: 1680x1050 +0+0"
SubSection     "Display"
Depth       24
EndSubSection
EndSection
And the xorg I found on the machine (bit odd this one.... no device section)

Code:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 256.53  (buildmeister@builder97.nvidia.com)  Fri Aug 27 20:55:22 PDT 2010

# Xorg configuration created by system-config-display
#Section "Device"
#	Identifier  "Videocard1"
#	Driver      "nv"
#	VendorName  "Videocard Vendor"
#	BoardName   "NVIDIA Quadro NVS 285"
#	BusID       "PCI:7:0:0"
#	Screen      1
#EndSection

Section "ServerLayout"
    Identifier     "Multihead layout"
    Screen      0  "Screen0" LeftOf "Screen1"
    Screen      1  "Screen1" 0 0
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
    Option         "Xinerama" "off"
    Option         "Clone" "on"
EndSection

Section "Files"

# RgbPath is the location of the RGB database.  Note, this is the name of the 
# file minus the extension (like ".txt" or ".db").  There is normally
# no need to change the default.
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
#	RgbPath      "/usr/X11R6/lib/X11/rgb"
    FontPath        "unix/:7100"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "fbdevhw"
    Load           "glx"
    Load           "record"
    Load           "freetype"
    Load           "type1"
EndSection

Section "InputDevice"

# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
#	Option	"Xleds"		"1 2 3"
# To disable the XKEYBOARD extension, uncomment XkbDisable.
#	Option	"XkbDisable"
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults).  For example, for a non-U.S.
# keyboard, you will probably want to use:
#	Option	"XkbModel"	"pc102"
# If you have a US Microsoft Natural keyboard, you can use:
#	Option	"XkbModel"	"microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
#	Option	"XkbLayout"	"de"
# or:
#	Option	"XkbLayout"	"de"
#	Option	"XkbVariant"	"nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
#	Option	"XkbOptions"	"ctrl:swapcaps"
# Or if you just want both to be control, use:
#	Option	"XkbOptions"	"ctrl:nocaps"
#
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbModel" "pc105"
    Option         "XkbLayout" "us"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "IMPS/2"
    Option         "Device" "/dev/input/mice"
    Option         "ZAxisMapping" "4 5"
    Option         "Emulate3Buttons" "yes"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Monitor Vendor"
    ModelName      "LCD Panel 1280x1024"
    HorizSync       31.5 - 67.0
    VertRefresh     50.0 - 75.0
    Option         "dpms"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Monitor Vendor"
    ModelName      "LCD Panel 1280x1024"
    HorizSync       31.5 - 67.0
    VertRefresh     50.0 - 75.0
    Option         "dpms"
EndSection

Section "Device"
    Identifier     "Videocard0"
    Driver         "nvidia"
    VendorName     "Videocard vendor"
    BoardName      "NVIDIA Quadro NVS 285"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    16
    Option         "Twinview" "true"
    Option         "SecondMonitorHorizSync" "31-81"
    Option         "SecondMonitorVertRefresh" "55-85"
    Option         "MetaModes" "1280x1024,1280x1024;1024x768,1024x768"
    Option         "ConnectedMonitor" "FPD,FPD"
    SubSection     "Display"
        Viewport    0 0
        Depth       16
        Modes      "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Videocard0"
    Monitor        "Monitor1"
    DefaultDepth    16
    SubSection     "Display"
        Viewport    0 0
        Depth       16
        Modes      "1280x1024"
    EndSubSection
EndSection
Other things I've tried/looked at:
Code:
Example xorg with laptop monitor and external display attached.

nvidia-settings via commandline is below:


As an example, these two commands are equivalent:

    xrandr --output DVI-I-2 --mode 1280x1024 --pos 0x0 --output
DVI-I-3 --mode 1920x1200 --pos 1280x0

    nvidia-settings --assign CurrentMetaMode= "DVI-I-2: 1280x1024 +0+0, DVI-I-3: 1920x1200 +1280+0"

and here's the section of the manual that is relevent:

Chapter 13. Configuring TwinView

TwinView is a mode of operation where two display devices (digital flat panels, CRTs, and TVs) can display the contents of a single X screen in any arbitrary configuration. This method of multiple monitor use has several distinct advantages over other techniques (such as Xinerama):

    A single X screen is used. The NVIDIA driver conceals all information about multiple display devices from the X server; as far as X is concerned, there is only one screen.

    Both display devices share one frame buffer. Thus, all the functionality present on a single display (e.g., accelerated OpenGL) is available with TwinView.

    No additional overhead is needed to emulate having a single desktop.

If you are interested in using each display device as a separate X screen, see Chapter 15, Configuring Multiple X Screens on One Card.
X Config TwinView Options

To enable TwinView, you must specify the following option in the Device section of your X Config file:

    Option "TwinView"

You may also use any of the following options, though they are not required:

    Option "MetaModes"                "<list of MetaModes>"

    Option "SecondMonitorHorizSync"   "<hsync range(s)>"
    Option "SecondMonitorVertRefresh" "<vrefresh range(s)>"

    Option "HorizSync"                "<hsync range(s)>"
    Option "VertRefresh"              "<vrefresh range(s)>"

    Option "TwinViewOrientation"      "<relationship of head 1 to head 0>"
    Option "ConnectedMonitor"         "<list of connected display devices>"

See detailed descriptions of each option below.

Alternatively, you can enable TwinView by running

    nvidia-xconfig --twinview

and restarting your X server. Or, you can configure TwinView dynamically in the "Display Configuration" page in nvidia-settings.
Detailed Description of Options

TwinView

    This option is required to enable TwinView; without it, all other TwinView related options are ignored.
SecondMonitorHorizSync, SecondMonitorVertRefresh,

    You specify the constraints of the second monitor through these options. The values given should follow the same convention as the "HorizSync" and "VertRefresh" entries in the Monitor section. As the XF86Config man page explains it: the ranges may be a comma separated list of distinct values and/or ranges of values, where a range is given by two distinct values separated by a dash. The HorizSync is given in kHz, and the VertRefresh is given in Hz.

    These options are normally not needed: by default, the NVIDIA X driver retrieves the valid frequency ranges from the display device's EDID (see Appendix B, X Config Options for a description of the "UseEdidFreqs" option). The SecondMonitor options will override any frequency ranges retrieved from the EDID.
HorizSync, VertRefresh,

    Which display device is "first" and which is "second" is often unclear. For this reason, you may use these options instead of the SecondMonitor versions. With these options, you can specify a semicolon-separated list of frequency ranges, each optionally prepended with a display device name. For example:

        Option "HorizSync"   "CRT-0: 50-110;  DFP-0: 40-70"
        Option "VertRefresh" "CRT-0: 60-120;  DFP-0: 60"

    See Appendix C, Display Device Names on Display Device Names for more information.

    These options are normally not needed: by default, the NVIDIA X driver retrieves the valid frequency ranges from the display device's EDID (see Appendix B, X Config Options for a description of the "UseEdidFreqs" option). The "HorizSync" and "VertRefresh" options override any frequency ranges retrieved from the EDID or any frequency ranges specified with the "SecondMonitorHorizSync" and "SecondMonitorVertRefresh" options.
MetaModes

    MetaModes are "containers" that store information about what mode should be used on each display device at any given time. Even if only one display device is actively in use, the NVIDIA X driver always uses a MetaMode to encapsulate the mode information per display device, so that it can support dynamically enabling TwinView.

    Multiple MetaModes list the combinations of modes and the sequence in which they should be used. When the NVIDIA driver tells X what modes are available, it is really the minimal bounding box of the MetaMode that is communicated to X, while the "per display device" mode is kept internal to the NVIDIA driver. In MetaMode syntax, modes within a MetaMode are comma separated, and multiple MetaModes are separated by semicolons. For example:

        "<mode name 0>, <mode name 1>; <mode name 2>, <mode name 3>"

    Where <mode name 0> is the name of the mode to be used on display device 0 concurrently with <mode name 1> used on display device 1. A mode switch will then cause <mode name 2> to be used on display device 0 and <mode name 3> to be used on display device 1. Here is an example MetaMode:

        Option "MetaModes" "1280x1024,1280x1024; 1024x768,1024x768"

    If you want a display device to not be active for a certain MetaMode, you can use the mode name "NULL", or simply omit the mode name entirely:

        "1600x1200, NULL; NULL, 1024x768"

    or

        "1600x1200; , 1024x768"

    Optionally, mode names can be followed by offset information to control the positioning of the display devices within the virtual screen space; e.g.,

        "1600x1200 +0+0, 1024x768 +1600+0; ..."

    Offset descriptions follow the conventions used in the X "-geometry" command line option; i.e., both positive and negative offsets are valid, though negative offsets are only allowed when a virtual screen size is explicitly given in the X config file.

    When no offsets are given for a MetaMode, the offsets will be computed following the value of the TwinViewOrientation option (see below). Note that if offsets are given for any one of the modes in a single MetaMode, then offsets will be expected for all modes within that single MetaMode; in such a case offsets will be assumed to be +0+0 when not given.

    When not explicitly given, the virtual screen size will be computed as the the bounding box of all MetaMode bounding boxes. MetaModes with a bounding box larger than an explicitly given virtual screen size will be discarded.

    A MetaMode string can be further modified with a "Panning Domain" specification; e.g.,

        "1024x768 @1600x1200, 800x600 @1600x1200"

    A panning domain is the area in which a display device's viewport will be panned to follow the mouse. Panning actually happens on two levels with TwinView: first, an individual display device's viewport will be panned within its panning domain, as long as the viewport is contained by the bounding box of the MetaMode. Once the mouse leaves the bounding box of the MetaMode, the entire MetaMode (i.e., all display devices) will be panned to follow the mouse within the virtual screen. Note that individual display devices' panning domains default to being clamped to the position of the display devices' viewports, thus the default behavior is just that viewports remain "locked" together and only perform the second type of panning.

    The most beneficial use of panning domains is probably to eliminate dead areas -- regions of the virtual screen that are inaccessible due to display devices with different resolutions. For example:

        "1600x1200, 1024x768"

    produces an inaccessible region below the 1024x768 display. Specifying a panning domain for the second display device:

        "1600x1200, 1024x768 @1024x1200"

    provides access to that dead area by allowing you to pan the 1024x768 viewport up and down in the 1024x1200 panning domain.

    Offsets can be used in conjunction with panning domains to position the panning domains in the virtual screen space (note that the offset describes the panning domain, and only affects the viewport in that the viewport must be contained within the panning domain). For example, the following describes two modes, each with a panning domain width of 1900 pixels, and the second display is positioned below the first:

        "1600x1200 @1900x1200 +0+0, 1024x768 @1900x768 +0+1200"

    Because it is often unclear which mode within a MetaMode will be used on each display device, mode descriptions within a MetaMode can be prepended with a display device name. For example:

        "CRT-0: 1600x1200,  DFP-0: 1024x768"

    If no MetaMode string is specified, then the X driver uses the modes listed in the relevant "Display" subsection, attempting to place matching modes on each display device.
TwinViewOrientation

    This option controls the positioning of the second display device relative to the first within the virtual X screen, when offsets are not explicitly given in the MetaModes. The possible values are:

        "RightOf"  (the default)
        "LeftOf"
        "Above"
        "Below"
        "Clone"

    When "Clone" is specified, both display devices will be assigned an offset of 0,0.

    Because it is often unclear which display device is "first" and which is "second", TwinViewOrientation can be confusing. You can further clarify the TwinViewOrientation with display device names to indicate which display device is positioned relative to which display device. For example:

        "CRT-0 LeftOf DFP-0"

ConnectedMonitor

    With this option you can override what the NVIDIA kernel module detects is connected to your graphics card. This may be useful, for example, if any of your display devices do not support detection using Display Data Channel (DDC) protocols. Valid values are a comma-separated list of display device names; for example:

        "CRT-0, CRT-1"
        "CRT"
        "CRT-1, DFP-0"

    WARNING: this option overrides what display devices are detected by the NVIDIA kernel module, and is very seldom needed. You really only need this if a display device is not detected, either because it does not provide DDC information, or because it is on the other side of a KVM (Keyboard-Video-Mouse) switch. In most other cases, it is best not to specify this option.

Just as in all X config entries, spaces are ignored and all entries are case insensitive.
Dynamic TwinView

Using the NV-CONTROL X extension, the display devices in use by an X screen, the mode pool for each display device, and the MetaModes for each X screen can be dynamically manipulated. The "Display Configuration" page in nvidia-settings uses this functionality to modify the MetaMode list and then uses XRandR to switch between MetaModes. This gives the ability to dynamically configure TwinView.

The details of how this works are documented in the nv-control-dpy.c sample NV-CONTROL client in the nvidia-settings source tarball.

Because the NVIDIA X driver can now transition into and out of TwinView dynamically, MetaModes are always used internally by the NVIDIA X driver, regardless of how many display devices are currently in use by the X screen and regardless of whether the TwinView X configuration option was specified.

One implication of this implementation is that each MetaMode must be uniquely identifiable to the XRandR X extension. Unfortunately, two MetaModes with the same bounding box will look the same to XRandR. For example, two MetaModes with different orientations:

    "CRT: 1600x1200 +0+0, DFP: 1600x1200 +1600+0"
    "CRT: 1600x1200 +1600+0, DFP: 1600x1200 +0+0"

will look identical to the XRandR or XF86VidMode X extensions, because they have the same total size (3200x1200), and nvidia-settings would not be able to use XRandR to switch between these MetaModes. To work around this limitation, the NVIDIA X driver "lies" about the refresh rate of each MetaMode, using the refresh rate of the MetaMode as a unique identifier.

The XRandR extension is currently being redesigned by the X.Org community, so the refresh rate workaround may be removed at some point in the future. This workaround can also be disabled by setting the "DynamicTwinView" X configuration option to FALSE, which will disable NV-CONTROL support for manipulating MetaModes, but will cause the XRandR and XF86VidMode visible refresh rate to be accurate.
13.1. Frequently Asked TwinView Questions
	

Nothing gets displayed on my second monitor; what is wrong?

	

Monitors that do not support monitor detection using Display Data Channel (DDC) protocols (this includes most older monitors) are not detectable by your NVIDIA card. You need to explicitly tell the NVIDIA X driver what you have connected using the "ConnectedMonitor" option; e.g.,

    Option "ConnectedMonitor" "CRT, CRT"

	

Will window managers be able to appropriately place windows (e.g., avoiding placing windows across both display devices, or in inaccessible regions of the virtual desktop)?

	

Yes. The NVIDIA X driver provides a Xinerama extension that X clients (such as window managers) can use to discover the current TwinView configuration. Note that the Xinerama protocol provides no way to notify clients when a configuration change occurs, so if you modeswitch to a different MetaMode, your window manager will still think you have the previous configuration. Using the Xinerama extension, in conjunction with the XF86VidMode extension to get modeswitch events, window managers should be able to determine the TwinView configuration at any given time.

Unfortunately, the data provided by XineramaQueryScreens() appears to confuse some window managers; to work around such broken window mangers, you can disable communication of the TwinView screen layout with the "NoTwinViewXineramaInfo" X config Option (see Appendix B, X Config Options for details).

The order that display devices are reported in via the TwinView Xinerama information can be configured with the TwinViewXineramaInfoOrder X configuration option.

Be aware that the NVIDIA driver cannot provide the Xinerama extension if the X server's own Xinerama extension is being used. Explicitly specifying Xinerama in the X config file or on the X server commandline will prohibit NVIDIA's Xinerama extension from installing, so make sure that the X server's log file does not contain:

    (++) Xinerama: enabled

if you want the NVIDIA driver to be able to provide the Xinerama extension while in TwinView.

Another solution is to use panning domains to eliminate inaccessible regions of the virtual screen (see the MetaMode description above).

A third solution is to use two separate X screens, rather than use TwinView. See Chapter 15, Configuring Multiple X Screens on One Card.
	

Why can I not get a resolution of 1600x1200 on the second display device when using a GeForce2 MX?

	

Because the second display device on the GeForce2 MX was designed to be a digital flat panel, the Pixel Clock for the second display device is only 150 MHz. This effectively limits the resolution on the second display device to somewhere around 1280x1024 (for a description of how Pixel Clock frequencies limit the programmable modes, see the XFree86 Video Timings HOWTO). This constraint is not present on GeForce4 or GeForce FX GPUs -- the maximum pixel clock is the same on both heads.
	

Do video overlays work across both display devices?

	

Hardware video overlays only work on the first display device. The current solution is that blitted video is used instead on TwinView.
	

How are virtual screen dimensions determined in TwinView?

	

After all requested modes have been validated, and the offsets for each MetaMode's viewports have been computed, the NVIDIA driver computes the bounding box of the panning domains for each MetaMode. The maximum bounding box width and height is then found.

Note that one side effect of this is that the virtual width and virtual height may come from different MetaModes. Given the following MetaMode string:

    "1600x1200,NULL; 1024x768+0+0, 1024x768+0+768"

the resulting virtual screen size will be 1600 x 1536.
	

Can I play full screen games across both display devices?

	

Yes. While the details of configuration will vary from game to game, the basic idea is that a MetaMode presents X with a mode whose resolution is the bounding box of the viewports for that MetaMode. For example, the following:

    Option "MetaModes" "1024x768,1024x768; 800x600,800x600"
    Option "TwinViewOrientation" "RightOf"

produce two modes: one whose resolution is 2048x768, and another whose resolution is 1600x600. Games such as Quake 3 Arena use the VidMode extension to discover the resolutions of the modes currently available. To configure Quake 3 Arena to use the above MetaMode string, add the following to your q3config.cfg file:

    seta r_customaspect "1"
    seta r_customheight "600"
    seta r_customwidth  "1600"
    seta r_fullscreen   "1"
    seta r_mode         "-1"

Note that, given the above configuration, there is no mode with a resolution of 800x600 (remember that the MetaMode "800x600, 800x600" has a resolution of 1600x600"), so if you change Quake 3 Arena to use a resolution of 800x600, it will display in the lower left corner of your screen, with the rest of the screen grayed out. To have single head modes available as well, an appropriate MetaMode string might be something like:

    "800x600,800x600; 1024x768,NULL; 800x600,NULL; 640x480,NULL"

More precise configuration information for specific games is beyond the scope of this document, but the above examples coupled with numerous online sources should be enough to point you in the right direction.
---------------
Now some xrrandr examples, which shouldn't work with the propietory nvidia driver kills standard support for it, but could be useful if wanting to switch to 2D only support and the "nv" driver:

#!/bin/sh
xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off
--output HDMI1 --off --output eDP1 --mode 1366x768 --pos 0x0 --rotate
normal --output VGA1 --mode 1280x1024 --pos 1360x0 --rotate normal

    Section “Screen”
    Identifier    “Screen0″
    Device        “Videocard0″
    Monitor        “Monitor0″
    Defaultdepth    24
    Option        “TwinView”    “1″
    Option        “TwinViewXineramaInfoOrder”    “CRT-0″
    Option        “metamodes”    “CRT: 1280x1024_85 +0+0, DFP:
nvidia-auto-select +0+1024″
    EndSection

This at least allowed me to boot into twinview if the CRT was
connected at the time.

I have added a metamode now, so that the line above reads:

    Option        “metamodes”    “CRT: 1280x1024_85 +0+0, DFP:
nvidia-auto-select +0+1024; CRT: null, DFP: nvidia-auto-select +0+0″

---

Gozer ~ # nv-control-dpy --print-current-metamode

Using NV-CONTROL extension 1.24 on :0.0
Connected Display Devices:
  DFP-0 (0x00010000): Samsung SyncMaster
  DFP-1 (0x00020000): Samsung SyncMaster

current metamode: "id=52, switchable=no, source=nv-control :: DFP-0:
1280x1024 @1280x1024 +1280+0, DFP-1: nvidia-auto-select @1280x1024
+0+103"

---

http://wiki.gentoo.org/wiki/Xrandr
General sysinfo:

Code:
Plan = load the nvidia settings file manually from the commandline. Put
in .xinitrc

$ /sbin/lspci | grep VGA
03:00.0 VGA compatible controller: nVidia Corporation Unknown device
0df8 (rev a1)
24:00.0 VGA compatible controller: nVidia Corporation Unknown device
0df8 (rev a1)


[prouser@promax22 /handy_files]$ nvidia-settings
Locking assertion failure.  Backtrace:
#0 /usr/lib64/libxcb-xlib.so.0 [0x332580090c]
#1 /usr/lib64/libxcb-xlib.so.0(xcb_xlib_unlock+0x24) [0x3325800a14]
#2 /usr/lib64/libX11.so.6 [0x3325c4a0f0]
#3 /usr/lib64/libXrandr.so.2(XRRQueryVersion+0x69) [0x33268019d9]
#4 nvidia-settings(NvCtrlInitXrandrAttributes+0xd2) [0x41f1a2]
#5 nvidia-settings(NvCtrlAttributeInit+0xb8) [0x41c108]
#6 nvidia-settings(layout_load_from_server+0x35c) [0x46cd0c]
#7 nvidia-settings(ctk_display_config_new+0x12c) [0x4606cc]
#8 nvidia-settings(ctk_window_new+0x1a3a) [0x438bba]
#9 nvidia-settings(ctk_main+0x48) [0x422cd8]
#10 nvidia-settings(main+0x131) [0x416111]
#11 /lib64/libc.so.6(__libc_start_main+0xf4) [0x3a19e1d974]
#12 nvidia-settings [0x413d4a]
nvidia-settings: xcb_xlib.c:82: xcb_xlib_unlock: Assertion
`c->xlib.lock' failed.
Abort


^ redhat + nvidia bug?

$ nvidia-settings -v

nvidia-settings:  version 275.09.07
(buildmeister@swio-display-x86-rhel47-03.nvidia.com)  Wed Jun  8
14:38:19 PDT 2011
  The NVIDIA X Server Settings tool.

  This program is used to configure the NVIDIA Linux graphics driver.
  For more detail, please see the nvidia-settings(1) man page.

  Copyright (C) 2004 - 2010 NVIDIA Corporation.



^ seems to be gui only, cli unaffected

$ nvidia-settings -q screens -q gpus -q
framelocks -q vcs -q gvis -q fans

1 X Screen on promax22:0

    [0] promax22:0.0 (Quadro 600)

2 GPUs on promax22:0

    [0] promax22:0[gpu:0] (Quadro 600)

    [1] promax22:0[gpu:1] (Quadro 600)

2 Fans on promax22:0

    [0] promax22:0[fan:0] (Fan 0)

    [1] promax22:0[fan:1] (Fan 1)
jago25_98 is offline   Reply With Quote
Reply


Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


Similar Threads
Thread Thread Starter Forum Replies Last Post
The Nvidia GeForce GTX 650 Ti GPU is Out Now, Great for 720p S3D News Latest Tech And Game Headlines 0 10-09-12 09:40 AM
Nvidia Puts Tesla K20 GPU Coprocessor Through its Paces News Latest Tech And Game Headlines 0 09-20-12 10:00 AM
NVIDIA Showcases GPU Breakthroughs at IBC 2012 News Latest Tech And Game Headlines 0 09-07-12 10:10 AM
NVIDIA and Jülich Join Forces to Drive GPU Computing Innovation News Latest Tech And Game Headlines 0 06-18-12 09:50 PM
New GPU from Nvidia Announced Today, the GeForce GTX 670 News Latest Tech And Game Headlines 0 05-10-12 01:50 PM

All times are GMT -5. The time now is 05:48 AM.


Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Copyright ©1998 - 2014, nV News.