import NVIDIA-FreeBSD-x86-190.42
[nvidia.git] / doc / README
1 NVIDIA Accelerated FreeBSD Graphics Driver README and Installation Guide
2
3     NVIDIA Corporation
4     Last Updated: Tue Oct 20 19:10:26 PDT 2009
5     Most Recent Driver Version: 190.42
6
7 Published by
8 NVIDIA Corporation
9 2701 San Tomas Expressway
10 Santa Clara, CA
11 95050
12
13
14 NOTICE:
15
16 ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS,
17 DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY, "MATERIALS")
18 ARE BEING PROVIDED "AS IS." NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED,
19 STATUTORY, OR OTHERWISE WITH RESPECT TO THE MATERIALS, AND EXPRESSLY DISCLAIMS
20 ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
21 PARTICULAR PURPOSE. Information furnished is believed to be accurate and
22 reliable. However, NVIDIA Corporation assumes no responsibility for the
23 consequences of use of such information or for any infringement of patents or
24 other rights of third parties that may result from its use. No license is
25 granted by implication or otherwise under any patent or patent rights of
26 NVIDIA Corporation. Specifications mentioned in this publication are subject
27 to change without notice. This publication supersedes and replaces all
28 information previously supplied. NVIDIA Corporation products are not
29 authorized for use as critical components in life support devices or systems
30 without express written approval of NVIDIA Corporation.
31
32 NVIDIA, the NVIDIA logo, NVIDIA nForce, GeForce, NVIDIA Quadro, Vanta, TNT2,
33 TNT, RIVA, RIVA TNT, Quincunx Antialiasing, and TwinView are registered
34 trademarks or trademarks of NVIDIA Corporation in the United States and/or
35 other countries.
36
37 FreeBSD is a registered trademark of the FreeBSD Foundation. Linux is a
38 registered trademark of Linus Torvalds. Intel and Pentium are registered
39 trademarks of Intel Corporation. Athlon is a registered trademark of Advanced
40 Micro Devices. OpenGL is a registered trademark of Silicon Graphics Inc. PCI
41 Express is a registered trademark and/or service mark of PCI-SIG. Windows is a
42 registered trademark of Microsoft Corporation in the United States and other
43 countries. Other company and product names may be trademarks or registered
44 trademarks of the respective owners with which they are associated.
45
46
47 Copyright 2006 - 2009 NVIDIA Corporation. All rights reserved.
48
49 ______________________________________________________________________________
50
51 TABLE OF CONTENTS
52 ______________________________________________________________________________
53
54 Chapter 1. Introduction
55 Chapter 2. Minimum Software Requirements
56 Chapter 3. Installing the NVIDIA Driver
57 Chapter 4. Installed Components
58 Chapter 5. Using Linux Compatibility Support
59 Chapter 6. Configuring X for the NVIDIA Driver
60 Chapter 7. Frequently Asked Questions
61 Chapter 8. Common Problems
62 Chapter 9. Known Issues
63 Chapter 10. Specifying OpenGL Environment Variable Settings
64 Chapter 11. Configuring AGP
65 Chapter 12. Configuring TwinView
66 Chapter 13. Configuring GLX in Xinerama
67 Chapter 14. Configuring Multiple X Screens on One Card
68 Chapter 15. Configuring TV-Out
69 Chapter 16. Using the XRandR Extension
70 Chapter 17. Configuring a Notebook
71 Chapter 18. Programming Modes
72 Chapter 19. Configuring Flipping and UBB
73 Chapter 20. The Sysctl Interface
74 Chapter 21. Configuring Low-level Parameters
75 Chapter 22. Using the X Composite Extension
76 Chapter 23. Using the nvidia-settings Utility
77 Chapter 24. Configuring SLI and Multi-GPU FrameRendering
78 Chapter 25. Configuring Frame Lock and Genlock
79 Chapter 26. Configuring SDI Video Output
80 Chapter 27. Configuring Depth 30 Displays
81 Chapter 28. NVIDIA Contact Info and Additional Resources
82 Chapter 29. Credits
83 Chapter 30. Acknowledgements
84
85 Appendix A. Supported NVIDIA GPU Products
86 Appendix B. X Config Options
87 Appendix C. Display Device Names
88 Appendix D. GLX Support
89 Appendix E. Dots Per Inch
90 Appendix F. XvMC Support
91 Appendix G. VDPAU Support
92 Appendix H. Tips for New FreeBSD Users
93
94 ______________________________________________________________________________
95
96 Chapter 1. Introduction
97 ______________________________________________________________________________
98
99
100 1A. ABOUT THE NVIDIA ACCELERATED FREEBSD GRAPHICS DRIVER
101
102 The NVIDIA Accelerated FreeBSD Graphics Driver brings accelerated 2D
103 functionality and high-performance OpenGL support to FreeBSD x86 with the use
104 of NVIDIA graphics processing units (GPUs).
105
106 These drivers provide optimized hardware acceleration for OpenGL and X
107 applications and support nearly all recent NVIDIA GPU products (see Appendix A
108 for a complete list of supported GPUs). TwinView, TV-Out and flat panel
109 displays are also supported.
110
111
112 1B. ABOUT THIS DOCUMENT
113
114 This document provides instructions for the installation and use of the NVIDIA
115 Accelerated FreeBSD Graphics Driver. Chapter 3, Chapter 5 and Chapter 6 walk
116 the user through the process of downloading, installing and configuring the
117 driver. Chapter 7 addresses frequently asked questions about the installation
118 process, and Chapter 8 provides solutions to common problems. The remaining
119 chapters include details on different features of the NVIDIA FreeBSD Driver.
120 Frequently asked questions about specific tasks are included in the relevant
121 chapters.
122
123
124 1C. ABOUT THE AUDIENCE
125
126 It is assumed that the user and reader of this document has at least a basic
127 understanding of FreeBSD techniques and terminology. However, new FreeBSD
128 users can refer to Appendix H for details on parts of the installation
129 process.
130
131
132 1D. ADDITIONAL INFORMATION
133
134 In case additional information is required, Chapter 28 provides contact
135 information for NVIDIA FreeBSD driver resources, as well as a brief listing of
136 external resources.
137
138 ______________________________________________________________________________
139
140 Chapter 2. Minimum Software Requirements
141 ______________________________________________________________________________
142
143 The official minimum software requirements for the NVIDIA FreeBSD Graphics
144 Driver are as follows:
145
146     Software Element                      Min Requirement
147     ----------------------------------    ----------------------------------
148     Kernel                                FreeBSD 5-STABLE (5.3 or later)
149     XFree86/X.Org                         4.2/6.7.0
150
151 Additionally, the kernel source tree must be installed in /usr/src/sys
152 (package 'ssys' installed)
153
154 Note that FreeBSD -STABLE versions older than FreeBSD 5.3 and FreeBSD 6.x/7.x
155 -CURRENT development snapshots are not supported.
156
157 ______________________________________________________________________________
158
159 Chapter 3. Installing the NVIDIA Driver
160 ______________________________________________________________________________
161
162 This installation procedure will likely be simplified further in the future,
163 but for the moment you will need to download the NVIDIA FreeBSD Graphics
164 Driver archives from the NVIDIA website, extract them to a temporary location
165 of your choice, and run the following from the root of the extracted directory
166 hierarchy:
167
168     % make install
169
170 This will compile the NVIDIA FreeBSD kernel module, install it, and kldload
171 it. It will also remove any conflicting OpenGL libraries, and install the
172 NVIDIA OpenGL libraries. The '/dev/nvidia' device files will be created
173 (unless the system is using devfs), and your '/boot/loader.conf' file will be
174 updated to automatically load the NVIDIA kernel module on boot, as well as the
175 Linux ABI compatibility module should you not have it compiled into your
176 kernel.
177
178 ______________________________________________________________________________
179
180 Chapter 4. Installed Components
181 ______________________________________________________________________________
182
183 The NVIDIA Accelerated FreeBSD Graphics Driver consists of the following
184 components.
185
186     Installed File                        Location
187     ----------------------------------    ----------------------------------
188     nvidia.ko                             /boot/modules
189     libGL.so                              /usr/lib/xorg
190     libGL.so.1                            /usr/lib/xorg
191     libnvidia-tls.so                      /usr/lib/xorg
192     libnvidia-tls.so.1                    /usr/lib/xorg
193     libnvidia-cfg.so                      /usr/lib/xorg
194     libnvidia-cfg.so.1                    /usr/lib/xorg
195     libGLcore.so                          /usr/lib/xorg
196     libGLcore.so.1                        /usr/lib/xorg
197     nvidia_drv.so                         /usr/lib/xorg/modules/drivers
198     libnvidia-wfb.so (optional)           /usr/lib/xorg/modules
199     libwfb.so                             /usr/lib/xorg/modules/drivers
200     libglx.so                             /usr/lib/xorg/modules/extensions
201     libglx.so.1                           /usr/lib/xorg/modules/extensions
202     libvdpau.so                           /usr/lib/xorg
203     libvdpau.so.1                         /usr/lib/xorg
204     libvdpau_trace.so                     /usr/lib/xorg
205     libvdpau_trace.so.1                   /usr/lib/xorg
206     libvdpau_nvidia.so                    /usr/lib/xorg
207     libvdpau_nvidia.so.1                  /usr/lib/xorg
208     nvidia-xconfig                        /usr/bin
209     nvidia-xconfig.1                      /usr/man/man1
210     nvidia-settings                       /usr/bin
211     nvidia-settings.1                     /usr/man/man1
212     nvidia0                               /dev
213     nvidia1                               /dev
214     nvidia2                               /dev
215     nvidia3                               /dev
216     nvidiactl                             /dev
217     libGL.so.190.42                       /compat/linux/usr/lib
218     libnvidia-tls.so.190.42               /compat/linux/usr/lib
219     libGLcore.so.190.42                   /compat/linux/usr/lib
220     libvdpau.so.190.42                    /compat/linux/usr/lib
221     libvdpau_trace.so.190.42              /compat/linux/usr/lib
222     libvdpau_nvidia.so.190.42             /compat/linux/usr/lib
223
224
225 ______________________________________________________________________________
226
227 Chapter 5. Using Linux Compatibility Support
228 ______________________________________________________________________________
229
230 If you wish to run Linux OpenGL applications on your FreeBSD computer, you
231 will need to make sure that several prerequisites are met.
232
233 First, you should follow the basic Linux compatibility installation guide in
234 the FreeBSD Handbook (install the linux_base package, etc). Once the basic
235 components are in place, you will need to install the NVIDIA Linux OpenGL
236 libraries in '/compat/linux/usr/lib' (do not brandelf them!); if the
237 '/compat/linux/usr/lib/' directory exists when you install the FreeBSD driver,
238 the Linux compatibility OpenGL libraries will automatically be installed.
239
240 Additionally, the 'nvidia.ko' kernel module needs to be built with support for
241 the Linux ABI compatibility layer. This is the case by default; as a
242 consequence, the 'nvidia.ko' kernel module requires the 'linux.ko' module to
243 be loaded.
244
245 Note: If you have no need for Linux ABI compatibility and do not wish to load
246 'linux.ko', you can build the 'nvidia.ko' kernel module without support for
247 the Linux ABI compatibility layer (see 'nv-freebsd.h' for details).
248
249 ______________________________________________________________________________
250
251 Chapter 6. Configuring X for the NVIDIA Driver
252 ______________________________________________________________________________
253
254 The X configuration file provides a means to configure the X server. This
255 section describes the settings necessary to enable the NVIDIA driver. A
256 comprehensive list of parameters is provided in Appendix B.
257
258 The NVIDIA Driver includes a utility called nvidia-xconfig, which is designed
259 to make editing the X configuration file easy. You can also edit it by hand.
260
261
262 6A. USING NVIDIA-XCONFIG TO CONFIGURE THE X SERVER
263
264 nvidia-xconfig will find the X configuration file and modify it to use the
265 NVIDIA X driver. In most cases, you can simply answer "Yes" when the installer
266 asks if it should run it. If you need to reconfigure your X server later, you
267 can run nvidia-xconfig again from a terminal. nvidia-xconfig will make a
268 backup copy of your configuration file before modifying it.
269
270 Note that the X server must be restarted for any changes to its configuration
271 file to take effect.
272
273 More information about nvidia-xconfig can be found in the nvidia-xconfig
274 manual page by running.
275
276     % man nvidia-xconfig
277
278
279
280
281 6B. MANUALLY EDITING THE CONFIGURATION FILE
282
283 In April 2004 the X.Org Foundation released an X server based on the XFree86
284 server. While your release may use the X.Org X server, rather than XFree86,
285 the differences between the two should have no impact on NVIDIA FreeBSD users
286 with two exceptions:
287
288    o The X.Org configuration file is '/etc/X11/xorg.conf' while the XFree86
289      configuration file is '/etc/X11/XF86Config'. The files use the same
290      syntax. This document refers to both files as "the X config file".
291
292    o The X.Org log file is '/var/log/Xorg.#.log' while the XFree86 log file is
293      '/var/log/XFree86.#.log' (where '#' is the server number -- usually 0).
294      The format of the log files is nearly identical. This document refers to
295      both files as "the X log file".
296
297 In order for any changes to be read into the X server, you must edit the file
298 used by the server. While it is not unreasonable to simply edit both files, it
299 is easy to determine the correct file by searching for the line
300
301     (==) Using config file:
302
303 in the X log file. This line indicates the name of the X config file in use.
304
305 If you do not have a working X config file, there are a few different ways to
306 obtain one. A sample config file is included both with the XFree86
307 distribution and with the NVIDIA driver package (at
308 '/usr/X11R6/share/doc/NVIDIA_GLX-1.0/'). The 'nvidia-xconfig' utility,
309 provided with the NVIDIA driver package, can generate a new X configuration
310 file. Additional information on the X config syntax can be found in the
311 XF86Config manual page (`man XF86Config` or `man xorg.conf`).
312
313 If you have a working X config file for a different driver (such as the "nv"
314 or "vesa" driver), then simply edit the file as follows.
315
316 Remove the line:
317
318       Driver "nv"
319   (or Driver "vesa")
320   (or Driver "fbdev")
321
322 and replace it with the line:
323
324     Driver "nvidia"
325
326 Remove the following lines:
327
328     Load "dri"
329     Load "GLCore"
330
331 In the "Module" section of the file, add the line (if it does not already
332 exist):
333
334     Load "glx"
335
336 If the X config file does not have a "Module" section, you can safely skip the
337 last step if the X server installed on your system is an X.Org X server or an
338 XFree86 X release version 4.4.0 or greater. If you are using an older XFree86
339 X server, add the following to your X config file:
340
341 Section "Module"
342     Load "extmod"
343     Load "dbe"
344     Load "type1"
345     Load "freetype"
346     Load "glx"
347 EndSection
348
349 There are numerous options that may be added to the X config file to tune the
350 NVIDIA X driver. See Appendix B for a complete list of these options.
351
352 Once you have completed these edits to the X config file, you may restart X
353 and begin using the accelerated OpenGL libraries. After restarting X, any
354 OpenGL application should automatically use the new NVIDIA libraries. (NOTE:
355 If you encounter any problems, see Chapter 8 for common problem diagnoses.)
356
357 ______________________________________________________________________________
358
359 Chapter 7. Frequently Asked Questions
360 ______________________________________________________________________________
361
362 This section provides answers to frequently asked questions associated with
363 the NVIDIA FreeBSD x86 Driver and its installation. Common problem diagnoses
364 can be found in Chapter 8 and tips for new users can be found in Appendix H.
365 Also, detailed information for specific setups is provided in the Appendices.
366
367
368 NVIDIA DRIVER
369
370 Q. Where should I start when diagnosing display problems?
371
372 A. One of the most useful tools for diagnosing problems is the X log file in
373    '/var/log'. Lines that begin with "(II)" are information, "(WW)" are
374    warnings, and "(EE)" are errors. You should make sure that the correct
375    config file (i.e. the config file you are editing) is being used; look for
376    the line that begins with:
377    
378        (==) Using config file:
379    
380    Also make sure that the NVIDIA driver is being used, rather than the "nv"
381    or "vesa" driver. Search for
382    
383        (II) LoadModule: "nvidia"
384    
385    Lines from the driver should begin with:
386    
387        (II) NVIDIA(0)
388    
389    
390
391 Q. How can I increase the amount of data printed in the X log file?
392
393 A. By default, the NVIDIA X driver prints relatively few messages to stderr
394    and the X log file. If you need to troubleshoot, then it may be helpful to
395    enable more verbose output by using the X command line options -verbose and
396    -logverbose, which can be used to set the verbosity level for the 'stderr'
397    and log file messages, respectively. The NVIDIA X driver will output more
398    messages when the verbosity level is at or above 5 (X defaults to verbosity
399    level 1 for 'stderr' and level 3 for the log file). So, to enable verbose
400    messaging from the NVIDIA X driver to both the log file and 'stderr', you
401    could start X with the verbosity level set to 5, by doing the following
402    
403        % startx -- -verbose 5 -logverbose 5
404    
405    
406
407 Q. I have read that the NVIDIA FreeBSD Driver is not a native driver, but sits
408    on top of the Linux ABI compatibility layer. Is this true?
409
410 A. No, the NVIDIA FreeBSD Graphics Driver is a native driver. It does provide
411    Linux OpenGL libraries in addition to the native, FreeBSD libraries to
412    enable users to run Linux OpenGL applications.
413
414
415 Q. Is the NVIDIA FreeBSD Accelerated Graphics Driver thread-safe?
416
417 A. This release is thread-safe on FreeBSD 5.3 or later systems making use of
418    the libpthread or libthr KSE threading libraries. On these systems, the
419    NVIDIA Linux ABI compatibility libraries are fully thread-safe as well.
420
421
422 Q. Why can't the Linux compatibility libraries correctly determine if they are
423    used in a multithreaded application?
424
425 A. The Linux compatibility libraries are not able to correctly determine if
426    they are used in a multithreaded application because the %gs segment
427    register is not initialized correctly for Linux compatibility.
428
429    The '__GL_SINGLE_THREADED' environment variable (set to "1") can be used to
430    work around this issue, but at the cost of thread-safeness.
431
432
433 Q. Why do applications that use DGA graphics fail?
434
435 A. The NVIDIA driver does not support the graphics component of the
436    XFree86-DGA (Direct Graphics Access) extension. Applications can use the
437    XDGASelectInput() function to acquire relative pointer motion, but
438    graphics-related functions such as XDGASetMode() and XDGAOpenFramebuffer()
439    will fail.
440
441    The graphics component of XFree86-DGA is not supported because it requires
442    a CPU mapping of framebuffer memory. As graphics cards ship with increasing
443    quantities of video memory, the NVIDIA X driver has had to switch to a more
444    dynamic memory mapping scheme that is incompatible with DGA. Furthermore,
445    DGA does not cooperate with other graphics rendering libraries such as Xlib
446    and OpenGL because it accesses GPU resources directly.
447
448    NVIDIA recommends that applications use OpenGL or Xlib, rather than DGA,
449    for graphics rendering. Using rendering libraries other than DGA will yield
450    better performance and improve interoperability with other X applications.
451
452
453 Q. My kernel log contains messages that are prefixed with "Xid"; what do these
454    messages mean?
455
456 A. "Xid" messages indicate that a general GPU error occurred, most often due
457    to the driver misprogramming the GPU or to corruption of the commands sent
458    to the GPU. These messages provide diagnostic information that can be used
459    by NVIDIA to aid in debugging reported problems.
460
461
462 Q. On what NVIDIA hardware is the EXT_framebuffer_object OpenGL extension
463    supported?
464
465 A. EXT_framebuffer_object is supported on GeForce FX, Quadro FX, and newer
466    GPUs.
467
468
469 Q. I use the Coolbits overclocking interface to adjust my graphics card's
470    clock frequencies, but the defaults are reset whenever X is restarted. How
471    do I make my changes persistent?
472
473 A. Clock frequency settings are not saved/restored automatically by default to
474    avoid potential stability and other problems that may be encountered if the
475    chosen frequency settings differ from the defaults qualified by the
476    manufacturer. You can use the command line below in '~/.xinitrc' to
477    automatically apply custom clock frequency settings when the X server is
478    started:
479    
480        # nvidia-settings -a GPUOverclockingState=1 -a
481    GPU2DClockFreqs=<GPU>,<MEM> -a GPU3DClockFreqs=<GPU>,<MEM>
482    
483    Here '<GPU>' and '<MEM>' are the desired GPU and video memory frequencies
484    (in MHz), respectively.
485
486
487 Q. Why is the refresh rate not reported correctly by utilities that use the
488    XRandR X extension (e.g., the GNOME "Screen Resolution Preferences" panel,
489    `xrandr -q`, etc)?
490
491 A. The XRandR X extension is not presently aware of multiple display devices
492    on a single X screen; it only sees the MetaMode bounding box, which may
493    contain one or more actual modes. This means that if multiple MetaModes
494    have the same bounding box, XRandR will not be able to distinguish between
495    them.
496
497    In order to support DynamicTwinView, the NVIDIA X driver must make each
498    MetaMode appear to be unique to XRandR. Presently, the NVIDIA X driver
499    accomplishes this by using the refresh rate as a unique identifier.
500
501    You can use `nvidia-settings -q RefreshRate` to query the actual refresh
502    rate on each display device.
503
504    This behavior can be disabled by setting the X configuration option
505    "DynamicTwinView" to FALSE.
506
507    For details, see Chapter 12.
508
509
510 Q. Why does starting certain applications result in Xlib error messages
511    indicating extensions like "XFree86-VidModeExtension" or "SHAPE" are
512    missing?
513
514 A. If your X config file has a "Module" section that does not list the
515    "extmod" module, some X server extensions may be missing, resulting in
516    error messages of the form:
517    
518    Xlib: extension "SHAPE" missing on display ":0.0"
519    Xlib: extension "XFree86-VidModeExtension" missing on display ":0.0"
520    Xlib: extension "XFree86-DGA" missing on display ":0.0"
521    
522    You can solve this problem by adding the line below to your X config file's
523    "Module" section:
524    
525        Load "extmod"
526    
527    
528
529 ______________________________________________________________________________
530
531 Chapter 8. Common Problems
532 ______________________________________________________________________________
533
534 This section provides solutions to common problems associated with the NVIDIA
535 FreeBSD x86 Driver.
536
537 Q. My X server fails to start, and my X log file contains the error:
538    
539    (EE) NVIDIA(0): The NVIDIA kernel module does not appear to
540    (EE) NVIDIA(0):      be receiving interrupts generated by the NVIDIA
541    graphics
542    (EE) NVIDIA(0):      device PCI:x:x:x. Please see the COMMON PROBLEMS
543    (EE) NVIDIA(0):      section in the README for additional information.
544    
545    
546 A. This can be caused by a variety of problems, such as PCI IRQ routing
547    errors, I/O APIC problems or conflicts with other devices sharing the IRQ
548    (or their drivers).
549
550    If possible, configure your system such that your graphics card does not
551    share its IRQ with other devices (try moving the graphics card to another
552    slot if applicable, unload/disable the driver(s) for the device(s) sharing
553    the card's IRQ, or remove/disable the device(s)).
554
555
556 Q. My X server fails to start, and my X log file contains the error:
557    
558    (EE) NVIDIA(0): The interrupt for NVIDIA graphics device PCI:x:x:x
559    (EE) NVIDIA(0):      appears to be edge-triggered. Please see the COMMON
560    (EE) NVIDIA(0):      PROBLEMS section in the README for additional
561    information.
562    
563    
564 A. An edge-triggered interrupt means that the kernel has programmed the
565    interrupt as edge-triggered rather than level-triggered in the Advanced
566    Programmable Interrupt Controller (APIC). Edge-triggered interrupts are not
567    intended to be used for sharing an interrupt line between multiple devices;
568    level-triggered interrupts are the intended trigger for such usage. When
569    using edge-triggered interrupts, it is common for device drivers using that
570    interrupt line to stop receiving interrupts. This would appear to the end
571    user as those devices no longer working, and potentially as a full system
572    hang. These problems tend to be more common when multiple devices are
573    sharing that interrupt line.
574
575
576 Q. X starts for me, but OpenGL applications terminate immediately.
577
578 A. If X starts but you have trouble with OpenGL, you most likely have a
579    problem with other libraries in the way, or there are stale symlinks. See
580    Chapter 4 for details.
581
582    You should also check that the correct extensions are present;
583    
584        % xdpyinfo
585    
586    should show the "GLX" and "NV-GLX" extensions present. If these two
587    extensions are not present, then there is most likely a problem loading the
588    glx module, or it is unable to implicitly load GLcore. Check your X config
589    file and make sure that you are loading glx (see Chapter 6). If your X
590    config file is correct, then check the X log file for warnings/errors
591    pertaining to GLX. Also check that all of the necessary symlinks are in
592    place (refer to Chapter 4).
593
594
595 Q. When Xinerama is enabled, my stereo glasses are shuttering only when the
596    stereo application is displayed on one specific X screen. When the
597    application is displayed on the other X screens, the stereo glasses stop
598    shuttering.
599
600 A. This problem occurs with DDC and "blue line" stereo glasses, that get the
601    stereo signal from one video port of the graphics card. When a X screen
602    does not display any stereo drawable the stereo signal is disabled on the
603    associated video port.
604
605    Forcing stereo flipping allows the stereo glasses to shutter continuously.
606    This can be done by enabling the OpenGL control "Force Stereo Flipping" in
607    nvidia-settings, or by setting the X configuration option
608    "ForceStereoFlipping" to "1".
609
610
611 Q. Stereo is not in sync across multiple displays.
612
613 A. There are two cases where this may occur. If the displays are attached to
614    the same GPU, and one of them is out of sync with the stereo glasses, you
615    will need to reconfigure your monitors to drive identical mode timings; see
616    Chapter 18 for details.
617
618    If the displays are attached to different GPUs, the only way to synchronize
619    stereo across the displays is with a G-Sync device, which is only supported
620    by certain Quadro cards. See Chapter 25 for details. This applies to
621    seperate GPUs on seperate cards as well as seperate GPUs on the same card,
622    such as Quadro FX 4500 X2. Note that the Quadro FX 4500 X2 only provides a
623    single DIN connector for stereo, tied to the bottommost GPU. In order to
624    synchronize onboard stereo on the other GPU you must use a G-Sync device.
625
626
627 Q. X fails to start, and during boot up time I get error messages
628    
629    nvidia0: NVRM: NVIDIA REG resource alloc failed.
630    
631    or
632    
633    nvidia0: NVRM: NVIDIA IRQ resource alloc failed.
634    
635    
636 A. The system BIOS has not properly set up your graphics card; FreeBSD can't
637    currently set up PCI devices that the BIOS leaves unconfigured. Uncheck
638    "PNP-OS" in your system BIOS.
639
640
641 Q. X fails to start, and during boot up time I get the following error
642    message:
643    
644    nvidia0: NVRM: NVIDIA MEM resource alloc failed.
645    
646    
647 A. On certain FreeBSD kernels, it may be necessary to add the following line
648    to '/boot/loader.conf':
649    
650    hw.pci.allow_unsupported_io_range="1"
651    
652    This should allow the NVIDIA kernel module to attach.
653
654
655 Q. Some OpenGL applications fail to start, and my X log file contains error
656    messages of the form:
657    
658    (EE) NVIDIA(0): Failed to obtain a shared memory identifier...
659    
660    and/or
661    
662    (EE) NVIDIA(0): Failed to attach to shared memory segment...
663    
664    
665 A. The NVIDIA driver may require more IPC resources than are allocated by
666    default. If this happens, you may be able to work around this problem by
667    increasing your system's resource limits by editing the file
668    '/boot/loader.conf' and adding:
669    
670    kern.ipc.shmseg=1024
671    kern.ipc.shmmni=1024
672    
673    
674    The values above were chosen conservatively, you may need to tweak them to
675    meet your requirements.
676
677
678 Q. My X server fails to start, and my X log file contains the error:
679    
680    (EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module!
681    
682    
683 A. Nothing will work if the NVIDIA kernel module does not function properly.
684    If you see anything in the X log file like
685    
686    (EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module!
687    
688    then there is most likely a problem with the NVIDIA kernel module.
689
690    The NVIDIA kernel module may print error messages indicating a problem --
691    to view these messages check the output of `dmesg`, '/var/log/messages', or
692    wherever syslog is directed to place kernel messages. These messages are
693    prepended with "NVRM".
694
695
696 Q. When I attempt to start `nvidia-settings`, I get an error message of the
697    form:
698    
699     Shared object "libgtk-x11-2.0.so.400" not found, required by
700    nvidia-settings
701    
702    
703 A. Due to differences between the gtk+-2.x ports packages included with
704    different FreeBSD 5.x releases, the prebuilt nvidia-settings binary shipped
705    with the NVIDIA driver may not work with FreeBSD releases more recent than
706    FreeBSD 5.3.
707
708    If you have a recent ports package of gtk+-2.x and gmake installed on your
709    system, you can build the nvidia-installer utility from source to solve
710    this problem.
711
712    Download nvidia-settings-1.0.tar.gz (or the latest version) from
713    ftp://download.nvidia.com/XFree86/nvidia-settings You can then extract,
714    build and install it (to '/usr/local/bin') with:
715    
716        % gmake install
717    
718    
719
720 Q. When I attempt to run `nvidia-xconfig` after the NVIDIA FreeBSD graphics
721    driver installation, I get an error message of the form:
722    
723    nvidia-xconfig: Command not found.
724    
725    
726 A. Depending on the shell you are using, you may need to force it to recompute
727    its internal table of executable files present in the directories listed in
728    the '$PATH' variable. Assuming you are using the FreeBSD default shell you
729    can do so by issuing the command:
730    
731        % rehash
732    
733    
734
735 Q. When I attempt to start a Linux application as 'root', I get the error
736    message:
737    
738    NVIDIA: failed to execute '/sbin/modprobe': No such file or directory.
739    
740    
741 A. When initialized by an application executed with 'root' privileges, the
742    NVIDIA Linux OpenGL library, shipped with the NVIDIA FreeBSD graphics
743    driver for Linux ABI compatibility, will attempt to load the NVIDIA Linux
744    kernel module and fail because /sbin/modprobe is absent. You can work
745    around this problem by creating a symbolic link from '/usr/bin/true' to
746    '/compat/linux/sbin/modprobe':
747    
748        % ln -s /usr/bin/true /compat/linux/sbin/modprobe
749    
750    
751
752 Q. My system runs, but seems unstable.
753
754 A. Your stability problems may be AGP-related. See Chapter 11 for details.
755
756
757 Q. OpenGL applications are running slowly
758
759 A. The application is probably using a different library that still remains on
760    your system, rather than the NVIDIA supplied OpenGL library. See Chapter 4
761    for details.
762
763
764 Q. There are problems running Quake2.
765
766 A. Quake2 requires some minor setup to get it going. First, in the Quake2
767    directory, the install creates a symlink called 'libGL.so' that points at
768    'libMesaGL.so'. This symlink should be removed or renamed. Second, in order
769    to run Quake2 in OpenGL mode, you must type
770    
771        % quake2 +set vid_ref glx +set gl_driver libGL.so
772    
773    Quake2 does not seem to support any kind of full-screen mode, but you can
774    run your X server at the same resolution as Quake2 to emulate full-screen
775    mode.
776
777
778 Q. I am using either nForce of nForce2 internal graphics, and I see warnings
779    like this in my X log file:
780    
781    Not using mode "1600x1200" (exceeds valid memory bandwidth usage)
782    
783    
784 A. Integrated graphics have more strict memory bandwidth limitations that
785    limit the resolution and refresh rate of the modes you request. To work
786    around this, you can reduce the maximum refresh rate by lowering the upper
787    value of the VertRefresh range in the 'Monitor' section of your X config
788    file. Though not recommended, you can disable the memory bandwidth test
789    with the NoBandWidthTest X config file option.
790
791
792 Q. X takes a long time to start (possibly several minutes).
793
794 A. Most of the X startup delay problems we have found are caused by incorrect
795    data in video BIOSes about what display devices are possibly connected or
796    what i2c port should be used for detection. You can work around these
797    problems with the X config option IgnoreDisplayDevices (see the description
798    in Appendix B).
799
800
801 Q. Fonts are incorrectly sized after installing the NVIDIA driver.
802
803 A. Incorrectly sized fonts are generally caused by incorrect DPI (Dots Per
804    Inch) information. You can check what X thinks the physical size of your
805    monitor is, by running:
806    
807     % xdpyinfo | grep dimensions
808    
809    This will report the size in pixels, and in millimeters.
810
811    If these numbers are wrong, you can correct them by modifying the X
812    server's DPI setting. See Appendix E for details.
813
814
815 Q. General problems with ALi chipsets
816
817 A. There are some known timing and signal integrity issues on ALi chipsets.
818    The following tips may help stabilize problematic ALI systems:
819    
820       o Disable TURBO AGP MODE in the BIOS.
821    
822       o When using a P5A upgrade to BIOS Revision 1002 BETA 2.
823    
824       o When using 1007, 1007A or 1009 adjust the IO Recovery Time to 4
825         cycles.
826    
827       o AGP is disabled by default on some ALi chipsets (ALi1541, ALi1647) to
828         work around severe system stability problems with these chipsets. See
829         the comments for EnableALiAGP in 'nv-reg.h' to force AGP on anyway.
830    
831    
832
833 Q. Using GNOME configuration utilities, I am unable to get a resolution above
834    800x600.
835
836 A. The installation of GNOME provided in operating systems such as Red Hat
837    Enterprise Linux 4 and Solaris 10 Update 2 contain several competing
838    interfaces for specifying resolution:
839    
840    
841        'System Settings' -> 'Display'
842    
843    
844    which will update the X configuration file, and
845    
846    
847        'Applications' -> 'Preferences' -> 'Screen Resolution'
848    
849    
850    which will update the per-user screen resolution using the XRandR
851    extension. Your desktop resolution will be limited to the smaller of the
852    two settings. Be sure to check the setting of each.
853
854
855 Q. X does not restore the VGA console when run on a TV. I get this error
856    message in my X log file:
857    
858    Unable to initialize the X int10 module; the console may not be
859    restored correctly on your TV.
860    
861    
862 A. The NVIDIA X driver uses the X Int10 module to save and restore console
863    state on TV out, and will not be able to restore the console correctly if
864    it cannot use the Int10 module. If you have built the X server yourself,
865    please be sure you have built the Int10 module. If you are using a build of
866    the X server provided by your operating system and are missing the Int10
867    module, contact your operating system distributor.
868
869
870 Q. OpenGL applications don't work, and my X log file contains the error:
871    
872    (EE) NVIDIA(0): Unable to map device node /dev/zero with read, write, and
873    (EE) NVIDIA(0):     execute privileges.  The GLX extension will be disabled
874    (EE) NVIDIA(0):     on this X screen.  Please see the COMMON PROBLEMS
875    (EE) NVIDIA(0):     section in the README for more information.
876    
877    
878 A. The NVIDIA OpenGL driver must be able to map the '/dev/zero' device node
879    with read, write, and execute privileges in order to function correctly.
880    The driver needs this ability to allocate executable memory, which is used
881    for optimizations that require generating code at run-time. Currently, GLX
882    cannot run without these optimizations.
883
884    Check that your '/dev' filesystem is set up correctly. In particular,
885    mounting the '/dev' file system with the 'noexec' option will cause this to
886    happen. If you haven't changed the configuration of your '/dev' filesystem,
887    please contact your operating system distributor.
888
889
890 ______________________________________________________________________________
891
892 Chapter 9. Known Issues
893 ______________________________________________________________________________
894
895 The following problems still exist in this release and are in the process of
896 being resolved.
897
898 Known Issues
899
900 Notebooks
901
902     If you are using a notebook see the "Known Notebook Issues" in Chapter 17.
903
904 FSAA
905
906     When FSAA is enabled (the __GL_FSAA_MODE environment variable is set to a
907     value that enables FSAA and a multisample visual is chosen), the rendering
908     may be corrupted when resizing the window.
909
910 libGL DSO finalizer and pthreads
911
912     When a multithreaded OpenGL application exits, it is possible for libGL's
913     DSO finalizer (also known as the destructor, or "_fini") to be called
914     while other threads are executing OpenGL code. The finalizer needs to free
915     resources allocated by libGL. This can cause problems for threads that are
916     still using these resources. Setting the environment variable
917     "__GL_NO_DSO_FINALIZER" to "1" will work around this problem by forcing
918     libGL's finalizer to leave its resources in place. These resources will
919     still be reclaimed by the operating system when the process exits. Note
920     that the finalizer is also executed as part of dlclose(3), so if you have
921     an application that dlopens(3) and dlcloses(3) libGL repeatedly,
922     "__GL_NO_DSO_FINALIZER" will cause libGL to leak resources until the
923     process exits. Using this option can improve stability in some
924     multithreaded applications, including Java3D applications.
925
926 XVideo and the Composite X extension
927
928     XVideo will not work correctly when Composite is enabled unless using
929     X.Org 7.1 or later. See Chapter 22.
930
931 GLX visuals in Xinerama
932
933     X servers prior to version 1.5.0 have a limitation in the number of
934     visuals that can be available when Xinerama is enabled. Specifically,
935     visuals with ID values over 255 will cause the server to corrupt memory,
936     leading to incorrect behavior or crashes. In some configurations where
937     many GLX features are enabled at once, the number of GLX visuals will
938     exceed this limit. To avoid a crash, the NVIDIA X driver will discard
939     visuals above the limit. To see which visuals are being discarded, run the
940     X server with the -logverbose 6 option and then check the X server log
941     file.
942
943 Some X servers have trouble with multiple GPUs
944
945     Some versions of the X.Org server version 1.5.0 and higher have a bug that
946     causes X to fail with an error similar to the following when there is more
947     than one GPU in the computer:
948     
949     (!!) More than one possible primary device found
950     (II) Primary Device is:
951     (EE) No devices detected.
952     
953     Fatal server error:
954     no screens found
955     
956     You can work around this problem by specifying the bus ID of the device
957     you wish to use. For more details, please search the xorg.conf manual page
958     for "BusID". You can configure the X server with an X screen on each
959     NVIDIA GPU by running:
960     
961     nvidia-xconfig --enable-all-gpus
962     
963     
964     Please see http://bugs.freedesktop.org/show_bug.cgi?id=18321 for more
965     details on this X server problem.
966
967 This section describes problems that will not be fixed. Usually, the source of
968 the problem is beyond the control of NVIDIA. Following is the list of
969 problems:
970
971 Problems that Will Not Be Fixed
972
973 Gigabyte GA-6BX Motherboard
974
975     This motherboard uses a LinFinity regulator on the 3.3 V rail that is only
976     rated to 5 A -- less than the AGP specification, which requires 6 A. When
977     diagnostics or applications are running, the temperature of the regulator
978     rises, causing the voltage to the NVIDIA GPU to drop as low as 2.2 V.
979     Under these circumstances, the regulator cannot supply the current on the
980     3.3 V rail that the NVIDIA GPU requires.
981
982     This problem does not occur when the graphics card has a switching
983     regulator or when an external power supply is connected to the 3.3 V rail.
984
985 VIA KX133 and 694X Chip sets with AGP 2x
986
987     On Athlon motherboards with the VIA KX133 or 694X chip set, such as the
988     ASUS K7V motherboard, NVIDIA drivers default to AGP 2x mode to work around
989     insufficient drive strength on one of the signals.
990
991 Irongate Chip sets with AGP 1x
992
993     AGP 1x transfers are used on Athlon motherboards with the Irongate chipset
994     to work around a problem with signal integrity.
995
996 ALi chipsets, ALi1541 and ALi1647
997
998     On ALi1541 and ALi1647 chipsets, NVIDIA drivers disable AGP to work around
999     timing issues and signal integrity issues. See Chapter 8 for more
1000     information on ALi chipsets.
1001
1002 NV-CONTROL versions 1.8 and 1.9
1003
1004     Version 1.8 of the NV-CONTROL X Extension introduced target types for
1005     setting and querying attributes as well as receiving event notification on
1006     targets. Targets are objects like X Screens, GPUs and G-Sync devices.
1007     Previously, all attributes were described relative to an X Screen. These
1008     new bits of information (target type and target id) were packed in a
1009     non-compatible way in the protocol stream such that addressing X Screen 1
1010     or higher would generate an X protocol error when mixing NV-CONTROL client
1011     and server versions.
1012
1013     This packing problem has been fixed in the NV-CONTROL 1.10 protocol,
1014     making it possible for the older (1.7 and prior) clients to communicate
1015     with NV-CONTROL 1.10 servers. Furthermore, the NV-CONTROL 1.10 client
1016     library has been updated to accommodate the target protocol packing bug
1017     when communicating with a 1.8 or 1.9 NV-CONTROL server. This means that
1018     the NV-CONTROL 1.10 client library should be able to communicate with any
1019     version of the NV-CONTROL server.
1020
1021     NVIDIA recommends that NV-CONTROL client applications relink with version
1022     1.10 or later of the NV-CONTROL client library (libXNVCtrl.a, in the
1023     nvidia-settings-1.0.tar.gz tarball). The version of the client library can
1024     be determined by checking the NV_CONTROL_MAJOR and NV_CONTROL_MINOR
1025     definitions in the accompanying nv_control.h.
1026
1027     The only web released NVIDIA FreeBSD driver that is affected by this
1028     problem (i.e., the only driver to use either version 1.8 or 1.9 of the
1029     NV-CONTROL X extension) is 1.0-8756.
1030
1031 CPU throttling reducing memory bandwidth on IGP systems
1032
1033     For some models of CPU, the CPU throttling technology may affect not only
1034     CPU core frequency, but also memory frequency/bandwidth. On systems using
1035     integrated graphics, any reduction in memory bandwidth will affect the GPU
1036     as well as the CPU. This can negatively affect applications that use
1037     significant memory bandwidth, such as video decoding using VDPAU, or
1038     certain OpenGL operations. This may cause such applications to run with
1039     lower performance than desired.
1040
1041     To work around this problem, NVIDIA recommends configuring your CPU
1042     throttling implementation to avoid reducing memory bandwidth. This may be
1043     as simple as setting a certain minimum frequency for the CPU.
1044
1045     Depending on your operating system and/or distribution, this may be as
1046     simple as writing to a configuration file in the /sys or /proc
1047     filesystems, or other system configuration file. Please read, or search
1048     the Internet for, documentation regarding CPU throttling on your operating
1049     system.
1050
1051 VDPAU initialization failures on supported GPUs
1052
1053     If VDPAU gives the VDP_STATUS_NO_IMPLEMENTATION error message on a GPU
1054     which was labeled or specified as supporting PureVideo or PureVideo HD,
1055     one possible reason is a hardware defect. After ruling out any other
1056     software problems, NVIDIA recommends returning the GPU to the manufacturer
1057     for a replacement.
1058
1059 Some applications, such as Quake 3, crash after querying the OpenGL extension
1060 string
1061
1062     Some applications have bugs that are triggered when the extension string
1063     is longer than a certain size. As more features are added to the driver,
1064     the length of this string increases and can trigger these sorts of bugs.
1065
1066     You can limit the extensions listed in the OpenGL extension string to the
1067     ones that appeared in a particular version of the driver by setting the
1068     "__GL_ExtensionStringVersion" environment variable to a particular version
1069     number. For example,
1070     
1071     __GL_ExtensionStringVersion=17700 quake3
1072     
1073     will run Quake 3 with the extension string that appeared in the 177.*
1074     driver series. Limiting the size of the extension string can work around
1075     this sort of application bug.
1076
1077
1078 ______________________________________________________________________________
1079
1080 Chapter 10. Specifying OpenGL Environment Variable Settings
1081 ______________________________________________________________________________
1082
1083
1084 10A. FULL SCENE ANTIALIASING
1085
1086 Antialiasing is a technique used to smooth the edges of objects in a scene to
1087 reduce the jagged "stairstep" effect that sometimes appears. By setting the
1088 appropriate environment variable, you can enable full-scene antialiasing in
1089 any OpenGL application on these GPUs.
1090
1091 Several antialiasing methods are available and you can select between them by
1092 setting the __GL_FSAA_MODE environment variable appropriately. Note that
1093 increasing the number of samples taken during FSAA rendering may decrease
1094 performance.
1095
1096 To see the available values for __GL_FSAA_MODE along with their descriptions,
1097 run:
1098
1099     nvidia-settings --query=fsaa --verbose
1100
1101 The __GL_FSAA_MODE environment variable uses the same integer values that are
1102 used to configure FSAA through nvidia-settings and the NV-CONTROL X extension.
1103 In other words, these two commands are equivalent:
1104
1105     export __GL_FSAA_MODE=5
1106
1107     nvidia-settings --assign FSAA=5
1108
1109 Note that there are three FSAA related configuration attributes (FSAA,
1110 FSAAAppControlled and FSAAAppEnhanced) which together determine how a GL
1111 application will behave. If FSAAAppControlled is 1, the FSAA specified through
1112 nvidia-settings will be ignored, in favor of what the application requests
1113 through FBConfig selection. If FSAAAppControlled is 0 but FSAAAppEnhanced is
1114 1, then the FSAA value specified through nvidia-settings will only be applied
1115 if the application selected a multisample FBConfig.
1116
1117 Therefore, to be completely correct, the nvidia-settings command line to
1118 unconditionally assign FSAA should be:
1119
1120     nvidia-settings --assign FSAA=5 --assign FSAAAppControlled=0 --assign
1121 FSAAAppEnhanced=0
1122
1123
1124
1125 10B. ANISOTROPIC TEXTURE FILTERING
1126
1127 Automatic anisotropic texture filtering can be enabled by setting the
1128 environment variable __GL_LOG_MAX_ANISO. The possible values are:
1129
1130     __GL_LOG_MAX_ANISO                    Filtering Type
1131     ----------------------------------    ----------------------------------
1132     0                                     No anisotropic filtering
1133     1                                     2x anisotropic filtering
1134     2                                     4x anisotropic filtering
1135     3                                     8x anisotropic filtering
1136     4                                     16x anisotropic filtering
1137
1138 4x and greater are only available on GeForce3 or newer GPUs; 16x is only
1139 available on GeForce 6800 or newer GPUs.
1140
1141
1142 10C. VBLANK SYNCING
1143
1144 Setting the environment variable __GL_SYNC_TO_VBLANK to a non-zero value will
1145 force glXSwapBuffers to sync to your monitor's vertical refresh (perform a
1146 swap only during the vertical blanking period).
1147
1148 When using __GL_SYNC_TO_VBLANK with TwinView, OpenGL can only sync to one of
1149 the display devices; this may cause tearing corruption on the display device
1150 to which OpenGL is not syncing. You can use the environment variable
1151 __GL_SYNC_DISPLAY_DEVICE to specify to which display device OpenGL should
1152 sync. You should set this environment variable to the name of a display
1153 device; for example "CRT-1". Look for the line "Connected display device(s):"
1154 in your X log file for a list of the display devices present and their names.
1155 You may also find it useful to review Chapter 12 "Configuring Twinview" and
1156 the section on Ensuring Identical Mode Timings in Chapter 18.
1157
1158
1159 10D. CONTROLLING THE SORTING OF OPENGL FBCONFIGS
1160
1161 The NVIDIA GLX implementation sorts FBConfigs returned by glXChooseFBConfig()
1162 as described in the GLX specification. To disable this behavior set
1163 __GL_SORT_FBCONFIGS to 0 (zero), then FBConfigs will be returned in the order
1164 they were received from the X server. To examine the order in which FBConfigs
1165 are returned by the X server run:
1166
1167 nvidia-settings --glxinfo
1168
1169 This option may be be useful to work around problems in which applications
1170 pick an unexpected FBConfig.
1171
1172
1173 10E. OPENGL YIELD BEHAVIOR
1174
1175 There are several cases where the NVIDIA OpenGL driver needs to wait for
1176 external state to change before continuing. To avoid consuming too much CPU
1177 time in these cases, the driver will sometimes yield so the kernel can
1178 schedule other processes to run while the driver waits. For example, when
1179 waiting for free space in a command buffer, if the free space has not become
1180 available after a certain number of iterations, the driver will yield before
1181 it continues to loop.
1182
1183 By default, the driver calls sched_yield() to do this. However, this can cause
1184 the calling process to be scheduled out for a relatively long period of time
1185 if there are other, same-priority processes competing for time on the CPU. One
1186 example of this is when an OpenGL-based composite manager is moving and
1187 repainting a window and the X server is trying to update the window as it
1188 moves, which are both CPU-intensive operations.
1189
1190 You can use the __GL_YIELD environment variable to work around these
1191 scheduling problems. This variable allows the user to specify what the driver
1192 should do when it wants to yield. The possible values are:
1193
1194     __GL_YIELD         Behavior
1195     ---------------    ------------------------------------------------------
1196     <unset>            By default, OpenGL will call sched_yield() to yield.
1197     "NOTHING"          OpenGL will never yield.
1198     "USLEEP"           OpenGL will call usleep(0) to yield.
1199
1200
1201
1202 10F. CONTROLLING WHICH OPENGL FBCONFIGS ARE AVAILABLE
1203
1204 The NVIDIA GLX implementation will hide FBConfigs that are associated with a
1205 32-bit ARGB visual when the XLIB_SKIP_ARGB_VISUALS environment variable is
1206 defined. This matches the behavior of libX11, which will hide those visuals
1207 from XGetVisualInfo and XMatchVisualInfo. This environment variable is useful
1208 when applications are confused by the presence of these FBConfigs.
1209
1210
1211 10G. USING UNOFFICIAL GLX PROTOCOL
1212
1213 By default, the NVIDIA GLX implementation will not expose GLX protocol for GL
1214 commands if the protocol is not considered complete. Protocol could be
1215 considered incomplete for a number of reasons. The implementation could still
1216 be under development and contain known bugs, or the protocol specification
1217 itself could be under development or going through review. If users would like
1218 to test the client-side portion of such protocol when using indirect
1219 rendering, they can set the __GL_ALLOW_UNOFFICIAL_PROTOCOL environment
1220 variable to a non-zero value before starting their GLX application. When an
1221 NVIDIA GLX server is used, the related X Config option
1222 "AllowUnofficialGLXProtocol" will need to be set as well to enable support in
1223 the server.
1224
1225 ______________________________________________________________________________
1226
1227 Chapter 11. Configuring AGP
1228 ______________________________________________________________________________
1229
1230 There are several choices for configuring the NVIDIA kernel module's use of
1231 AGP: you can choose to either use the NVIDIA AGP module (NVAGP), or the AGP
1232 module that comes with the FreeBSD kernel (AGPGART). This is controlled
1233 through the "NvAGP" option in your X config file:
1234
1235     Option "NvAgp" "0"  ... disables AGP support
1236     Option "NvAgp" "1"  ... use NVAGP, if possible
1237     Option "NvAgp" "2"  ... use AGPGART, if possible
1238     Option "NvAGP" "3"  ... try AGPGART; if that fails, try NVAGP
1239
1240 Unlike other operating systems such as Linux, this option is not the only
1241 controlling factor at this point; because of known problems, 'nvidia.ko' is
1242 built without support for FreeBSD's AGP driver by default. This behavior can
1243 be changed, see 'nv-freebsd.h' for details.
1244
1245 Note that if you built nvidia.ko with support for the FreeBSD driver it will
1246 not load unless 'agp.ko' is loaded. 'agp.ko' is special in that you can not
1247 load it after the system boot is complete, you need to append the following
1248 line to '/boot/loader.conf' to make sure it is pre-loaded:
1249
1250     # -- load FreeBSD AGP GART driver -- #
1251     agp_load="YES"
1252
1253 Also note that if 'agp.ko' is loaded, it could conflict with the NVIDIA AGP
1254 GART driver (NvAGP), resulting in stability problems; for this reason, the
1255 NVIDIA driver will abort NvAGP initialization when it detects 'agp.ko'.
1256
1257 Current FreeBSD releases are shipped with 'agp.ko' built into the kernel; in
1258 order to allow NvAGP to work, the kernel can be rebuilt without 'device agp'
1259 or the following entry added to '/boot/device.hints':
1260
1261     hint.agp.0.disabled="1"
1262
1263 When built with support for the FreeBSD AGP driver, 'nvidia.ko' will fall back
1264 to using NvAGP when it doesn't detect 'agp.ko' (this will be the case when
1265 'agp.ko' does not support your AGP chipset or was explicitly disabled with
1266 device hints).
1267
1268 It is highly recommended that you use the NVIDIA AGP driver.
1269
1270 The following AGP chipsets are supported by the NVIDIA AGP driver; for all
1271 other chipsets it is recommended that you use the AGPGART module.
1272
1273     Supported AGP Chipsets
1274     ----------------------------------------------------------------------
1275     Intel 440LX
1276     Intel 440BX
1277     Intel 440GX
1278     Intel 815 ("Solano")
1279     Intel 820 ("Camino")
1280     Intel 830M
1281     Intel 840 ("Carmel")
1282     Intel 845 ("Brookdale")
1283     Intel 845G
1284     Intel 850 ("Tehama")
1285     Intel 855 ("Odem")
1286     Intel 860 ("Colusa")
1287     Intel 865G ("Springdale")
1288     Intel 875P ("Canterwood")
1289     Intel E7205 ("Granite Bay")
1290     Intel E7505 ("Placer")
1291     AMD 751 ("Irongate")
1292     AMD 761 ("IGD4")
1293     AMD 762 ("IGD4 MP")
1294     AMD 8151 ("Lokar")
1295     VIA 8371
1296     VIA 82C694X
1297     VIA KT133
1298     VIA KT266
1299     VIA KT400
1300     VIA P4M266
1301     VIA P4M266A
1302     VIA P4X400
1303     VIA K8T800
1304     VIA K8N800
1305     VIA PT880
1306     VIA KT880
1307     RCC CNB20LE
1308     RCC 6585HE
1309     Micron SAMDDR ("Samurai")
1310     Micron SCIDDR ("Scimitar")
1311     NVIDIA nForce
1312     NVIDIA nForce2
1313     NVIDIA nForce3
1314     ALi 1621
1315     ALi 1631
1316     ALi 1647
1317     ALi 1651
1318     ALi 1671
1319     SiS 630
1320     SiS 633
1321     SiS 635
1322     SiS 645
1323     SiS 646
1324     SiS 648
1325     SiS 648FX
1326     SiS 650
1327     SiS 651
1328     SiS 655
1329     SiS 655FX
1330     SiS 661
1331     SiS 730
1332     SiS 733
1333     SiS 735
1334     SiS 745
1335     SiS 755
1336     ATI RS200M
1337
1338
1339 If you are experiencing AGP stability problems, you should be aware of the
1340 following:
1341
1342 Additional AGP Information
1343
1344 AGP drive strength BIOS setting (Via-based motherboards)
1345
1346     Many Via-based motherboards allow adjusting the AGP drive strength in the
1347     system BIOS. The setting of this option largely affects system stability,
1348     the range between 0xEA and 0xEE seems to work best for NVIDIA hardware.
1349     Setting either nibble to 0xF generally results in severe stability
1350     problems.
1351
1352     If you decide to experiment with this, you need to be aware of the fact
1353     that you are doing so at your own risk and that you may render your system
1354     unbootable with improper settings until you reset the setting to a working
1355     value (w/ a PCI graphics card or by resetting the BIOS to its default
1356     values).
1357
1358 System BIOS version
1359
1360     Make sure you have the latest system BIOS provided by the motherboard
1361     manufacturer.
1362
1363     On ALi1541 and ALi1647 chipsets, NVIDIA drivers disable AGP to work around
1364     timing and signal integrity problems. You can force AGP to be enabled on
1365     these chipsets by setting NVreg_EnableALiAGP to 1. Note that this may
1366     cause the system to become unstable.
1367
1368     Early system BIOS revisions for the ASUS A7V8X-X KT400 motherboard
1369     misconfigure the chipset when an AGP 2.x graphics card is installed; if X
1370     hangs on your ASUS KT400 system with NvAGP enabled and the installed
1371     graphics card is not an AGP 8x device, make sure that you have the latest
1372     system BIOS installed.
1373
1374
1375 ______________________________________________________________________________
1376
1377 Chapter 12. Configuring TwinView
1378 ______________________________________________________________________________
1379
1380 TwinView is a mode of operation where two display devices (digital flat
1381 panels, CRTs, and TVs) can display the contents of a single X screen in any
1382 arbitrary configuration. This method of multiple monitor use has several
1383 distinct advantages over other techniques (such as Xinerama):
1384
1385
1386    o A single X screen is used. The NVIDIA driver conceals all information
1387      about multiple display devices from the X server; as far as X is
1388      concerned, there is only one screen.
1389
1390    o Both display devices share one frame buffer. Thus, all the functionality
1391      present on a single display (e.g., accelerated OpenGL) is available with
1392      TwinView.
1393
1394    o No additional overhead is needed to emulate having a single desktop.
1395
1396
1397 If you are interested in using each display device as a separate X screen, see
1398 Chapter 14.
1399
1400
1401 12A. X CONFIG TWINVIEW OPTIONS
1402
1403 To enable TwinView, you must specify the following option in the Device
1404 section of your X Config file:
1405
1406     Option "TwinView"
1407
1408 You may also use any of the following options, though they are not required:
1409
1410     Option "MetaModes"                "<list of MetaModes>"
1411
1412     Option "SecondMonitorHorizSync"   "<hsync range(s)>"
1413     Option "SecondMonitorVertRefresh" "<vrefresh range(s)>"
1414
1415     Option "HorizSync"                "<hsync range(s)>"
1416     Option "VertRefresh"              "<vrefresh range(s)>"
1417
1418     Option "TwinViewOrientation"      "<relationship of head 1 to head 0>"
1419     Option "ConnectedMonitor"         "<list of connected display devices>"
1420
1421 See detailed descriptions of each option below.
1422
1423 Alternatively, you can enable TwinView by running
1424
1425     nvidia-xconfig --twinview
1426
1427 and restarting your X server. Or, you can configure TwinView dynamically in
1428 the "Display Configuration" page in nvidia-settings.
1429
1430
1431 12B. DETAILED DESCRIPTION OF OPTIONS
1432
1433
1434 TwinView
1435
1436     This option is required to enable TwinView; without it, all other TwinView
1437     related options are ignored.
1438
1439 SecondMonitorHorizSync
1440 SecondMonitorVertRefresh
1441
1442     You specify the constraints of the second monitor through these options.
1443     The values given should follow the same convention as the "HorizSync" and
1444     "VertRefresh" entries in the Monitor section. As the XF86Config man page
1445     explains it: the ranges may be a comma separated list of distinct values
1446     and/or ranges of values, where a range is given by two distinct values
1447     separated by a dash. The HorizSync is given in kHz, and the VertRefresh is
1448     given in Hz.
1449
1450     These options are normally not needed: by default, the NVIDIA X driver
1451     retrieves the valid frequency ranges from the display device's EDID (see
1452     Appendix B for a description of the "UseEdidFreqs" option). The
1453     SecondMonitor options will override any frequency ranges retrieved from
1454     the EDID.
1455
1456 HorizSync
1457 VertRefresh
1458
1459     Which display device is "first" and which is "second" is often unclear.
1460     For this reason, you may use these options instead of the SecondMonitor
1461     versions. With these options, you can specify a semicolon-separated list
1462     of frequency ranges, each optionally prepended with a display device name.
1463     For example:
1464     
1465         Option "HorizSync"   "CRT-0: 50-110;  DFP-0: 40-70"
1466         Option "VertRefresh" "CRT-0: 60-120;  DFP-0: 60"
1467     
1468     See Appendix C on Display Device Names for more information.
1469
1470     These options are normally not needed: by default, the NVIDIA X driver
1471     retrieves the valid frequency ranges from the display device's EDID (see
1472     Appendix B for a description of the "UseEdidFreqs" option). The
1473     "HorizSync" and "VertRefresh" options override any frequency ranges
1474     retrieved from the EDID or any frequency ranges specified with the
1475     "SecondMonitorHorizSync" and "SecondMonitorVertRefresh" options.
1476
1477 MetaModes
1478
1479     MetaModes are "containers" that store information about what mode should
1480     be used on each display device at any given time. Even if only one display
1481     device is actively in use, the NVIDIA X driver always uses a MetaMode to
1482     encapsulate the mode information per display device, so that it can
1483     support dynamically enabling TwinView.
1484
1485     Multiple MetaModes list the combinations of modes and the sequence in
1486     which they should be used. When the NVIDIA driver tells X what modes are
1487     available, it is really the minimal bounding box of the MetaMode that is
1488     communicated to X, while the "per display device" mode is kept internal to
1489     the NVIDIA driver. In MetaMode syntax, modes within a MetaMode are comma
1490     separated, and multiple MetaModes are separated by semicolons. For
1491     example:
1492     
1493         "<mode name 0>, <mode name 1>; <mode name 2>, <mode name 3>"
1494     
1495     Where <mode name 0> is the name of the mode to be used on display device 0
1496     concurrently with <mode name 1> used on display device 1. A mode switch
1497     will then cause <mode name 2> to be used on display device 0 and <mode
1498     name 3> to be used on display device 1. Here is an example MetaMode:
1499     
1500         Option "MetaModes" "1280x1024,1280x1024; 1024x768,1024x768"
1501     
1502     If you want a display device to not be active for a certain MetaMode, you
1503     can use the mode name "NULL", or simply omit the mode name entirely:
1504     
1505         "1600x1200, NULL; NULL, 1024x768"
1506     
1507     or
1508     
1509         "1600x1200; , 1024x768"
1510     
1511     Optionally, mode names can be followed by offset information to control
1512     the positioning of the display devices within the virtual screen space;
1513     e.g.,
1514     
1515         "1600x1200 +0+0, 1024x768 +1600+0; ..."
1516     
1517     Offset descriptions follow the conventions used in the X "-geometry"
1518     command line option; i.e., both positive and negative offsets are valid,
1519     though negative offsets are only allowed when a virtual screen size is
1520     explicitly given in the X config file.
1521
1522     When no offsets are given for a MetaMode, the offsets will be computed
1523     following the value of the TwinViewOrientation option (see below). Note
1524     that if offsets are given for any one of the modes in a single MetaMode,
1525     then offsets will be expected for all modes within that single MetaMode;
1526     in such a case offsets will be assumed to be +0+0 when not given.
1527
1528     When not explicitly given, the virtual screen size will be computed as the
1529     the bounding box of all MetaMode bounding boxes. MetaModes with a bounding
1530     box larger than an explicitly given virtual screen size will be discarded.
1531
1532     A MetaMode string can be further modified with a "Panning Domain"
1533     specification; e.g.,
1534     
1535         "1024x768 @1600x1200, 800x600 @1600x1200"
1536     
1537     A panning domain is the area in which a display device's viewport will be
1538     panned to follow the mouse. Panning actually happens on two levels with
1539     TwinView: first, an individual display device's viewport will be panned
1540     within its panning domain, as long as the viewport is contained by the
1541     bounding box of the MetaMode. Once the mouse leaves the bounding box of
1542     the MetaMode, the entire MetaMode (i.e., all display devices) will be
1543     panned to follow the mouse within the virtual screen, unless the
1544     "PanAllDisplays" X configuration option is disabled. Note that individual
1545     display devices' panning domains default to being clamped to the position
1546     of the display devices' viewports, thus the default behavior is just that
1547     viewports remain "locked" together and only perform the second type of
1548     panning.
1549
1550     The most beneficial use of panning domains is probably to eliminate dead
1551     areas -- regions of the virtual screen that are inaccessible due to
1552     display devices with different resolutions. For example:
1553     
1554         "1600x1200, 1024x768"
1555     
1556     produces an inaccessible region below the 1024x768 display. Specifying a
1557     panning domain for the second display device:
1558     
1559         "1600x1200, 1024x768 @1024x1200"
1560     
1561     provides access to that dead area by allowing you to pan the 1024x768
1562     viewport up and down in the 1024x1200 panning domain.
1563
1564     Offsets can be used in conjunction with panning domains to position the
1565     panning domains in the virtual screen space (note that the offset
1566     describes the panning domain, and only affects the viewport in that the
1567     viewport must be contained within the panning domain). For example, the
1568     following describes two modes, each with a panning domain width of 1900
1569     pixels, and the second display is positioned below the first:
1570     
1571         "1600x1200 @1900x1200 +0+0, 1024x768 @1900x768 +0+1200"
1572     
1573     Because it is often unclear which mode within a MetaMode will be used on
1574     each display device, mode descriptions within a MetaMode can be prepended
1575     with a display device name. For example:
1576     
1577         "CRT-0: 1600x1200,  DFP-0: 1024x768"
1578     
1579     If no MetaMode string is specified, then the X driver uses the modes
1580     listed in the relevant "Display" subsection, attempting to place matching
1581     modes on each display device.
1582
1583 TwinViewOrientation
1584
1585     This option controls the positioning of the second display device relative
1586     to the first within the virtual X screen, when offsets are not explicitly
1587     given in the MetaModes. The possible values are:
1588     
1589         "RightOf"  (the default)
1590         "LeftOf"
1591         "Above"
1592         "Below"
1593         "Clone"
1594     
1595     When "Clone" is specified, both display devices will be assigned an offset
1596     of 0,0.
1597
1598     Because it is often unclear which display device is "first" and which is
1599     "second", TwinViewOrientation can be confusing. You can further clarify
1600     the TwinViewOrientation with display device names to indicate which
1601     display device is positioned relative to which display device. For
1602     example:
1603     
1604         "CRT-0 LeftOf DFP-0"
1605     
1606     
1607 ConnectedMonitor
1608
1609     With this option you can override what the NVIDIA kernel module detects is
1610     connected to your graphics card. This may be useful, for example, if any
1611     of your display devices do not support detection using Display Data
1612     Channel (DDC) protocols. Valid values are a comma-separated list of
1613     display device names; for example:
1614     
1615         "CRT-0, CRT-1"
1616         "CRT"
1617         "CRT-1, DFP-0"
1618     
1619     WARNING: this option overrides what display devices are detected by the
1620     NVIDIA kernel module, and is very seldom needed. You really only need this
1621     if a display device is not detected, either because it does not provide
1622     DDC information, or because it is on the other side of a KVM
1623     (Keyboard-Video-Mouse) switch. In most other cases, it is best not to
1624     specify this option.
1625
1626
1627 Just as in all X config entries, spaces are ignored and all entries are case
1628 insensitive.
1629
1630
1631 12C. DYNAMIC TWINVIEW
1632
1633 Using the NV-CONTROL X extension, the display devices in use by an X screen,
1634 the mode pool for each display device, and the MetaModes for each X screen can
1635 be dynamically manipulated. The "Display Configuration" page in
1636 nvidia-settings uses this functionality to modify the MetaMode list and then
1637 uses XRandR to switch between MetaModes. This gives the ability to dynamically
1638 configure TwinView.
1639
1640 The details of how this works are documented in the nv-control-dpy.c sample
1641 NV-CONTROL client in the nvidia-settings source tarball.
1642
1643 Because the NVIDIA X driver can now transition into and out of TwinView
1644 dynamically, MetaModes are always used internally by the NVIDIA X driver,
1645 regardless of how many display devices are currently in use by the X screen
1646 and regardless of whether the TwinView X configuration option was specified.
1647
1648 One implication of this implementation is that each MetaMode must be uniquely
1649 identifiable to the XRandR X extension. Unfortunately, two MetaModes with the
1650 same bounding box will look the same to XRandR. For example, two MetaModes
1651 with different orientations:
1652
1653     "CRT: 1600x1200 +0+0, DFP: 1600x1200 +1600+0"
1654     "CRT: 1600x1200 +1600+0, DFP: 1600x1200 +0+0"
1655
1656 will look identical to the XRandR or XF86VidMode X extensions, because they
1657 have the same total size (3200x1200), and nvidia-settings would not be able to
1658 use XRandR to switch between these MetaModes. To work around this limitation,
1659 the NVIDIA X driver "lies" about the refresh rate of each MetaMode, using the
1660 refresh rate of the MetaMode as a unique identifier.
1661
1662 The XRandR extension is currently being redesigned by the X.Org community, so
1663 the refresh rate workaround may be removed at some point in the future. This
1664 workaround can also be disabled by setting the "DynamicTwinView" X
1665 configuration option to FALSE, which will disable NV-CONTROL support for
1666 manipulating MetaModes, but will cause the XRandR and XF86VidMode visible
1667 refresh rate to be accurate.
1668
1669
1670 FREQUENTLY ASKED TWINVIEW QUESTIONS
1671
1672 Q. Nothing gets displayed on my second monitor; what is wrong?
1673
1674 A. Monitors that do not support monitor detection using Display Data Channel
1675    (DDC) protocols (this includes most older monitors) are not detectable by
1676    your NVIDIA card. You need to explicitly tell the NVIDIA X driver what you
1677    have connected using the "ConnectedMonitor" option; e.g.,
1678    
1679        Option "ConnectedMonitor" "CRT, CRT"
1680    
1681    
1682
1683 Q. Will window managers be able to appropriately place windows (e.g., avoiding
1684    placing windows across both display devices, or in inaccessible regions of
1685    the virtual desktop)?
1686
1687 A. Yes. The NVIDIA X driver provides a Xinerama extension that X clients (such
1688    as window managers) can use to discover the current TwinView configuration.
1689    Note that the Xinerama protocol provides no way to notify clients when a
1690    configuration change occurs, so if you modeswitch to a different MetaMode,
1691    your window manager will still think you have the previous configuration.
1692    Using the Xinerama extension, in conjunction with the XF86VidMode extension
1693    to get modeswitch events, window managers should be able to determine the
1694    TwinView configuration at any given time.
1695
1696    Unfortunately, the data provided by XineramaQueryScreens() appears to
1697    confuse some window managers; to work around such broken window mangers,
1698    you can disable communication of the TwinView screen layout with the
1699    "NoTwinViewXineramaInfo" X config Option (see Appendix B for details).
1700
1701    The order that display devices are reported in via the TwinView Xinerama
1702    information can be configured with the TwinViewXineramaInfoOrder X
1703    configuration option.
1704
1705    Be aware that the NVIDIA driver cannot provide the Xinerama extension if
1706    the X server's own Xinerama extension is being used. Explicitly specifying
1707    Xinerama in the X config file or on the X server commandline will prohibit
1708    NVIDIA's Xinerama extension from installing, so make sure that the X
1709    server's log file does not contain:
1710    
1711        (++) Xinerama: enabled
1712    
1713    if you want the NVIDIA driver to be able to provide the Xinerama extension
1714    while in TwinView.
1715
1716    Another solution is to use panning domains to eliminate inaccessible
1717    regions of the virtual screen (see the MetaMode description above).
1718
1719    A third solution is to use two separate X screens, rather than use
1720    TwinView. See Chapter 14.
1721
1722
1723 Q. Why can I not get a resolution of 1600x1200 on the second display device
1724    when using a GeForce2 MX?
1725
1726 A. Because the second display device on the GeForce2 MX was designed to be a
1727    digital flat panel, the Pixel Clock for the second display device is only
1728    150 MHz. This effectively limits the resolution on the second display
1729    device to somewhere around 1280x1024 (for a description of how Pixel Clock
1730    frequencies limit the programmable modes, see the XFree86 Video Timings
1731    HOWTO). This constraint is not present on GeForce4 or GeForce FX GPUs --
1732    the maximum pixel clock is the same on both heads.
1733
1734
1735 Q. Do video overlays work across both display devices?
1736
1737 A. Hardware video overlays only work on the first display device. The current
1738    solution is that blitted video is used instead on TwinView.
1739
1740
1741 Q. How are virtual screen dimensions determined in TwinView?
1742
1743 A. After all requested modes have been validated, and the offsets for each
1744    MetaMode's viewports have been computed, the NVIDIA driver computes the
1745    bounding box of the panning domains for each MetaMode. The maximum bounding
1746    box width and height is then found.
1747
1748    Note that one side effect of this is that the virtual width and virtual
1749    height may come from different MetaModes. Given the following MetaMode
1750    string:
1751    
1752        "1600x1200,NULL; 1024x768+0+0, 1024x768+0+768"
1753    
1754    the resulting virtual screen size will be 1600 x 1536.
1755
1756
1757 Q. Can I play full screen games across both display devices?
1758
1759 A. Yes. While the details of configuration will vary from game to game, the
1760    basic idea is that a MetaMode presents X with a mode whose resolution is
1761    the bounding box of the viewports for that MetaMode. For example, the
1762    following:
1763    
1764        Option "MetaModes" "1024x768,1024x768; 800x600,800x600"
1765        Option "TwinViewOrientation" "RightOf"
1766    
1767    produce two modes: one whose resolution is 2048x768, and another whose
1768    resolution is 1600x600. Games such as Quake 3 Arena use the VidMode
1769    extension to discover the resolutions of the modes currently available. To
1770    configure Quake 3 Arena to use the above MetaMode string, add the following
1771    to your q3config.cfg file:
1772    
1773        seta r_customaspect "1"
1774        seta r_customheight "600"
1775        seta r_customwidth  "1600"
1776        seta r_fullscreen   "1"
1777        seta r_mode         "-1"
1778    
1779    Note that, given the above configuration, there is no mode with a
1780    resolution of 800x600 (remember that the MetaMode "800x600, 800x600" has a
1781    resolution of 1600x600"), so if you change Quake 3 Arena to use a
1782    resolution of 800x600, it will display in the lower left corner of your
1783    screen, with the rest of the screen grayed out. To have single head modes
1784    available as well, an appropriate MetaMode string might be something like:
1785    
1786        "800x600,800x600; 1024x768,NULL; 800x600,NULL; 640x480,NULL"
1787    
1788    More precise configuration information for specific games is beyond the
1789    scope of this document, but the above examples coupled with numerous online
1790    sources should be enough to point you in the right direction.
1791
1792
1793 ______________________________________________________________________________
1794
1795 Chapter 13. Configuring GLX in Xinerama
1796 ______________________________________________________________________________
1797
1798 The NVIDIA FreeBSD Driver supports GLX when Xinerama is enabled on similar
1799 GPUs. The Xinerama extension takes multiple physical X screens (possibly
1800 spanning multiple GPUs), and binds them into one logical X screen. This allows
1801 windows to be dragged between GPUs and to span across multiple GPUs. The
1802 NVIDIA driver supports hardware accelerated OpenGL rendering across all NVIDIA
1803 GPUs when Xinerama is enabled.
1804
1805 To configure Xinerama
1806
1807   1. Configure multiple X screens (refer to the XF86Config(5x) or
1808      xorg.conf(5x) man pages for details).
1809
1810   2. Enable Xinerama by adding the line
1811      
1812          Option "Xinerama" "True"
1813      
1814      to the "ServerFlags" section of your X config file.
1815
1816
1817 Requirements:
1818
1819    o Using identical GPUs is recommended. Some combinations of non-identical,
1820      but similar, GPUs are supported. If a GPU is incompatible with the rest
1821      of a Xinerama desktop then no OpenGL rendering will appear on the screens
1822      driven by that GPU. Rendering will still appear normally on screens
1823      connected to other supported GPUs. In this situation the X log file will
1824      include a message of the form:
1825
1826
1827
1828 (WW) NVIDIA(2): The GPU driving screen 2 is incompatible with the rest of
1829 (WW) NVIDIA(2):      the GPUs composing the desktop.  OpenGL rendering will
1830 (WW) NVIDIA(2):      be disabled on screen 2.
1831
1832
1833
1834    o NVIDIA's GLX implementation only supports Xinerama when physical X screen
1835      0 is driven by the NVIDIA X driver. This is because the X.Org X server
1836      bases the visuals of the logical Xinerama X screen on the visuals of
1837      physical X screen 0.
1838
1839      When physical X screen 0 is not being driven by the NVIDIA X driver and
1840      Xinerama is enabled, then GLX will be disabled. If physical X screens
1841      other than screen 0 are not being driven by the NVIDIA X driver, OpenGL
1842      rendering will be disabled on them.
1843
1844    o Only the intersection of capabilities across all GPUs will be advertised.
1845
1846      The maximum OpenGL viewport size depends on the hardware used, and is
1847      described by the following table. If an OpenGL window is larger than the
1848      maximum viewport, regions beyond the viewport will be blank.
1849      
1850          OpenGL Viewport Maximums in Xinerama
1851          
1852          GeForce GPUs before GeForce 8:      4096 x 4096 pixels
1853          GeForce 8 and newer GPUs:           8192 x 8192 pixels
1854          Quadro:                             as large as the Xinerama
1855                                              desktop
1856      
1857      
1858    o X configuration options that affect GLX operation (e.g.: stereo,
1859      overlays) should be set consistently across all X screens in the X
1860      server.
1861
1862
1863 Known Issues:
1864
1865    o Versions of XFree86 prior to 4.5 and versions of X.Org prior to 6.8.0
1866      lack the required interfaces to properly implement overlays with the
1867      Xinerama extension. On earlier server versions mixing overlays and
1868      Xinerama will result in rendering corruption. If you are using the
1869      Xinerama extension with overlays, it is recommended that you upgrade to
1870      XFree86 4.5, X.Org 6.8.0, or newer.
1871
1872
1873 ______________________________________________________________________________
1874
1875 Chapter 14. Configuring Multiple X Screens on One Card
1876 ______________________________________________________________________________
1877
1878 GPUs that support TwinView (Chapter 12) can also be configured to treat each
1879 connected display device as a separate X screen.
1880
1881 While there are several disadvantages to this approach as compared to TwinView
1882 (e.g.: windows cannot be dragged between X screens, hardware accelerated
1883 OpenGL cannot span the two X screens), it does offer several advantages over
1884 TwinView:
1885
1886    o If each display device is a separate X screen, then properties that may
1887      vary between X screens may vary between displays (e.g.: depth, root
1888      window size, etc).
1889
1890    o Hardware that can only be used on one display at a time (e.g.: video
1891      overlays, hardware accelerated RGB overlays), and which consequently
1892      cannot be used at all when in TwinView, can be exposed on the first X
1893      screen when each display is a separate X screen.
1894
1895    o TwinView is a fairly new feature. X has historically used one screen per
1896      display device.
1897
1898
1899 To configure two separate X screens to share one graphics card, here is what
1900 you will need to do:
1901
1902 First, create two separate Device sections, each listing the BusID of the
1903 graphics card to be shared and listing the driver as "nvidia", and assign each
1904 a separate screen:
1905
1906     Section "Device"
1907         Identifier  "nvidia0"
1908         Driver      "nvidia"
1909         # Edit the BusID with the location of your graphics card
1910         BusID       "PCI:2:0:0"
1911         Screen      0
1912     EndSection
1913
1914     Section "Device"
1915         Identifier  "nvidia1"
1916         Driver      "nvidia"
1917         # Edit the BusID with the location of your graphics card
1918         BusId       "PCI:2:0:0"
1919         Screen      1
1920     EndSection
1921
1922 Then, create two Screen sections, each using one of the Device sections:
1923
1924     Section "Screen"
1925         Identifier  "Screen0"
1926         Device      "nvidia0"
1927         Monitor     "Monitor0"
1928         DefaultDepth 24
1929         Subsection "Display"
1930             Depth       24
1931             Modes       "1600x1200" "1024x768" "800x600" "640x480" 
1932         EndSubsection
1933     EndSection
1934
1935     Section "Screen"
1936         Identifier  "Screen1"
1937         Device      "nvidia1"
1938         Monitor     "Monitor1"
1939         DefaultDepth 24
1940         Subsection "Display"
1941             Depth       24
1942             Modes       "1600x1200" "1024x768" "800x600" "640x480" 
1943         EndSubsection
1944     EndSection
1945
1946 (Note: You'll also need to create a second Monitor section) Finally, update
1947 the ServerLayout section to use and position both Screen sections:
1948
1949     Section "ServerLayout"
1950         ...
1951         Screen         0 "Screen0" 
1952         Screen         1 "Screen1" leftOf "Screen0"
1953         ...
1954     EndSection
1955
1956 For further details, refer to the XF86Config(5x) or xorg.conf(5x) man pages.
1957
1958 ______________________________________________________________________________
1959
1960 Chapter 15. Configuring TV-Out
1961 ______________________________________________________________________________
1962
1963 NVIDIA GPU-based graphics cards with a TV-Out connector can use a television
1964 as another display device (the same way that it would use a CRT or digital
1965 flat panel). The TV can be used by itself, or in conjunction with another
1966 display device in a TwinView or multiple X screen configuration. If a TV is
1967 the only display device connected to your graphics card, it will be used as
1968 the primary display when you boot your system (i.e. the console will come up
1969 on the TV just as if it were a CRT).
1970
1971 The NVIDIA X driver populates the mode pool for the TV with all the mode sizes
1972 that the driver supports with the given TV standard and the TV encoder on the
1973 graphics card. These modes are given names that correspond to their
1974 resolution; e.g., "800x600".
1975
1976 Because these TV modes only depend on the TV encoder and the TV standard, TV
1977 modes do not go through normal mode validation. The X configuration options
1978 HorizSync and VertRefresh are not used for TV mode validation.
1979
1980 Additionally, the NVIDIA driver contains a hardcoded list of mode sizes that
1981 it can drive for each combination of TV encoder and TV standard. Therefore,
1982 custom modelines in your X configuration file are ignored for TVs.
1983
1984 To use your TV with X, there are several relevant X configuration options:
1985
1986    o The Modes in the screen section of your X configuration file; you can use
1987      these to request any of the modes in the mode pool which the X driver
1988      created for this combination of TV standard and TV encoder. Examples
1989      include "640x480" and "800x600". If in doubt, use "nvidia-auto-select".
1990
1991    o The "TVStandard" option should be added to your screen section; valid
1992      values are:
1993      
1994          TVStandard       Description
1995          -------------    --------------------------------------------------
1996          "PAL-B"          used in Belgium, Denmark, Finland, Germany,
1997                           Guinea, Hong Kong, India, Indonesia, Italy,
1998                           Malaysia, The Netherlands, Norway, Portugal,
1999                           Singapore, Spain, Sweden, and Switzerland
2000          "PAL-D"          used in China and North Korea
2001          "PAL-G"          used in Denmark, Finland, Germany, Italy,
2002                           Malaysia, The Netherlands, Norway, Portugal,
2003                           Spain, Sweden, and Switzerland
2004          "PAL-H"          used in Belgium
2005          "PAL-I"          used in Hong Kong and The United Kingdom
2006          "PAL-K1"         used in Guinea
2007          "PAL-M"          used in Brazil
2008          "PAL-N"          used in France, Paraguay, and Uruguay
2009          "PAL-NC"         used in Argentina
2010          "NTSC-J"         used in Japan
2011          "NTSC-M"         used in Canada, Chile, Colombia, Costa Rica,
2012                           Ecuador, Haiti, Honduras, Mexico, Panama, Puerto
2013                           Rico, South Korea, Taiwan, United States of
2014                           America, and Venezuela
2015          "HD480i"         480 line interlaced
2016          "HD480p"         480 line progressive
2017          "HD720p"         720 line progressive
2018          "HD1080i"        1080 line interlaced
2019          "HD1080p"        1080 line progressive
2020          "HD576i"         576 line interlace
2021          "HD576p"         576 line progressive
2022      
2023      The line in your X config file should be something like:
2024      
2025          Option "TVStandard" "NTSC-M"
2026      
2027      If you do not specify a TVStandard, or you specify an invalid value, the
2028      default "NTSC-M" will be used. Note: if your country is not in the above
2029      list, select the country closest to your location.
2030
2031    o The "UseDisplayDevice" option can be used if there are multiple display
2032      devices connected, and you want the connected TV to be used instead of
2033      the connected CRTs and/or DFPs. E.g.,
2034      
2035          Option "UseDisplayDevice" "TV"
2036      
2037      Using the "UseDisplayDevice" option, rather than the "ConnectedMonitor"
2038      option, is recommended.
2039
2040    o The "TVOutFormat" option can be used to force the output format. Without
2041      this option, the driver autodetects the output format. Unfortunately, it
2042      does not always do this correctly. The output format can be forced with
2043      the "TVOutFormat" option; valid values are:
2044      
2045          TVOutFormat            Description            Supported TV
2046                                                        standards
2047          -------------------    -------------------    -------------------
2048          "AUTOSELECT"           The driver             PAL, NTSC, HD
2049                                 autodetects the    
2050                                 output format      
2051                                 (default value).   
2052          "COMPOSITE"            Force Composite        PAL, NTSC
2053                                 output format      
2054          "SVIDEO"               Force S-Video          PAL, NTSC
2055                                 output format      
2056          "COMPONENT"            Force Component        HD
2057                                 output format, also
2058                                 called YPbPr       
2059          "SCART"                Force Scart output     PAL, NTSC
2060                                 format, also called
2061                                 Peritel            
2062      
2063      The line in your X config file should be something like:
2064      
2065          Option "TVOutFormat" "SVIDEO"
2066      
2067      
2068    o The "TVOverScan" option can be used to enable Overscan, when the TV
2069      encoder supports it. Valid values are decimal values in the range 1.0
2070      (which means overscan as much as possible: make the image as large as
2071      possible) and 0.0 (which means disable overscanning: make the image as
2072      small as possible). Overscanning is disabled (0.0) by default.
2073
2074 The NVIDIA X driver may not restore the console correctly with XFree86
2075 versions older than 4.3 when the console is a TV. This is due to binary
2076 incompatibilities between XFree86 int10 modules. If you use a TV as your
2077 console it is recommended that you upgrade to XFree86 4.3 or later.
2078
2079 ______________________________________________________________________________
2080
2081 Chapter 16. Using the XRandR Extension
2082 ______________________________________________________________________________
2083
2084 X.Org version X11R6.8.1 contains support for the rotation component of the
2085 XRandR extension, which allows screens to be rotated at 90 degree increments.
2086
2087 The driver supports rotation with the extension when 'Option "RandRRotation"'
2088 is enabled in the X config file.
2089
2090 Workstation RGB or CI overlay visuals will function at lower performance and
2091 the video overlay will not be available when RandRRotation is enabled.
2092
2093 You can query the available rotations using the 'xrandr' command line
2094 interface to the RandR extension by running:
2095
2096     xrandr -q
2097
2098 You can set the rotation orientation of the screen by running any of:
2099
2100     xrandr -o left
2101     xrandr -o right
2102     xrandr -o inverted
2103     xrandr -o normal
2104
2105 Rotation may also be set through the nvidia-settings configuration utility in
2106 the "Rotation Settings" panel.
2107
2108 SLI and rotation are incompatible. Rotation will be disabled when SLI is
2109 enabled.
2110
2111 TwinView and rotation can be used together, but rotation affects the entire
2112 desktop. This means that the same rotation setting will apply to both display
2113 devices in a TwinView pair. Note also that the "TwinViewOrientation" option
2114 applies before rotation does. For example, if you have two screens
2115 side-by-side and you want to rotate them, you should set "TwinViewOrientation"
2116 to "Above" or "Below".
2117
2118 ______________________________________________________________________________
2119
2120 Chapter 17. Configuring a Notebook
2121 ______________________________________________________________________________
2122
2123
2124 17A. INSTALLATION AND CONFIGURATION
2125
2126 Installation and configuration of the NVIDIA FreeBSD Driver Set on a notebook
2127 is the same as for any desktop environment, with a few additions, as described
2128 below.
2129
2130
2131 17B. POWER MANAGEMENT
2132
2133 All notebook NVIDIA GPUs support power management, both S3 (also known as
2134 "Standby" or "Suspend to RAM") and S4 (also known as "Hibernate", "Suspend to
2135 Disk" or "SWSUSP"). Power management is system-specific and is dependent upon
2136 all the components in the system; some systems may be more problematic than
2137 other systems.
2138
2139 Most recent notebook NVIDIA GPUs also support PowerMizer, which monitors
2140 application work load to adjust system parameters to deliver the optimal
2141 balance of performance and battery life. However, PowerMizer is only enabled
2142 by default on some notebooks. Please see the known issues below for more
2143 details.
2144
2145
2146 17C. HOTKEY SWITCHING OF DISPLAY DEVICES
2147
2148 Mobile NVIDIA GPUs also have the capacity to react to a display change hotkey
2149 event, toggling between each of the connected display devices and each
2150 possible combination of the connected display devices (note that only 2
2151 display devices may be active at a time).
2152
2153 Hotkey switching dynamically changes the TwinView configuration; a given
2154 hotkey event will indicate which display devices should be in use at that
2155 time, and all MetaModes currently configured on the X screen will be updated
2156 to use the new configuration of display devices.
2157
2158 Another important aspect of hotkey functionality is that you can dynamically
2159 connect and remove display devices to/from your notebook and use the hotkey to
2160 activate and deactivate them without restarting X.
2161
2162 Note that there are two approaches to implementing this hotkey support: ACPI
2163 events and polling.
2164
2165 Most recent notebooks use ACPI events to deliver hotkeys from the System BIOS
2166 to the graphics driver. This is the preferred method of delivering hotkey
2167 events, but is still a new feature under most UNIX platforms and may not
2168 always function correctly.
2169
2170 The polling mechanism requires checking during the vertical blanking interval
2171 for a hotkey status change. It is an older mechanism for handling hotkeys, and
2172 is therefore not supported on all notebooks and is not tested by notebook
2173 manufacturers. It also does not always report the same combinations of display
2174 devices that are reported by ACPI hotkey events.
2175
2176 The NVIDIA FreeBSD Driver will attempt to use ACPI hotkey events, if possible.
2177 In the case that ACPI hotkey event support is not available, the driver will
2178 revert back to trying hotkey polling. In the case that the notebook does not
2179 support hotkey polling, hotkeys will not work. Please see the known issues
2180 section below for more details.
2181
2182 When switching away from X to a virtual terminal, the VGA console will always
2183 be restored to the display device on which it was present when X was started.
2184 Similarly, when switching back into X, the same display device configuration
2185 will be used as when you switched away, regardless of what display change
2186 hotkey activity occurred while the virtual terminal was active.
2187
2188
2189 17D. DOCKING EVENTS
2190
2191 All notebook NVIDIA GPUs support docking, however support may be limited by
2192 the OS or system. There are three types of notebook docking (hot, warm, and
2193 cold), which refer to the state of the system when the docking event occurs.
2194 hot refers to a powered on system with a live desktop, warm refers to a system
2195 that has entered a suspended power management state, and cold refers to a
2196 system that has been powered off. Only warm and cold docking are supported by
2197 the NVIDIA driver.
2198
2199
2200 17E. TWINVIEW
2201
2202 All notebook NVIDIA GPUs support TwinView. TwinView on a notebook can be
2203 configured in the same way as on a desktop computer (refer to Chapter 12 );
2204 note that in a TwinView configuration using the notebook's internal flat panel
2205 and an external CRT, the CRT is the primary display device (specify its
2206 HorizSync and VertRefresh in the Monitor section of your X config file) and
2207 the flat panel is the secondary display device (specify its HorizSync and
2208 VertRefresh through the SecondMonitorHorizSync and SecondMonitorVertRefresh
2209 options).
2210
2211 The "UseEdidFreqs" X config option is enabled by default, so normally you
2212 should not need to specify the "SecondMonitorHorizSync" and
2213 "SecondMonitorVertRefresh" options. See the description of the UseEdidFreqs
2214 option in Appendix B for details).
2215
2216
2217 17F. KNOWN NOTEBOOK ISSUES
2218
2219 There are a few known issues associated with notebooks:
2220
2221    o Display change hotkey switching is not available on all notebooks. In
2222      some cases, the ACPI infrastructure is not fully supported by the NVIDIA
2223      FreeBSD Driver. Work is ongoing to increase the robustness of NVIDIA's
2224      support in this area. Toshiba and Lenovo notebooks are known to be
2225      problematic.
2226
2227    o ACPI Display change hotkey switching is not supported by X.Org X servers
2228      earlier than 1.2.0; see EnableACPIHotkeys in Appendix B for details.
2229
2230    o In many cases, suspending and/or resuming will fail. As mentioned above,
2231      this functionality is very system-specific. There are still many cases
2232      that are problematic. Here are some tips that may help:
2233      
2234         o In some cases, hibernation can have bad interactions with the PCI
2235           Express bus clocks, which can lead to system hangs when entering
2236           hibernation. This issue is still being investigated, but a known
2237           workaround is to leave an OpenGL application running when
2238           hibernating.
2239      
2240      
2241    o On some notebooks, PowerMizer is not enabled by default. This issue is
2242      being investigated, and there is no known workaround.
2243
2244    o ACPI is not currently supported on FreeBSD As a result, ACPI hotkey
2245      events are not supported.
2246
2247    o The video overlay only works on the first display device on which you
2248      started X. For example, if you start X on the internal LCD, run a video
2249      application that uses the video overlay (uses the "Video Overlay" adapter
2250      advertised through the XV extension), and then hotkey switch to add a
2251      second display device, the video will not appear on the second display
2252      device. To work around this, you can either configure the video
2253      application to use the "Video Blitter" adapter advertised through the XV
2254      extension (this is always available), or hotkey switch to the display
2255      device on which you want to use the video overlay *before* starting X.
2256
2257
2258 ______________________________________________________________________________
2259
2260 Chapter 18. Programming Modes
2261 ______________________________________________________________________________
2262
2263 The NVIDIA Accelerated FreeBSD Graphics Driver supports all standard VGA and
2264 VESA modes, as well as most user-written custom mode lines; double-scan modes
2265 are supported on all hardware. Interlaced modes are supported on all GeForce
2266 FX/Quadro FX and newer GPUs, and certain older GPUs; the X log file will
2267 contain a message "Interlaced video modes are supported on this GPU" if
2268 interlaced modes are supported.
2269
2270 To request one or more standard modes for use in X, you can simply add a
2271 "Modes" line such as:
2272
2273     Modes "1600x1200" "1024x768" "640x480"
2274
2275 in the appropriate Display subsection of your X config file (see the
2276 XF86Config(5x) or xorg.conf(5x) man pages for details). Or, the
2277 nvidia-xconfig(1) utility can be used to request additional modes; for
2278 example:
2279
2280     nvidia-xconfig --mode 1600x1200
2281
2282 See the nvidia-xconfig(1) man page for details.
2283
2284
2285 18A. DEPTH, BITS PER PIXEL, AND PITCH
2286
2287 While not directly a concern when programming modes, the bits used per pixel
2288 is an issue when considering the maximum programmable resolution; for this
2289 reason, it is worthwhile to address the confusion surrounding the terms
2290 "depth" and "bits per pixel". Depth is how many bits of data are stored per
2291 pixel. Supported depths are 8, 15, 16, and 24. Most video hardware, however,
2292 stores pixel data in sizes of 8, 16, or 32 bits; this is the amount of memory
2293 allocated per pixel. When you specify your depth, X selects the bits per pixel
2294 (bpp) size in which to store the data. Below is a table of what bpp is used
2295 for each possible depth:
2296
2297     Depth                                 BPP
2298     ----------------------------------    ----------------------------------
2299     8                                     8
2300     15                                    16
2301     16                                    16
2302     24                                    32
2303
2304 Lastly, the "pitch" is how many bytes in the linear frame buffer there are
2305 between one pixel's data, and the data of the pixel immediately below. You can
2306 think of this as the horizontal resolution multiplied by the bytes per pixel
2307 (bits per pixel divided by 8). In practice, the pitch may be more than this
2308 product due to alignment constraints.
2309
2310
2311 18B. MAXIMUM RESOLUTIONS
2312
2313 The NVIDIA Accelerated FreeBSD Graphics Driver and NVIDIA GPU-based graphics
2314 cards support resolutions up to 8192x8192 pixels for the GeForce 8 series and
2315 above, and up to 4096x4096 pixels for the GeForce 7 series and below, though
2316 the maximum resolution your system can support is also limited by the amount
2317 of video memory (see USEFUL FORMULAS for details) and the maximum supported
2318 resolution of your display device (monitor/flat panel/television). Also note
2319 that while use of a video overlay does not limit the maximum resolution or
2320 refresh rate, video memory bandwidth used by a programmed mode does affect the
2321 overlay quality.
2322
2323
2324 18C. USEFUL FORMULAS
2325
2326 The maximum resolution is a function both of the amount of video memory and
2327 the bits per pixel you elect to use:
2328
2329 HR * VR * (bpp/8) = Video Memory Used
2330
2331 In other words, the amount of video memory used is equal to the horizontal
2332 resolution (HR) multiplied by the vertical resolution (VR) multiplied by the
2333 bytes per pixel (bits per pixel divided by eight). Technically, the video
2334 memory used is actually the pitch times the vertical resolution, and the pitch
2335 may be slightly greater than (HR * (bpp/8)) to accommodate the hardware
2336 requirement that the pitch be a multiple of some value.
2337
2338 Note that this is just memory usage for the frame buffer; video memory is also
2339 used by other things, such as OpenGL and pixmap caching.
2340
2341 Another important relationship is that between the resolution, the pixel clock
2342 (also known as the dot clock) and the vertical refresh rate:
2343
2344 RR = PCLK / (HFL * VFL)
2345
2346 In other words, the refresh rate (RR) is equal to the pixel clock (PCLK)
2347 divided by the total number of pixels: the horizontal frame length (HFL)
2348 multiplied by the vertical frame length (VFL) (note that these are the frame
2349 lengths, and not just the visible resolutions). As described in the XFree86
2350 Video Timings HOWTO, the above formula can be rewritten as:
2351
2352 PCLK = RR * HFL * VFL
2353
2354 Given a maximum pixel clock, you can adjust the RR, HFL and VFL as desired, as
2355 long as the product of the three is consistent. The pixel clock is reported in
2356 the log file. Your X log should contain a line like this:
2357
2358     (--) NVIDIA(0): ViewSonic VPD150 (DFP-1): 165 MHz maximum pixel clock
2359
2360 which indicates the maximum pixel clock for that display device.
2361
2362
2363 18D. HOW MODES ARE VALIDATED
2364
2365 In traditional XFree86/X.Org mode validation, the X server takes as a starting
2366 point the X server's internal list of VESA standard modes, plus any modes
2367 specified with special ModeLines in the X configuration file's Monitor
2368 section. These modes are validated against criteria such as the valid
2369 HorizSync/VertRefresh frequency ranges for the user's monitor (as specified in
2370 the Monitor section of the X configuration file), as well as the maximum pixel
2371 clock of the GPU.
2372
2373 Once the X server has determined the set of valid modes, it takes the list of
2374 user requested modes (i.e., the set of modes named in the "Modes" line in the
2375 Display subsection of the Screen section of X configuration file), and finds
2376 the "best" validated mode with the requested name.
2377
2378 The NVIDIA X driver uses a variation on the above approach to perform mode
2379 validation. During X server initialization, the NVIDIA X driver builds a pool
2380 of valid modes for each display device. It gathers all possible modes from
2381 several sources:
2382
2383    o The display device's EDID
2384
2385    o The X server's built-in list
2386
2387    o Any user-specified ModeLines in the X configuration file
2388
2389    o The VESA standard modes
2390
2391 For every possible mode, the mode is run through mode validation. The core of
2392 mode validation is still performed similarly to traditional XFree86/X.Org mode
2393 validation: the mode timings are checked against things such as the valid
2394 HorizSync and VertRefresh ranges and the maximum pixelclock. Note that each
2395 individual stage of mode validation can be independently controlled through
2396 the "ModeValidation" X configuration option.
2397
2398 Note that when validating interlaced mode timings, VertRefresh specifies the
2399 field rate, rather than the frame rate. For example, the following modeline
2400 has a vertical refresh rate of 87 Hz:
2401
2402
2403  # 1024x768i @ 87Hz (industry standard)
2404  ModeLine "1024x768"  44.9  1024 1032 1208 1264  768 768 776 817 +hsync +vsync
2405 Interlace
2406
2407
2408 Invalid modes are discarded; valid modes are inserted into the mode pool. See
2409 MODE VALIDATION REPORTING for how to get more details on mode validation
2410 results for each considered mode.
2411
2412 Valid modes are given a unique name that is guaranteed to be unique across the
2413 whole mode pool for this display device. This mode name is constructed
2414 approximately like this:
2415
2416     <width>x<height>_<refreshrate>
2417
2418 (e.g., "1600x1200_85")
2419
2420 The name may also be prepended with another number to ensure the mode is
2421 unique; e.g., "1600x1200_85_0".
2422
2423 As validated modes are inserted into the mode pool, duplicate modes are
2424 removed, and the mode pool is sorted, such that the "best" modes are at the
2425 beginning of the mode pool. The sorting is based roughly on:
2426
2427    o Resolution
2428
2429    o Source (EDID-provided modes are prioritized higher than VESA-provided
2430      modes, which are prioritized higher than modes that were in the X
2431      server's built-in list)
2432
2433    o Refresh rate
2434
2435 Once modes from all mode sources are validated and the mode pool is
2436 constructed, all modes with the same resolution are compared; the best mode
2437 with that resolution is added to the mode pool a second time, using just the
2438 resolution as its unique modename (e.g., "1600x1200"). In this way, when you
2439 request a mode using the traditional names (e.g., "1600x1200"), you still get
2440 what you got before (the 'best' 1600x1200 mode); the added benefit is that all
2441 modes in the mode pool can be addressed by a unique name.
2442
2443 When verbose logging is enabled (see the FAQ section on increasing the amount
2444 of data printed in the X log file), the mode pool for each display device is
2445 printed to the X log file.
2446
2447 After the mode pool is built for all display devices, the requested modes (as
2448 specified in the X configuration file), are looked up from the mode pool. Each
2449 requested mode that can be matched against a mode in the mode pool is then
2450 advertised to the X server and is available to the user through the X server's
2451 mode switching hotkeys (ctrl-alt-plus/minus) and the XRandR and XF86VidMode X
2452 extensions.
2453
2454 If only one display device is in use by the X screen when the X server starts,
2455 all modes in the mode pool are implicitly made available to the X server. See
2456 the "IncludeImplicitMetaModes" X configuration option in Appendix B for
2457 details.
2458
2459
2460 18E. THE NVIDIA-AUTO-SELECT MODE
2461
2462 You can request a special mode by name in the X config file, named
2463 "nvidia-auto-select". When the X driver builds the mode pool for a display
2464 device, it selects one of the modes as the "nvidia-auto-select" mode; a new
2465 entry is made in the mode pool, and "nvidia-auto-select" is used as the unique
2466 name for the mode.
2467
2468 The "nvidia-auto-select" mode is intended to be a reasonable mode for the
2469 display device in question. For example, the "nvidia-auto-select" mode is
2470 normally the native resolution for flatpanels, as reported by the flatpanel's
2471 EDID, or one of the detailed timings from the EDID. The "nvidia-auto-select"
2472 mode is guaranteed to always be present, and to always be defined as something
2473 considered valid by the X driver for this display device.
2474
2475 Note that the "nvidia-auto-select" mode is not necessarily the largest
2476 possible resolution, nor is it necessarily the mode with the highest refresh
2477 rate. Rather, the "nvidia-auto-select" mode is selected such that it is a
2478 reasonable default. The selection process is roughly:
2479
2480
2481    o If the EDID for the display device reported a preferred mode timing, and
2482      that mode timing is considered a valid mode, then that mode is used as
2483      the "nvidia-auto-select" mode. You can check if the EDID reported a
2484      preferred timing by starting X with logverbosity greater than or equal to
2485      5 (see the FAQ section on increasing the amount of data printed in the X
2486      log file), and looking at the EDID printout; if the EDID contains a line:
2487      
2488          Prefer first detailed timing : Yes
2489      
2490      Then the first mode listed under the "Detailed Timings" in the EDID will
2491      be used.
2492
2493    o If the EDID did not provide a preferred timing, the best detailed timing
2494      from the EDID is used as the "nvidia-auto-select" mode.
2495
2496    o If the EDID did not provide any detailed timings (or there was no EDID at
2497      all), the best valid mode not larger than 1024x768 is used as the
2498      "nvidia-auto-select" mode. The 1024x768 limit is imposed here to restrict
2499      use of modes that may have been validated, but may be too large to be
2500      considered a reasonable default, such as 2048x1536.
2501
2502    o If all else fails, the X driver will use a built-in 800 x 600 60Hz mode
2503      as the "nvidia-auto-select" mode.
2504
2505
2506 If no modes are requested in the X configuration file, or none of the
2507 requested modes can be found in the mode pool, then the X driver falls back to
2508 the "nvidia-auto-select" mode, so that X can always start. Appropriate warning
2509 messages will be printed to the X log file in these fallback scenarios.
2510
2511 You can add the "nvidia-auto-select" mode to your X configuration file by
2512 running the command
2513
2514     nvidia-xconfig --mode nvidia-auto-select
2515
2516 and restarting your X server.
2517
2518 The X driver can generally do a much better job of selecting the
2519 "nvidia-auto-select" mode if the display device's EDID is available. This is
2520 one reason why it is recommended to only use the "UseEDID" X configuration
2521 option sparingly. Note that, rather than globally disable all uses of the EDID
2522 with the "UseEDID" option, you can individually disable each particular use of
2523 the EDID using the "UseEDIDFreqs", "UseEDIDDpi", and/or the "NoEDIDModes"
2524 argument in the "ModeValidation" X configuration option.
2525
2526
2527 18F. MODE VALIDATION REPORTING
2528
2529 When log verbosity is set to 6 or higher (see FAQ
2530 section on increasing the amount of data printed in the X log file), the X log
2531 will record every mode that is considered for each display device's mode pool,
2532 and report whether the mode passed or failed. For modes that were considered
2533 invalid, the log will report why the mode was considered invalid.
2534
2535
2536 18G. ENSURING IDENTICAL MODE TIMINGS
2537
2538 Some functionality, such as Active Stereo with TwinView, requires control over
2539 exactly which mode timings are used. For explicit control over which mode
2540 timings are used on each display device, you can specify the ModeLine you want
2541 to use (using one of the ModeLine generators available), and using a unique
2542 name. For example, if you wanted to use 1024x768 at 120 Hz on each monitor in
2543 TwinView with active stereo, you might add something like this to the monitor
2544 section of your X configuration file:
2545
2546     # 1024x768 @ 120.00 Hz (GTF) hsync: 98.76 kHz; pclk: 139.05 MHz
2547     Modeline "1024x768_120"  139.05  1024 1104 1216 1408  768 769 772 823
2548 -HSync +Vsync
2549
2550 Then, in the Screen section of your X config file, specify a MetaMode like
2551 this:
2552
2553     Option "MetaModes" "1024x768_120, 1024x768_120"
2554
2555
2556
2557 18H. ADDITIONAL INFORMATION
2558
2559 An XFree86 ModeLine generator, conforming to the GTF Standard is available at
2560 http://gtf.sourceforge.net/. Additional generators can be found by searching
2561 for "modeline" on freshmeat.net.
2562
2563 ______________________________________________________________________________
2564
2565 Chapter 19. Configuring Flipping and UBB
2566 ______________________________________________________________________________
2567
2568 The NVIDIA Accelerated FreeBSD Graphics Driver supports Unified Back Buffer
2569 (UBB) and OpenGL Flipping. These features can provide performance gains in
2570 certain situations.
2571
2572    o Unified Back Buffer (UBB): UBB is available only on the Quadro family of
2573      GPUs (Quadro4 NVS excluded) and is enabled by default when there is
2574      sufficient video memory available. This can be disabled with the UBB X
2575      config option described in Appendix B. When UBB is enabled, all windows
2576      share the same back, stencil and depth buffers. When there are many
2577      windows, the back, stencil and depth usage will never exceed the size of
2578      that used by a full screen window. However, even for a single small
2579      window, the back, stencil, and depth video memory usage is that of a full
2580      screen window. In that case video memory may be used less efficiently
2581      than in the non-UBB case.
2582
2583    o Flipping: When OpenGL flipping is enabled, OpenGL can perform buffer
2584      swaps by changing which buffer the DAC scans out rather than copying the
2585      back buffer contents to the front buffer; this is generally a much higher
2586      performance mechanism and allows tearless swapping during the vertical
2587      retrace (when __GL_SYNC_TO_VBLANK is set). The conditions under which
2588      OpenGL can flip are slightly complicated, but in general: on GeForce or
2589      newer hardware, OpenGL can flip when a single full screen unobscured
2590      OpenGL application is running, and __GL_SYNC_TO_VBLANK is enabled.
2591      Additionally, OpenGL can flip on Quadro hardware even when an OpenGL
2592      window is partially obscured or not full screen or __GL_SYNC_TO_VBLANK is
2593      not enabled.
2594
2595
2596 ______________________________________________________________________________
2597
2598 Chapter 20. The Sysctl Interface
2599 ______________________________________________________________________________
2600
2601 The sysctl interface allows you to obtain run-time information about the
2602 driver, any installed NVIDIA graphics cards and the AGP status. It also allows
2603 you to control low-level configuration options and/or overrides.
2604
2605 The various pieces of information are held in a hierarchy under hw.nvidia and
2606 are accessible with the sysctl(8) command.
2607
2608 NVIDIA sysctl Entries
2609
2610 hw.nvidia.version
2611
2612     Prints the installed driver revision
2613
2614 hw.nvidia.cards.n.*
2615
2616     These OIDs provide information about NVIDIA device 'n':
2617     
2618         ID                                  Description
2619         --------------------------------    --------------------------------
2620         model                               the device's product name
2621         irq                                 the IRQ claimed by this device
2622         vbios                               the device's Video BIOS revision
2623         type                                the bus type of this device
2624     
2625     
2626 hw.nvidia.agp.host-bridge.*
2627 hw.nvidia.agp.card.*
2628
2629     These OIDs provide information about the AGP capabilities of the installed
2630     AGP graphics card and host-bridge respectively. These values are most
2631     likely to be correct after system boot and before the X server is started
2632     (and the AGP subsystem initialized).
2633     
2634         ID                Description
2635         --------------    ---------------------------------------------------
2636         rates             the AGP rates supported by this device
2637         fw                if the device supports AGP fast-writes
2638         sba               if the device supports AGP side-band-addressing
2639         registers         the device's AGP registers, status:command
2640     
2641     
2642 hw.nvidia.agp.status.*
2643
2644     Prints AGP status information based on the AGP command registers of the
2645     host-bridge and of the AGP card.
2646     
2647         ID                Description
2648         --------------    ---------------------------------------------------
2649         status            if AGP is enabled or disabled
2650         driver            which driver is being used
2651         rate              the programmed AGP rate
2652         fw                if fast-writes are enabled or disabled
2653         sba               if side-band-addressing is enabled or disabled
2654     
2655     
2656 hw.nvidia.registry.*
2657
2658     Low-level kernel module configuration options. Changing these is typically
2659     not necessary and potentially dangerous. If you do need to change any of
2660     these options, you will need to do so BEFORE you start the X server.
2661     
2662         ID                Description
2663         --------------    ---------------------------------------------------
2664         status            if AGP is enabled or disabled
2665         driver            which driver is being used
2666         rate              the programmed AGP rate
2667         fw                if fast-writes are enabled or disabled
2668         sba               if side-band-addressing is enabled or disabled
2669     
2670     
2671
2672 ______________________________________________________________________________
2673
2674 Chapter 21. Configuring Low-level Parameters
2675 ______________________________________________________________________________
2676
2677 The NVIDIA resource manager recognizes several low-level configuration
2678 parameters that can be set using the sysctl driver interface BEFORE the X
2679 server is started. Normally you should not need to modify any of these
2680 parameters, but it is sometimes necessary or desirable to do so.
2681
2682 To view the current settings of these parameters, you need to issue this
2683 sysctl command ('nvidia.ko' needs to be loaded):
2684
2685     % sysctl -a hw.nvidia.registry
2686
2687 To change any of the parameters, you need to pass the complete name of the OID
2688 followed by '=' and the new value, e.g.:
2689
2690     % sysctl hw.nvidia.registry.EnableVia4x=1
2691
2692 It is possible to automate setting these parameters by adding them to the
2693 '/etc/sysctl.conf' file. See `man 5 sysctl.conf` for details.
2694
2695 The following parameters are recognized by 'nvidia.ko':
2696
2697 Resource Manager Parameters
2698
2699 VideoMemoryTypeOverride
2700
2701     We normally detect memory type on TNT cards by scanning the embedded BIOS.
2702     Unfortunately, we've seen some cases where a TNT card has been flashed
2703     with the wrong BIOS. For example, an SDRAM based TNT has been flashed with
2704     an SGRAM BIOS, and therefore claims to be an SGRAM TNT. We've therefore
2705     provided an override here. Make sure to set the value toe the type of
2706     memory used on your card.
2707     
2708         Value                               Meaning
2709         --------------------------------    --------------------------------
2710         1                                   SDRAM
2711         2                                   SGRAM
2712     
2713     Note that we can only do so much here. There are border cases where even
2714     this fails. For example, if 2 TNT cards are in the same system, one SGRAM,
2715     one SDRAM.
2716
2717     This option is disabled by default, see below for information on how to
2718     enable it.
2719
2720 EnableVia4x
2721
2722     We've had problems with some Via chipsets in 4x mode, we need force them
2723     back down to 2x mode. If you'd like to experiment with retaining 4x mode,
2724     you may try setting this value to 1 If that hangs the system, you're stuck
2725     with 2x mode; there's nothing we can do about it.
2726     
2727         Value             Meaning
2728         --------------    ---------------------------------------------------
2729         0                 disable AGP 4x on Via chipsets (default)
2730         1                 enable AGP 4x on Via chipsets
2731     
2732     
2733 EnableALiAGP
2734
2735     Some ALi chipsets (ALi1541, ALi1647) are known to cause severe system
2736     stability problems with AGP enabled. To avoid lockups, we disable AGP on
2737     systems with these chipsets by default. It appears that updating the
2738     system BIOS and using recent versions of the kernel AGP Gart driver can
2739     make such systems much more stable. If you own a system with one of the
2740     aforementioned chipsets and had it working reasonably well previously, or
2741     if you want to experiment with BIOS and AGPGART revisions, you can
2742     re-enable AGP support by setting this option to 1.
2743     
2744         Value             Meaning
2745         --------------    ---------------------------------------------------
2746         0                 disable AGP on Ali1541 and ALi1647 (default)
2747         1                 enable AGP on Ali1541 and ALi1647
2748     
2749     
2750 NvAGP
2751
2752     This options controls which AGP GART driver is used when no explicit
2753     request is made to change the default (X server).
2754     
2755         Value             Meaning
2756         --------------    ---------------------------------------------------
2757         0                 disable AGP support
2758         1                 use the NVIDIA builtin driver (if possible)
2759         2                 use the kernel's AGPGART driver (if possible)
2760         3                 use any available driver (try 2, then 1)
2761     
2762     Note that the NVIDIA internal AGP GART driver will not be used if AGPGART
2763     was either statically linked into your kernel or built as a kernel module
2764     and loaded before the NVIDIA kernel module.
2765
2766 ReqAGPRate
2767
2768     Normally, the driver will compare speed modes of the chipset and the card,
2769     picking the highest common rate. This key forces a maximum limit, to limit
2770     the driver to lower speeds. The driver will not attempt a speed beyond
2771     what the chipset and card claim they are capable of.
2772
2773     Make sure you really know what you're doing before you enable this
2774     override. By default, AGP drivers will enable the fastest AGP rate your
2775     card and motherboard chipset are capable of. Then, in some cases, our
2776     driver will force this rate down to work around bugs in both our chipsets,
2777     and motherboard chipsets. Using this variable will override our bug fixes.
2778     This may be desirable in some cases, but not most. THIS IS COMPLETELY
2779     UNSUPPORTED!
2780
2781     This option expects a bitmask (7 = 1|2|3|4, 3=1|2, etc.)
2782
2783     This option is disabled by default, see below for information on how to
2784     enable it.
2785
2786 EnableAGPSBA
2787
2788     For stability reasons, the driver will not use Side Band Addressing even
2789     if both the host chipset and the AGP card support it. You may override
2790     this behavior with the following registry key. THIS IS COMPLETELY
2791     UNSUPPORTED! 
2792     
2793         Value             Meaning
2794         --------------    ---------------------------------------------------
2795         0                 disable Side Band Addressing (default on x86, see
2796                           below)
2797         1                 enable Side Band Addressing (if supported)
2798     
2799     
2800 EnableAGPFW
2801
2802     Similar to Side Band Addressing, Fast Writes are disabled by default. If
2803     you wish to enable them on systems that support them, you can do so with
2804     this registry key. Note that this may render your system unstable with
2805     many AGP chipsets. THIS IS COMPLETELY UNSUPPORTED! 
2806     
2807         Value                               Meaning
2808         --------------------------------    --------------------------------
2809         0                                   disable Fast Writes (default)
2810         1                                   enable Fast Writes
2811     
2812     
2813
2814 ______________________________________________________________________________
2815
2816 Chapter 22. Using the X Composite Extension
2817 ______________________________________________________________________________
2818
2819 X.Org X servers, beginning with X11R6.8.0, contain experimental support for a
2820 new X protocol extension called Composite. This extension allows windows to be
2821 drawn into pixmaps instead of directly onto the screen. In conjunction with
2822 the Damage and Render extensions, this allows a program called a composite
2823 manager to blend windows together to draw the screen.
2824
2825 Performance will be degraded significantly if the "RenderAccel" option is
2826 disabled in xorg.conf. See Appendix B for more details.
2827
2828 When the NVIDIA X driver is used with an X.Org X server X11R6.9.0 or newer and
2829 the Composite extension is enabled, NVIDIA's OpenGL implementation interacts
2830 properly with the Damage and Composite X extensions. This means that OpenGL
2831 rendering is drawn into offscreen pixmaps and the X server is notified of the
2832 Damage event when OpenGL renders to the pixmap. This allows OpenGL
2833 applications to behave properly in a composited X desktop.
2834
2835 If the Composite extension is enabled on an X server older than X11R6.9.0,
2836 then GLX will be disabled. You can force GLX on while Composite is enabled on
2837 pre-X11R6.9.0 X servers with the "AllowGLXWithComposite" X configuration
2838 option. However, GLX will not render correctly in this environment. Upgrading
2839 your X server to X11R6.9.0 or newer is recommended.
2840
2841 You can enable the Composite X extension by running 'nvidia-xconfig
2842 --composite'. Composite can be disabled with 'nvidia-xconfig --no-composite'.
2843 See the nvidia-xconfig(1) man page for details.
2844
2845 If you are using Composite with GLX, it is recommended that you also enable
2846 the "DamageEvents" X option for enhanced performance. If you are using an
2847 OpenGL-based composite manager, you may also need the "DisableGLXRootClipping"
2848 option to obtain proper output.
2849
2850 The Composite extension also causes problems with other driver components:
2851
2852    o In X servers prior to X.Org 7.1, Xv cannot draw into pixmaps that have
2853      been redirected offscreen and will draw directly onto the screen instead.
2854      For some programs you can work around this issue by using an alternative
2855      video driver. For example, "mplayer -vo x11" will work correctly, as will
2856      "xine -V xshm". If you must use Xv with an older server, you can also
2857      disable the compositing manager and re-enable it when you are finished.
2858
2859      On X.Org 7.1 and higher, the driver will properly redirect video into
2860      offscreen pixmaps. Note that the Xv adaptors will ignore the
2861      sync-to-vblank option when drawing into a redirected window.
2862
2863    o Workstation overlays, stereo visuals, and the unified back buffer (UBB)
2864      are incompatible with Composite. These features will be automatically
2865      disabled when Composite is detected.
2866
2867    o The Composite extension is currently incompatible with Xinerama, due to
2868      limitations in the X.Org X server. Composite will be automatically
2869      disabled when Xinerama is enabled.
2870
2871
2872 This NVIDIA FreeBSD supports OpenGL rendering to 32-bit ARGB windows on X.Org
2873 7.2 and higher or when the "AddARGBGLXVisuals" X config file option is
2874 enabled. If you are an application developer, you can use these new visuals in
2875 conjunction with a composite manager to create translucent OpenGL
2876 applications:
2877
2878     int attrib[] = {
2879         GLX_RENDER_TYPE, GLX_RGBA_BIT,
2880         GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
2881         GLX_RED_SIZE, 1,
2882         GLX_GREEN_SIZE, 1,
2883         GLX_BLUE_SIZE, 1,
2884         GLX_ALPHA_SIZE, 1,
2885         GLX_DOUBLEBUFFER, True,
2886         GLX_DEPTH_SIZE, 1,
2887         None };
2888     GLXFBConfig *fbconfigs, fbconfig;
2889     int numfbconfigs, render_event_base, render_error_base;
2890     XVisualInfo *visinfo;
2891     XRenderPictFormat *pictFormat;
2892
2893     /* Make sure we have the RENDER extension */
2894     if(!XRenderQueryExtension(dpy, &render_event_base, &render_error_base)) {
2895         fprintf(stderr, "No RENDER extension found\n");
2896         exit(EXIT_FAILURE);
2897     }
2898
2899     /* Get the list of FBConfigs that match our criteria */
2900     fbconfigs = glXChooseFBConfig(dpy, scrnum, attrib, &numfbconfigs);
2901     if (!fbconfigs) {
2902         /* None matched */
2903         exit(EXIT_FAILURE);
2904     }
2905
2906     /* Find an FBConfig with a visual that has a RENDER picture format that
2907      * has alpha */
2908     for (i = 0; i < numfbconfigs; i++) {
2909         visinfo = glXGetVisualFromFBConfig(dpy, fbconfigs[i]);
2910         if (!visinfo) continue;
2911         pictFormat = XRenderFindVisualFormat(dpy, visinfo->visual);
2912         if (!pictFormat) continue;
2913
2914         if(pictFormat->direct.alphaMask > 0) {
2915             fbconfig = fbconfigs[i];
2916             break;
2917         }
2918
2919         XFree(visinfo);
2920     }
2921
2922     if (i == numfbconfigs) {
2923         /* None of the FBConfigs have alpha.  Use a normal (opaque)
2924          * FBConfig instead */
2925         fbconfig = fbconfigs[0];
2926         visinfo = glXGetVisualFromFBConfig(dpy, fbconfig);
2927         pictFormat = XRenderFindVisualFormat(dpy, visinfo->visual);
2928     }
2929
2930     XFree(fbconfigs);
2931
2932
2933 When rendering to a 32-bit window, keep in mind that the X RENDER extension,
2934 used by most composite managers, expects "premultiplied alpha" colors. This
2935 means that if your color has components (r,g,b) and alpha value a, then you
2936 must render (a*r, a*g, a*b, a) into the target window.
2937
2938 More information about Composite can be found at
2939 http://freedesktop.org/Software/CompositeExt
2940
2941 ______________________________________________________________________________
2942
2943 Chapter 23. Using the nvidia-settings Utility
2944 ______________________________________________________________________________
2945
2946 A graphical configuration utility, 'nvidia-settings', is included with the
2947 NVIDIA FreeBSD graphics driver. After installing the driver and starting X,
2948 you can run this configuration utility by running:
2949
2950     % nvidia-settings
2951
2952 in a terminal window.
2953
2954 Detailed information about the configuration options available are documented
2955 in the help window in the utility.
2956
2957 For more information, see the nvidia-settings man page.
2958
2959 The source code to nvidia-settings is released as GPL and is available here:
2960 ftp://download.nvidia.com/XFree86/nvidia-settings/
2961
2962 If you have trouble running the nvidia-settings binary shipped with the NVIDIA
2963 FreeBSD Graphics Driver, refer to the nvidia-settings entry in Chapter 8.
2964
2965 ______________________________________________________________________________
2966
2967 Chapter 24. Configuring SLI and Multi-GPU FrameRendering
2968 ______________________________________________________________________________
2969
2970 The NVIDIA FreeBSD driver contains support for NVIDIA SLI FrameRendering and
2971 NVIDIA Multi-GPU FrameRendering. Both of these technologies allow an OpenGL
2972 application to take advantage of multiple GPUs to improve visual performance.
2973
2974 The distinction between SLI and Multi-GPU is straightforward. SLI is used to
2975 leverage the processing power of GPUs across two or more graphics cards, while
2976 Multi-GPU is used to leverage the processing power of two GPUs colocated on
2977 the same graphics card. If you want to link together separate graphics cards,
2978 you should use the "SLI" X config option. Likewise, if you want to link
2979 together GPUs on the same graphics card, you should use the "MultiGPU" X
2980 config option. If you have two cards, each with two GPUs, and you wish to link
2981 them all together, you should use the "SLI" option.
2982
2983
2984 24A. RENDERING MODES
2985
2986 In FreeBSD, with two GPUs SLI and Multi-GPU can both operate in one of three
2987 modes: Alternate Frame Rendering (AFR), Split Frame Rendering (SFR), and
2988 Antialiasing (AA). When AFR mode is active, one GPU draws the next frame while
2989 the other one works on the frame after that. In SFR mode, each frame is split
2990 horizontally into two pieces, with one GPU rendering each piece. The split
2991 line is adjusted to balance the load between the two GPUs. AA mode splits
2992 antialiasing work between the two GPUs. Both GPUs work on the same scene and
2993 the result is blended together to produce the final frame. This mode is useful
2994 for applications that spend most of their time processing with the CPU and
2995 cannot benefit from AFR.
2996
2997 With four GPUs, the same options are applicable. AFR mode cycles through all
2998 four GPUs, each GPU rendering a frame in turn. SFR mode splits the frame
2999 horizontally into four pieces. AA mode splits the work between the four GPUs,
3000 allowing antialiasing up to 64x. With four GPUs SLI can also operate in an
3001 additional mode, Alternate Frame Rendering of Antialiasing. (AFR of AA). With
3002 AFR of AA, pairs of GPUs render alternate frames, each GPU in a pair doing
3003 half of the antialiasing work. Note that these scenarios apply whether you
3004 have four separate cards or you have two cards, each with two GPUs.
3005
3006 With a Quadro Plex Visual Computing System (VCS), the same options as above
3007 are available, if your Quadro Plex VCS has two or four GPUs. In addition,
3008 there is a special SLI Mosaic Mode to extend a single X screen transparently
3009 across all of the available display outputs on the Quadro Plex VCS.
3010
3011
3012 24B. ENABLING MULTI-GPU
3013
3014 Multi-GPU is enabled by setting the "MultiGPU" option in the X configuration
3015 file; see Appendix B for details about the "MultiGPU" option.
3016
3017 The nvidia-xconfig utility can be used to set the "MultiGPU" option, rather
3018 than modifying the X configuration file by hand. For example:
3019
3020     % nvidia-xconfig --multigpu=on
3021
3022
3023
3024 24C. ENABLING SLI
3025
3026 SLI is enabled by setting the "SLI" option in the X configuration file; see
3027 Appendix B for details about the SLI option.
3028
3029 The nvidia-xconfig utility can be used to set the SLI option, rather than
3030 modifying the X configuration file by hand. For example:
3031
3032     % nvidia-xconfig --sli=on
3033
3034
3035
3036 24D. ENABLING SLI MOSAIC MODE
3037
3038 The simplest way to configure Mosaic Mode using a grid of monitors is to use
3039 'nvidia-settings' (see Chapter 23). The steps to perform this configuration
3040 are as follows:
3041
3042
3043
3044   1. Install your Quadro Plex VCS into the system, following the steps
3045      provided in the Quadro Plex Installation Guide.
3046
3047   2. Connect all of the monitors you would like to use to the Quadro Plex VCS.
3048      If you are going to use fewer monitors than there are connectors, connect
3049      one monitor to each GPU before adding a second monitor to any GPUs.
3050
3051   3. Install the NVIDIA display driver set.
3052
3053   4. Configure an X screen to use the "nvidia" driver on at least one of the
3054      GPUs in your Quadro Plex VCS (see Chapter 6 for more information).
3055
3056   5. Start X.
3057
3058   6. Run 'nvidia-settings'. You should see a tab in the left pane of
3059      nvidia-settings labeled "SLI Mosaic Mode Settings". Note that you may
3060      need to expand the entry for the X screen you configured earlier.
3061
3062   7. Check the "Use SLI Mosaic Mode" check box.
3063
3064   8. Select the monitor grid configuration you'd like to use from the "display
3065      configuration" dropdown.
3066
3067   9. Choose the resolution and refresh rate at which you would like to drive
3068      each individual monitor.
3069
3070   10. Set any overlap you would like between the displays.
3071
3072   11. Click the "Save to X Configuration File" button. NOTE: If you don't have
3073      permissions to write to your system's X configuration file, you will be
3074      prompted to choose a location to save the file. After doing so, you MUST
3075      copy the X configuration file into a location the X server will consider
3076      upon startup (usually '/etc/X11/xorg.conf' for X.Org servers or
3077      '/etc/X11/XF86Config' for XFree86 servers).
3078
3079   12. Exit nvidia-settings and restart your X server.
3080
3081
3082
3083 24E. HARDWARE REQUIREMENTS
3084
3085 SLI functionality requires:
3086
3087    o Identical PCI-Express graphics cards
3088
3089    o A supported motherboard
3090
3091    o In most cases, a video bridge connecting the two graphics cards
3092
3093    o A Quadro Plex VCS to use Mosaic Mode
3094
3095 For the latest in supported SLI and Multi-GPU configurations, including SLI-
3096 and Multi-GPU capable GPUs and SLI-capable motherboards, see
3097 http://www.slizone.com.
3098
3099
3100 24F. OTHER NOTES AND REQUIREMENTS
3101
3102 The following other requirements apply to SLI and Multi-GPU:
3103
3104    o Mobile GPUs are NOT supported
3105
3106    o SLI on Quadro-based graphics cards always requires a video bridge
3107
3108    o TwinView is also not supported with SLI or Multi-GPU. Only one display
3109      can be used when SLI or Multi-GPU is enabled, with the exception of
3110      Mosaic.
3111
3112    o If X is configured to use multiple screens and screen 0 has SLI or
3113      Multi-GPU enabled, the other screens configured to use the nvidia driver
3114      will be disabled. Note that if SLI or Multi-GPU is enabled, the GPUs used
3115      by that configuration will be unavailable for single GPU rendering.
3116
3117
3118
3119 FREQUENTLY ASKED SLI AND MULTI-GPU QUESTIONS
3120
3121 Q. Why is glxgears slower when SLI or Multi-GPU is enabled?
3122
3123 A. When SLI or Multi-GPU is enabled, the NVIDIA driver must coordinate the
3124    operations of all GPUs when each new frame is swapped (made visible). For
3125    most applications, this GPU synchronization overhead is negligible.
3126    However, because glxgears renders so many frames per second, the GPU
3127    synchronization overhead consumes a significant portion of the total time,
3128    and the framerate is reduced.
3129
3130
3131 Q. Why is Doom 3 slower when SLI or Multi-GPU is enabled?
3132
3133 A. The NVIDIA Accelerated FreeBSD Graphics Driver does not automatically
3134    detect the optimal SLI or Multi-GPU settings for games such as Doom 3 and
3135    Quake 4. To work around this issue, the environment variable __GL_DOOM3 can
3136    be set to tell OpenGL that Doom 3's optimal settings should be used. In
3137    Bash, this can be done in the same command that launches Doom 3 so the
3138    environment variable does not remain set for other OpenGL applications
3139    started in the same session:
3140    
3141        % __GL_DOOM3=1 doom3
3142    
3143    Doom 3's startup script can also be modified to set this environment
3144    variable:
3145    
3146        #!/bin/sh
3147        # Needed to make symlinks/shortcuts work.
3148        # the binaries must run with correct working directory
3149        cd "/usr/local/games/doom3/"
3150        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
3151        export __GL_DOOM3=1
3152        exec ./doom.x86 "$@"
3153    
3154    This environment variable is temporary and will be removed in the future.
3155
3156
3157 ______________________________________________________________________________
3158
3159 Chapter 25. Configuring Frame Lock and Genlock
3160 ______________________________________________________________________________
3161
3162 NOTE: Frame Lock and Genlock features are supported only on specific hardware,
3163 as noted below.
3164
3165 Visual computing applications that involve multiple displays, or even multiple
3166 windows within a display, can require special signal processing and
3167 application controls in order to function properly. For example, in order to
3168 produce quality video recording of animated graphics, the graphics display
3169 must be synchronized with the video camera. As another example, applications
3170 presented on multiple displays must be synchronized in order to complete the
3171 illusion of a larger, virtual canvas.
3172
3173 This synchronization is enabled through the frame lock and genlock
3174 capabilities of the NVIDIA driver. This section describes the setup and use of
3175 frame lock and genlock.
3176
3177
3178 25A. DEFINITION OF TERMS
3179
3180 GENLOCK: Genlock refers to the process of synchronizing the pixel scanning of
3181 one or more displays to an external synchronization source. NVIDIA Genlock
3182 requires the external signal to be either TTL or composite, such as used for
3183 NTSC, PAL, or HDTV. It should be noted that the NVIDIA Genlock implementation
3184 is guaranteed only to be frame-synchronized, and not necessarily
3185 pixel-synchronized.
3186
3187 FRAME LOCK: Frame Lock involves the use of hardware to synchronize the frames
3188 on each display in a connected system. When graphics and video are displayed
3189 across multiple monitors, frame locked systems help maintain image continuity
3190 to create a virtual canvas. Frame lock is especially critical for stereo
3191 viewing, where the left and right fields must be in sync across all displays.
3192
3193 In short, to enable genlock means to sync to an external signal. To enable
3194 frame lock means to sync 2 or more display devices to a signal generated
3195 internally by the hardware, and to use both means to sync 2 or more display
3196 devices to an external signal.
3197
3198 SWAP SYNC: Swap sync refers to the synchronization of buffer swaps of multiple
3199 application windows. By means of swap sync, applications running on multiple
3200 systems can synchronize the application buffer swaps between all the systems.
3201 In order to work across multiple systems, swap sync requires that the systems
3202 are frame locked.
3203
3204 G-SYNC DEVICE: A G-Sync Device refers to devices capable of Frame
3205 lock/Genlock. This can be a graphics card (Quadro FX 3000G) or a stand alone
3206 device (Quadro FX G-Sync). See "Supported Hardware" below.
3207
3208
3209 25B. SUPPORTED HARDWARE
3210
3211 Frame lock and genlock are supported for the following hardware:
3212
3213     Card
3214     ----------------------------------------------------------------------
3215     Quadro FX 3000G
3216     Quadro FX G-Sync, used in conjunction with a Quadro FX 4400, Quadro FX
3217     4500, or Quadro FX 5500
3218     Quadro FX G-Sync II, used in conjunction with a Quadro FX 4600, or Quadro
3219     FX 5600
3220
3221
3222
3223 25C. HARDWARE SETUP
3224
3225 Before you begin, you should check that your hardware has been properly
3226 installed. If you are using the Quadro FX 3000G, the genlock/frame lock signal
3227 processing hardware is located on the dual-slot card itself, and after
3228 installing the card, no additional setup is necessary.
3229
3230 If you are using the Quadro FX G-Sync card in conjunction with a graphics
3231 card, the following additional setup steps are required. These steps must be
3232 performed when the system is off.
3233
3234   1. On the Quadro FX G-Sync card, locate the fourteen-pin connector labeled
3235      "primary". If the associated ribbon cable is not already joined to this
3236      connector, do so now. If you plan to use frame lock or genlock in
3237      conjunction with SLI FrameRendering or Multi-GPU FrameRendering (see
3238      Chapter 24) or other multi-GPU configurations, you should connect the
3239      fourteen-pin connector labeled "secondary" to the second GPU. A section
3240      at the end of this appendix describes restrictions on such setups.
3241
3242   2. Install the Quadro FX G-Sync card in any available slot. Note that the
3243      slot itself is only used for support, so even a known "bad" slot is
3244      acceptable. The slot must be close enough to the graphics card that the
3245      ribbon cable can reach.
3246
3247   3. Connect the other end of the ribbon cable to the fourteen-pin connector
3248      on the graphics card.
3249
3250 You may now boot the system and begin the software setup of genlock and/or
3251 frame lock. These instructions assume that you have already successfully
3252 installed the NVIDIA Accelerated FreeBSD Driver Set. If you have not done so,
3253 see Chapter 3.
3254
3255
3256 25D. CONFIGURATION WITH NVIDIA-SETTINGS GUI
3257
3258 Frame lock and genlock are configured through the nvidia-settings utility. See
3259 the 'nvidia-settings(1)' man page, and the nvidia-settings online help (click
3260 the "Help" button in the lower right corner of the interface for per-page help
3261 information).
3262
3263 From the nvidia-settings frame lock panel, you may control the addition of
3264 G-Sync (and display) devices to the frame lock/genlock group, monitor the
3265 status of that group, and enable/disable frame lock and genlock.
3266
3267 After the system has booted and X Windows has been started, run
3268 nvidia-settings as
3269
3270     % nvidia-settings
3271
3272 You may wish to start this utility before continuing, as we refer to it
3273 frequently in the subsequent discussion.
3274
3275 The setup of genlock and frame lock are described separately. We then describe
3276 the use of genlock and frame lock together.
3277
3278
3279 25E. GENLOCK SETUP
3280
3281 After the system has been booted, connect the external signal to the house
3282 sync connector (the BNC connector) on either the graphics card or the G-Sync
3283 card. There is a status LED next to the connector. A solid red LED indicates
3284 that the hardware cannot detect the timing signal. A green LED indicates that
3285 the hardware is detecting a timing signal. An occasional red flash is okay.
3286 The G-Sync device (graphics card or G-Sync card) will need to be configured
3287 correctly for the signal to be detected.
3288
3289 In the frame lock panel of the nvidia-settings interface, add the X Server
3290 that contains the display and G-Sync devices that you would like to sync to
3291 this external source by clicking the "Add Devices..." button. An X Server is
3292 typically specified in the format "system:m", e.g.:
3293
3294     mycomputer.domain.com:0
3295
3296 or
3297
3298     localhost:0
3299
3300 After adding an X Server, rows will appear in the "G-Sync Devices" section on
3301 the frame lock panel that displays relevant status information about the
3302 G-Sync devices, GPUs attached to those G-Sync devices and the display devices
3303 driven by those GPUs. In particular, the G-Sync rows will display the server
3304 name and G-Sync device number along with "Receiving" LED, "Rate", "House" LED,
3305 "Port 0"/"Port 1" Images, and "Delay" information. The GPU rows will display
3306 the GPU product name information along with the GPU ID for the server. The
3307 Display Device rows will show the display device name and device type along
3308 with server/client check boxes, refresh rate, "Timing" LED and "Stereo" LED.
3309
3310 Once the G-Sync and display devices have been added to the frame lock/genlock
3311 group, a Server display device will need to be selected. This is done by
3312 selecting the "Server" check box of the desired display device.
3313
3314 If you are using a G-Sync card, you must also click the "Use House Sync if
3315 Present" check box. To enable synchronization of this G-Sync device to the
3316 external source, click the "Enable Frame Lock" button. The display device(s)
3317 may take a moment to stabilize. If it does not stabilize, you may have
3318 selected a synchronization signal that the system cannot support. You should
3319 disable synchronization by clicking the "Disable Frame Lock" button and check
3320 the external sync signal.
3321
3322 Modifications to genlock settings (e.g., "Use House Sync if Present", "Add
3323 Devices...") must be done while synchronization is disabled.
3324
3325
3326 25F. FRAME LOCK SETUP
3327
3328 Frame Lock is supported across an arbitrary number of Quadro FX 3000 or Quadro
3329 FX G-Sync systems, although mixing the two in the same frame lock group is not
3330 supported. Additionally, each system to be included in the frame lock group
3331 must be configured with identical mode timings. See Chapter 18 for information
3332 on mode timings.
3333
3334 Connect the systems through their RJ45 ports using standard CAT5 patch cables.
3335 These ports are located on the frame lock card itself (either the Quadro FX
3336 3000 or the Quadro FX G-Sync card). DO NOT CONNECT A FRAME LOCK PORT TO AN
3337 ETHERNET CARD OR HUB. DOING SO MAY PERMANENTLY DAMAGE THE HARDWARE. The
3338 connections should be made in a daisy-chain fashion: each card has two RJ45
3339 ports, call them 1 and 2. Connect port 1 of system A to port 2 of system B,
3340 connect port 1 of system B to port 2 of system C, etc. Note that you will
3341 always have two empty ports in your frame lock group.
3342
3343 The ports self-configure as inputs or outputs once frame lock is enabled. Each
3344 port has a yellow and a green LED that reflect this state. A flashing yellow
3345 LED indicates an output and a flashing green LED indicates an input. A solid
3346 green LED indicates that the port has not yet configured.
3347
3348 In the frame lock panel of the nvidia-settings interface, add the X server
3349 that contains the display devices that you would like to include in the frame
3350 lock group by clicking the "Add Devices..." button (see the description for
3351 adding display devices in the previous section on GENLOCK SETUP. Like the
3352 genlock status indicators, the "Port 0" and "Port 1" columns in the table on
3353 the frame lock panel contain indicators whose states mirror the states of the
3354 physical LEDs on the RJ45 ports. Thus, you may monitor the status of these
3355 ports from the software interface.
3356
3357 Any X Server can be added to the frame lock group, provided that
3358
3359   1. The system supporting the X Server is configured to support frame lock
3360      and is connected via RJ45 cable to the other systems in the frame lock
3361      group.
3362
3363   2. The system driving nvidia-settings can locate and has display privileges
3364      on the X server that is to be included for frame lock.
3365
3366 A system can gain display privileges on a remote system by executing
3367
3368     % xhost +
3369
3370 on the remote system. See the xhost(1) man page for details. Typically, frame
3371 lock is controlled through one of the systems that will be included in the
3372 frame lock group. While this is not a requirement, note that nvidia-settings
3373 will only display the frame lock panel when running on an X server that
3374 supports frame lock.
3375
3376 To enable synchronization on these display devices, click the "Enable Frame
3377 Lock" button. The screens may take a moment to stabilize. If they do not
3378 stabilize, you may have selected mode timings that one or more of the systems
3379 cannot support. In this case you should disable synchronization by clicking
3380 the "Disable Frame Lock" button and refer to Chapter 18 for information on
3381 mode timings.
3382
3383 Modifications to frame lock settings (e.g. "Add/Remove Devices...") must be
3384 done while synchronization is disabled.
3385
3386 nvidia-settings will not automatically enable Frame Lock via the
3387 nvidia-settings.rc file. To enable Frame Lock when starting the X server, a
3388 line such as the following can be added to the '~/.xinitrc' file:
3389
3390     # nvidia-settings -a [gpu:0]/FrameLockEnable=1
3391
3392
3393
3394 25G. FRAME LOCK + GENLOCK
3395
3396 The use of frame lock and genlock together is a simple extension of the above
3397 instructions for using them separately. You should first follow the
3398 instructions for Frame Lock Setup, and then to one of the systems that will be
3399 included in the frame lock group, attach an external sync source. In order to
3400 sync the frame lock group to this single external source, you must select a
3401 display device driven by the GPU connected to the G-Sync card (through the
3402 primary connector) that is connected to the external source to be the signal
3403 server for the group. This is done by selecting the check box labeled "Server"
3404 of the tree on the frame lock panel in nvidia-settings. If you are using a
3405 G-Sync based frame lock group, you must also select the "Use House Sync if
3406 Present" check box. Enable synchronization by clicking the "Enable Frame Lock"
3407 button. As with other frame lock/genlock controls, you must select the signal
3408 server while synchronization is disabled.
3409
3410
3411 25H. CONFIGURATION WITH NVIDIA-SETTINGS COMMAND LINE
3412
3413 Frame Lock may also be configured through the nvidia-settings command line.
3414 This method of configuring Frame Lock may be useful in a scripted environment
3415 to automate the setup process. (Note that the examples listed below depend on
3416 the actual hardware configuration and as such may not work as-is.)
3417
3418 To properly configure Frame Lock, the following steps should be completed:
3419
3420   1. Make sure Frame Lock Sync is disabled on all GPUs.
3421
3422   2. Make sure all display devices that are to be frame locked have the same
3423      refresh rate.
3424
3425   3. Configure which (display/GPU) device should be the master.
3426
3427   4. Configure house sync (if applicable).
3428
3429   5. Configure the slave display devices.
3430
3431   6. Enable frame lock sync on the master GPU.
3432
3433   7. Enable frame lock sync on the slave GPUs.
3434
3435   8. Toggle the test signal on the master GPU (for testing the hardware
3436      connectivity.)
3437
3438
3439 For a full list of the nvidia-settings Frame Lock attributes, please see the
3440 'nvidia-settings(1)' man page. Examples:
3441
3442   1. 1 System, 1 Frame Lock board, 1 GPU, and 1 display device syncing to the
3443      house signal:
3444      
3445        # - Make sure frame lock sync is disabled
3446        nvidia-settings -a [gpu:0]/FrameLockEnable=0
3447        nvidia-settings -q [gpu:0]/FrameLockEnable
3448      
3449        # - Query the enabled displays on the gpu
3450        nvidia-settings -q [gpu:0]/EnabledDisplays
3451      
3452        # - Check that the refresh rate is the one we want
3453        nvidia-settings -q [gpu:0]/RefreshRate
3454      
3455        # - Set the master display device to CRT-0.  The desired display
3456        #   device(s) to be set are passed in as a hexadecimal number
3457        #   in which specific bits denote which display devices to set.
3458        #   examples:
3459        #
3460        #   0x00000001 - CRT-0
3461        #   0x00000002 - CRT-1
3462        #   0x00000003 - CRT-0 and CRT-1
3463        #
3464        #   0x00000100 - TV-0
3465        #   0x00000200 - TV-1
3466        #
3467        #   0x00020000 - DFP-1
3468        #
3469        #   0x00010101 - CRT-0, TV-0 and DFP-0
3470        #
3471        #   0x000000FF - All CRTs
3472        #   0x0000FF00 - All TVs
3473        #   0x00FF0000 - All DFPs
3474        #
3475        #   Note that the following command:
3476        # 
3477        #     nvidia-settings -q [gpu:0]/EnabledDisplays
3478        #
3479        #   will list the available displays on the given GPU.
3480      
3481        nvidia-settings -a [gpu:0]/FrameLockMaster=0x00000001
3482        nvidia-settings -q [gpu:0]/FrameLockMaster
3483      
3484        # - Enable use of house sync signal
3485        nvidia-settings -a [framelock:0]/FrameLockUseHouseSync=1
3486      
3487        # - Configure the house sync signal video mode
3488        nvidia-settings -a [framelock:0]/FrameLockVideoMode=0
3489      
3490        # - Set the slave display device to none (to avoid
3491        #   having unwanted display devices locked to the
3492        #   sync signal.)
3493        nvidia-settings -a [gpu:0]/FrameLockSlaves=0x00000000
3494        nvidia-settings -q [gpu:0]/FrameLockSlaves
3495      
3496        # - Enable frame lock
3497        nvidia-settings -a [gpu:0]/FrameLockEnable=1
3498      
3499        # - Toggle the test signal
3500        nvidia-settings -a [gpu:0]/FrameLockTestSignal=1
3501        nvidia-settings -a [gpu:0]/FrameLockTestSignal=0
3502      
3503      
3504   2. 2 Systems, each with 2 GPUs, 1 Frame Lock board and 1 display device per
3505      GPU syncing from the first system's first display device:
3506      
3507        # - Make sure frame lock sync is disabled
3508        nvidia-settings -a myserver:0[gpu:0]/FrameLockEnable=0
3509        nvidia-settings -a myserver:0[gpu:1]/FrameLockEnable=0
3510        nvidia-settings -a myslave1:0[gpu:0]/FrameLockEnable=0
3511        nvidia-settings -a myslave1:0[gpu:1]/FrameLockEnable=0
3512      
3513        # - Query the enabled displays on the GPUs
3514        nvidia-settings -q myserver:0[gpu:0]/EnabledDisplays
3515        nvidia-settings -q myserver:0[gpu:1]/EnabledDisplays
3516        nvidia-settings -q myslave1:0[gpu:0]/EnabledDisplays
3517        nvidia-settings -q myslave1:0[gpu:1]/EnabledDisplays
3518      
3519        # - Check the refresh rate is the same for all displays
3520        nvidia-settings -q myserver:0[gpu:0]/RefreshRate
3521        nvidia-settings -q myserver:0[gpu:1]/RefreshRate
3522        nvidia-settings -q myslave1:0[gpu:0]/RefreshRate
3523        nvidia-settings -q myslave1:0[gpu:1]/RefreshRate
3524      
3525        # - Make sure the display device we want as master is masterable
3526        nvidia-settings -q myserver:0[gpu:0]/FrameLockMasterable
3527      
3528        # - Set the master display device (CRT-0)
3529        nvidia-settings -a myserver:0[gpu:0]/FrameLockMaster=0x00000001
3530      
3531        # - Disable the house sync signal on the master device
3532        nvidia-settings -a myserver:0[framelock:0]/FrameLockUseHouseSync=0
3533      
3534        # - Set the slave display devices
3535        nvidia-settings -a myserver:0[gpu:1]/FrameLockSlaves=0x00000001
3536        nvidia-settings -a myslave1:0[gpu:0]/FrameLockSlaves=0x00000001
3537        nvidia-settings -a myslave1:0[gpu:1]/FrameLockSlaves=0x00000001
3538      
3539        # - Enable frame lock on server
3540        nvidia-settings -a myserver:0[gpu:0]/FrameLockEnable=1
3541      
3542        # - Enable frame lock on slave devices
3543        nvidia-settings -a myserver:0[gpu:1]/FrameLockEnable=1
3544        nvidia-settings -a myslave1:0[gpu:0]/FrameLockEnable=1
3545        nvidia-settings -a myslave1:0[gpu:1]/FrameLockEnable=1
3546      
3547        # - Toggle the test signal
3548        nvidia-settings -a myserver:0[gpu:0]/FrameLockTestSignal=1
3549        nvidia-settings -a myserver:0[gpu:0]/FrameLockTestSignal=0
3550      
3551      
3552   3. 1 System, 4 GPUs, 2 Frame Lock boards and 2 display devices per GPU
3553      syncing from the first GPU's display device:
3554      
3555        # - Make sure frame lock sync is disabled
3556        nvidia-settings -a [gpu:0]/FrameLockEnable=0
3557        nvidia-settings -a [gpu:1]/FrameLockEnable=0
3558        nvidia-settings -a [gpu:2]/FrameLockEnable=0
3559        nvidia-settings -a [gpu:3]/FrameLockEnable=0
3560      
3561        # - Query the enabled displays on the GPUs
3562        nvidia-settings -q [gpu:0]/EnabledDisplays
3563        nvidia-settings -q [gpu:1]/EnabledDisplays
3564        nvidia-settings -q [gpu:2]/EnabledDisplays
3565        nvidia-settings -q [gpu:3]/EnabledDisplays
3566      
3567        # - Check the refresh rate is the same for all displays
3568        nvidia-settings -q [gpu:0]/RefreshRate
3569        nvidia-settings -q [gpu:1]/RefreshRate
3570        nvidia-settings -q [gpu:2]/RefreshRate
3571        nvidia-settings -q [gpu:3]/RefreshRate
3572      
3573        # - Make sure the display device we want as master is masterable
3574        nvidia-settings -q myserver:0[gpu:0]/FrameLockMasterable
3575      
3576        # - Set the master display device (CRT-0)
3577        nvidia-settings -a [gpu:0]/FrameLockMaster=0x00000001
3578      
3579        # - Disable the house sync signal on the master device
3580        nvidia-settings -a [framelock:0]/FrameLockUseHouseSync=0
3581      
3582        # - Set the slave display devices
3583        nvidia-settings -a [gpu:0]/FrameLockSlaves=0x00000002 # CRT-1
3584        nvidia-settings -a [gpu:1]/FrameLockSlaves=0x00000003 # CRT-0 and CRT-1
3585        nvidia-settings -a [gpu:2]/FrameLockSlaves=0x00000003 # CRT-0 and CRT-1
3586        nvidia-settings -a [gpu:3]/FrameLockSlaves=0x00000003 # CRT-0 and CRT-1
3587      
3588        # - Enable frame lock on master GPU
3589        nvidia-settings -a [gpu:0]/FrameLockEnable=1
3590      
3591        # - Enable frame lock on slave devices
3592        nvidia-settings -a [gpu:1]/FrameLockEnable=1
3593        nvidia-settings -a [gpu:2]/FrameLockEnable=1
3594        nvidia-settings -a [gpu:3]/FrameLockEnable=1
3595      
3596        # - Toggle the test signal
3597        nvidia-settings -a [gpu:0]/FrameLockTestSignal=1
3598        nvidia-settings -a [gpu:0]/FrameLockTestSignal=0
3599      
3600      
3601
3602
3603 25I. LEVERAGING FRAME LOCK/GENLOCK IN OPENGL
3604
3605 With the GLX_NV_swap_group extension, OpenGL applications can be implemented
3606 to join a group of applications within a system for local swap sync, and bind
3607 the group to a barrier for swap sync across a frame lock group. A universal
3608 frame counter is also provided to promote synchronization across applications.
3609
3610
3611 25J. FRAME LOCK RESTRICTIONS:
3612
3613 The following restrictions must be met for enabling frame lock:
3614
3615   1. All display devices set as client in a frame lock group must have the
3616      same mode timings as the server (master) display device. If a House Sync
3617      signal is used (instead of internal timings), all client display devices
3618      must be set to have the same refresh rate as the incoming house sync
3619      signal.
3620
3621   2. All X Screens (driving the selected client/server display devices) must
3622      have the same stereo setting. See Appendix B for instructions on how to
3623      set the stereo X option.
3624
3625   3. The frame lock server (master) display device must be on a GPU on the
3626      primary connector to a G-Sync device.
3627
3628   4. If connecting a single GPU to a G-Sync device, the primary connector must
3629      be used.
3630
3631   5. In configurations with more than one display device per GPU, we recommend
3632      enabling frame lock on all display devices on those GPUs.
3633
3634   6. Virtual terminal switching or mode switching will disable frame lock on
3635      the display device. Note that the glXQueryFrameCountNV entry point
3636      (provided by the GLX_NV_swap_group extension) will only provide
3637      incrementing numbers while frame lock is enabled. Therefore, applications
3638      that use glXQueryFrameCountNV to control animation will appear to stop
3639      animating while frame lock is disabled.
3640
3641
3642
3643 25K. SUPPORTED FRAME LOCK CONFIGURATIONS:
3644
3645 The following configurations are currently supported:
3646
3647   1. Basic Frame Lock: Single GPU, Single X Screen, Single Display Device with
3648      or without OpenGL applications that make use of Quad-Buffered Stereo
3649      and/or the GLX_NV_swap_group extension.
3650
3651   2. Frame Lock + TwinView: Single GPU, Single X Screen, Multiple Display
3652      Devices with or without OpenGL applications that make use of
3653      Quad-Buffered Stereo and/or the GLX_NV_swap_group extension.
3654
3655   3. Frame Lock + Xinerama: 1 or more GPU(s), Multiple X Screens, Multiple
3656      Display Devices with or without OpenGL applications that make use of
3657      Quad-Buffered Stereo and/or the GLX_NV_swap_group extension.
3658
3659   4. Frame Lock + TwinView + Xinerama: 1 or more GPU(s), Multiple X Screens,
3660      Multiple Display Devices with or without OpenGL applications that make
3661      use of Quad-Buffered Stereo and/or the GLX_NV_swap_group extension.
3662
3663   5. Frame Lock + SLI SFR, AFR, or AA: 2 GPUs, Single X Screen, Single Display
3664      Device with either OpenGL applications that make use of Quad-Buffered
3665      Stereo or the GLX_NV_swap_group extension. Note that for Frame Lock + SLI
3666      Frame Rendering applications that make use of both Quad-Buffered Stereo
3667      and the GLX_NV_swap_group extension are not supported. Note that only
3668      2-GPU SLI configurations are currently supported.
3669
3670   6. Frame Lock + Multi-GPU SFR, AFR, or AA: 2 GPUs, Single X Screen, Single
3671      Display Device with either OpenGL applications that make use of
3672      Quad-Buffered Stereo or the GLX_NV_swap_group extension. Note that for
3673      Frame Lock + Multi-GPU Frame Rendering applications that make use of both
3674      Quad-Buffered Stereo and the GLX_NV_swap_group extension are not
3675      supported.
3676
3677
3678 ______________________________________________________________________________
3679
3680 Chapter 26. Configuring SDI Video Output
3681 ______________________________________________________________________________
3682
3683 Broadcast, film, and video post production and digital cinema applications can
3684 require Serial Digital (SDI) or High Definition Serial Digital (HD-SDI) video
3685 output. SDI/HD-SDI is a digital video interface used for the transmission of
3686 uncompressed video signals as well as packetized data. SDI is standardized in
3687 ITU-R BT.656 and SMPTE 259M while HD-SDI is standardized in SMPTE 292M. SMPTE
3688 372M extends HD-SDI to define a dual-link configuration that uses a pair of
3689 SMPTE 292M links to provide a 2.970 Gbit/second interface. SMPTE 424M extends
3690 the interface further to define a single 2.97 Gbit/second serial data link.
3691
3692 SDI and HD-SDI video output is provided through the use of the NVIDIA driver
3693 along with an NVIDIA SDI output daughter board. In addition to single- and
3694 dual-link SDI/HD-SDI digital video output, frame lock and genlock
3695 synchronization are provided in order to synchronize the outgoing video with
3696 an external source signal (see Chapter 25 for details on these technologies).
3697 This section describes the setup and use of the SDI video output.
3698
3699
3700 26A. HARDWARE SETUP
3701
3702 Before you begin, you should check that your hardware has been properly
3703 installed. If you are using the Quadro FX 4000 SDI, the SDI/HD-SDI hardware is
3704 located on the dual-slot card itself, and after installing the card, no
3705 additional setup is necessary. If you are using the Quadro FX 4500/5500 SDI or
3706 Quadro FX 4600/5600 SDI II, the following additional setup steps are required
3707 in order to connect the SDI daughter card to the graphics card. These steps
3708 must be performed when the system is off.
3709
3710   1. Insert the NVIDIA SDI Output card into any available expansion slot
3711      within six inches of the NVIDIA Quadro graphics card. Secure the card's
3712      bracket using the method provided by the chassis manufacturer (usually a
3713      thumb screw or an integrated latch).
3714
3715   2. Connect one end of the 14-pin ribbon cable to the G-Sync connector on the
3716      NVIDIA Quadro graphics card, and the other end to the NVIDIA SDI output
3717      card.
3718
3719   3. On Quadro FX 4500/5500 SDI, connect the SMA-to-BNC cables by screwing the
3720      male SMA connectors onto the female SMA connectors on the NVIDIA SDI
3721      output card. On Quadro FX 4600/5600 SDI II, this step is not necessary:
3722      the SDI II has BNC connectors rather than SMA connectors.
3723
3724   4. Connect the DVI-loopback connector by connecting one end of the DVI cable
3725      to the DVI connector on the NVIDIA SDI output card and the other end to
3726      the "north" DVI connector on the NVIDIA Quadro graphics card. The "north"
3727      DVI connector on the NVIDIA Quadro graphics card is the DVI connector
3728      that is the farthest from the graphics card PCI-E connection to the
3729      motherboard. The SDI output card will NOT function properly if this cable
3730      is connected to the "south" DVI connector.
3731
3732 Once the above installation is complete, you may boot the system and configure
3733 the SDI video output using nvidia-settings. These instructions assume that you
3734 have already successfully installed the NVIDIA FreeBSD Accelerated Graphics
3735 Driver. If you have not done so, see Chapter 3 for details.
3736
3737
3738 26B. CLONE MODE CONFIGURATION WITH  'nvidia-settings'
3739
3740 SDI video output is configured through the nvidia-settings utility. See the
3741 'nvidia-settings(1)' man page, and the nvidia-settings online help (click the
3742 "Help" button in the lower right corner of the interface for per-page help
3743 information).
3744
3745 After the system has booted and X Windows has been started, run
3746 nvidia-settings as
3747
3748     % nvidia-settings
3749
3750 When the NVIDIA X Server Settings page appears, follow the steps below to
3751 configure the SDI video output.
3752
3753   1. Click on the "Graphics to Video Out" tree item on the side menu. This
3754      will open the "Graphics to Video Out" page.
3755
3756   2. Go to the "Synchronization Options" subpage and choose a synchronization
3757      method. From the "Sync Options" drop down click the list arrow to the
3758      right and then click the method that you want to use to synchronize the
3759      SDI output.
3760      
3761          Sync Method      Description
3762          -------------    --------------------------------------------------
3763          Free Running     The SDI output will be synchronized with the
3764                           timing chosen from the SDI signal format list.
3765          Genlock          SDI output will be synchronized with the external
3766                           sync signal.
3767          Frame Lock       The SDI output will be synchronized with the
3768                           timing chosen from the SDI signal format list. In
3769                           this case, the list of available timings is
3770                           limited to those timings that can be synchronized
3771                           with the detected external sync signal.
3772      
3773      
3774      Note that on Quadro FX 4600/5600 SDI II, you must first choose the
3775      correct Sync Format before an incoming sync signal will be detected.
3776
3777   3. From the top Graphics to Video Out page, choose the output video format
3778      that will control the video resolution, field rate, and SMPTE signaling
3779      standard for the outgoing video stream. From the "Clone Mode" drop down
3780      box, click the "Video Format" arrow and then click the signal format that
3781      you would like to use. Note that only those resolutions that are smaller
3782      or equal to the desktop resolution will be available. Also, this list is
3783      pruned according to the sync option selected. If genlock synchronization
3784      is chosen, the output video format is automatically set to match the
3785      incoming video sync format and this drop down list will be grayed out
3786      preventing you from choosing another format. If frame lock
3787      synchronization has been selected, then only those modes that are
3788      compatible with the detected sync signal will be available.
3789
3790   4. Choose the output data format from the "Output Data Format" drop down
3791      list.
3792
3793   5. Click the "Enable SDI Output" button to enable video output using the
3794      settings above. The status of the SDI output can be verified by examining
3795      the LED indicators in the "Graphics to SDI property" page banner.
3796
3797   6. To subsequently stop SDI output, simply click on the button that now says
3798      "Disable SDI Output".
3799
3800   7. In order to change any of the SDI output parameters such as the Output
3801      Video Format, Output Data Format as well as the Synchronization Delay, it
3802      is necessary to first disable the SDI output.
3803
3804
3805
3806 26C. CONFIGURATION FOR TWINVIEW OR AS A SEPARATE X SCREEN
3807
3808 SDI video output can be configured through the nvidia-settings X Server
3809 Display Configuration page, for use in TwinView or as a separate X screen. The
3810 SDI video output can be configured as if it were a digital flat panel,
3811 choosing the resolution, refresh rate, and position within the desktop.
3812
3813 Similarly, the SDI video output can be configured for use in TwinView or as a
3814 separate X screen through the X configuration file. The supported SDI video
3815 output modes can be requested by name anywhere a mode name can be used in the
3816 X configuration file (either in the "Modes" line, or in the "MetaModes"
3817 option). E.g.,
3818
3819
3820  Option "MetaModes" "CRT-0:nvidia-auto-select, DFP-1:1280x720_60.00_smpte296"
3821     
3822
3823 The mode names are reported in the nvidia-settings Display Configuration page
3824 when in advanced mode.
3825
3826 As well, the initial output data format, sync mode and sync source can be set
3827 via the Appendix B, Appendix B, and Appendix B. See Appendix B for
3828 instructions on how to set these X options.
3829
3830 Note that SDI "Clone Mode" as configured through the Graphics to Video Out
3831 page in nvidia-settings is mutually exclusive with using the SDI video output
3832 in TwinView or as a separate X screen.
3833
3834 ______________________________________________________________________________
3835
3836 Chapter 27. Configuring Depth 30 Displays
3837 ______________________________________________________________________________
3838
3839 This driver release supports X screens with screen depths of 30 bits per pixel
3840 (10 bits per color component) on NVIDIA Quadro GPUs based on G80 and higher
3841 chip architectures. This provides about 1 billion possible colors, allowing
3842 for higher color precision and smoother gradients.
3843
3844 When displaying a depth 30 image, the color data may be dithered to lower bit
3845 depths, depending on the capabilities of the display device and how it is
3846 connected to the GPU. Some devices connected via analog VGA, DisplayPort, and
3847 HDMI can display the full 10 bit range of colors. Devices connected via DVI,
3848 as well as laptop internal panels connected via LVDS, will be dithered to 8 or
3849 6 bits per pixel.
3850
3851 To work reliably, depth 30 requires X.Org 7.3 or higher and pixman 0.11.6 or
3852 higher.
3853
3854 In addition to the above software requirements, many X applications and
3855 toolkits do not understand depth 30 visuals as of this writing. Some programs
3856 may work correctly, some may work but display incorrect colors, and some may
3857 simply fail to run. In particular, many OpenGL applications request 8 bits of
3858 alpha when searching for FBConfigs. Since depth 30 visuals have only 2 bits of
3859 alpha, no suitable FBConfigs will be found and such applications will fail to
3860 start.
3861
3862 ______________________________________________________________________________
3863
3864 Chapter 28. NVIDIA Contact Info and Additional Resources
3865 ______________________________________________________________________________
3866
3867 If you believe that you have found a bug or have a problem that you need
3868 assistance with and cannot find the solution elsewhere, or if you have found
3869 inaccuracies in this document, send email to freebsd-gfx-bugs@nvidia.com
3870
3871
3872
3873 Additional Resources
3874
3875 XFree86 Video Timings HOWTO
3876
3877      http://www.tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/index.html
3878
3879 The X.Org Foundation
3880
3881      http://www.x.org/
3882
3883 OpenGL
3884
3885      http://www.opengl.org/
3886
3887
3888 ______________________________________________________________________________
3889
3890 Chapter 29. Credits
3891 ______________________________________________________________________________
3892
3893 The port of the NVIDIA driver to FreeBSD is due in no small part to the many
3894 contributions of Christian Zander <zander 'at' mail.minion.de> and Matthew N.
3895 Dodd <mdodd 'at' freebsd.org>.
3896
3897 ______________________________________________________________________________
3898
3899 Chapter 30. Acknowledgements
3900 ______________________________________________________________________________
3901
3902 The driver splash screen is decoded using 'libpng':
3903 http://libpng.org/pub/png/libpng.html
3904
3905 This NVIDIA FreeBSD driver contains code from the int10 module of the X.Org
3906 project.
3907
3908 The NetBSD implementations of the following compiler intrinsics are used for
3909 better portability: __udivdi3, __umoddi3, __divdi3, __moddi3, __ucmpdi2,
3910 __cmpdi2, __fixunssfdi, __fixunsdfdi, __ashldi3 and __lshrdi3. These carry the
3911 following copyright notice:
3912
3913 Copyright (c) 1992, 1993 The Regents of the University of California. All
3914 rights reserved. This software was developed by the Computer Systems
3915 Engineering group at Lawrence Berkeley Laboratory under DARPA contract BG
3916 91-66 and contributed to Berkeley. Redistribution and use in source and binary
3917 forms, with or without modification, are permitted provided that the following
3918 conditions are met: 1. Redistributions of source code must retain the above
3919 copyright notice, this list of conditions and the following disclaimer. 2.
3920 Redistributions in binary form must reproduce the above copyright notice, this
3921 list of conditions and the following disclaimer in the documentation and/or
3922 other materials provided with the distribution. 3. All advertising materials
3923 mentioning features or use of this software must display the following
3924 acknowledgement: This product includes software developed by the University of
3925 California, Berkeley and its contributors. 4. Neither the name of the
3926 University nor the names of its contributors may be used to endorse or promote
3927 products derived from this software without specific prior written permission.
3928 THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
3929 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
3930 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
3931 DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
3932 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
3933 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
3934 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
3935 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3936 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
3937 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3938
3939 ______________________________________________________________________________
3940
3941 Appendix A. Supported NVIDIA GPU Products
3942 ______________________________________________________________________________
3943
3944 For the most complete and accurate listing of supported GPUs, please see the
3945 Supported Products List, available from the NVIDIA FreeBSD x86 Graphics Driver
3946 download page. Please go to http://www.nvidia.com/object/unix.html, follow the
3947 Archive link under the FreeBSD x86 heading, follow the link for the 190.42
3948 driver, and then go to the Supported Products List.
3949
3950 For an explanation of the VDPAU features column, please refer to the section
3951 called "VdpDecoder" of Appendix G.
3952
3953
3954 A1. NVIDIA GEFORCE GPUS
3955
3956
3957     NVIDIA GPU product                    Device PCI ID      VDPAU features
3958     ----------------------------------    ---------------    ---------------
3959     GeForce 6800 Ultra                    0x0040             -
3960     GeForce 6800                          0x0041             -
3961     GeForce 6800 LE                       0x0042             -
3962     GeForce 6800 XE                       0x0043             -
3963     GeForce 6800 XT                       0x0044             -
3964     GeForce 6800 GT                       0x0045             -
3965     GeForce 6800 GT                       0x0046             -
3966     GeForce 6800 GS                       0x0047             -
3967     GeForce 6800 XT                       0x0048             -
3968     GeForce 7800 GTX                      0x0090             -
3969     GeForce 7800 GTX                      0x0091             -
3970     GeForce 7800 GT                       0x0092             -
3971     GeForce 7800 GS                       0x0093             -
3972     GeForce 7800 SLI                      0x0095             -
3973     GeForce Go 7800                       0x0098             -
3974     GeForce Go 7800 GTX                   0x0099             -
3975     GeForce 6800 GS                       0x00C0             -
3976     GeForce 6800                          0x00C1             -
3977     GeForce 6800 LE                       0x00C2             -
3978     GeForce 6800 XT                       0x00C3             -
3979     GeForce Go 6800                       0x00C8             -
3980     GeForce Go 6800 Ultra                 0x00C9             -
3981     GeForce 6600 GT                       0x00F1             -
3982     GeForce 6600                          0x00F2             -
3983     GeForce 6200                          0x00F3             -
3984     GeForce 6600 LE                       0x00F4             -
3985     GeForce 7800 GS                       0x00F5             -
3986     GeForce 6800 GS                       0x00F6             -
3987     GeForce 6800 Ultra                    0x00F9             -
3988     GeForce 6600 GT                       0x0140             -
3989     GeForce 6600                          0x0141             -
3990     GeForce 6600 LE                       0x0142             -
3991     GeForce 6600 VE                       0x0143             -
3992     GeForce Go 6600                       0x0144             -
3993     GeForce 6610 XL                       0x0145             -
3994     GeForce Go 6600 TE/6200 TE            0x0146             -
3995     GeForce 6700 XL                       0x0147             -
3996     GeForce Go 6600                       0x0148             -
3997     GeForce Go 6600 GT                    0x0149             -
3998     GeForce 6200                          0x014F             -
3999     GeForce 6500                          0x0160             -
4000     GeForce 6200 TurboCache(TM)           0x0161             -
4001     GeForce 6200SE TurboCache(TM)         0x0162             -
4002     GeForce 6200 LE                       0x0163             -
4003     GeForce Go 6200                       0x0164             -
4004     GeForce Go 6400                       0x0166             -
4005     GeForce Go 6200                       0x0167             -
4006     GeForce Go 6400                       0x0168             -
4007     GeForce 6250                          0x0169             -
4008     GeForce 7100 GS                       0x016A             -
4009     GeForce 8800 GTX                      0x0191             -
4010     GeForce 8800 GTS                      0x0193             -
4011     GeForce 8800 Ultra                    0x0194             -
4012     Tesla C870                            0x0197             -
4013     GeForce 7350 LE                       0x01D0             -
4014     GeForce 7300 LE                       0x01D1             -
4015     GeForce 7300 SE/7200 GS               0x01D3             -
4016     GeForce Go 7200                       0x01D6             -
4017     GeForce Go 7300                       0x01D7             -
4018     GeForce Go 7400                       0x01D8             -
4019     GeForce 7500 LE                       0x01DD             -
4020     GeForce 7300 GS                       0x01DF             -
4021     GeForce 6200                          0x0221             -
4022     GeForce 6200 A-LE                     0x0222             -
4023     GeForce 6150                          0x0240             -
4024     GeForce 6150 LE                       0x0241             -
4025     GeForce 6100                          0x0242             -
4026     GeForce Go 6150                       0x0244             -
4027     GeForce Go 6100                       0x0247             -
4028     GeForce 7900 GTX                      0x0290             -
4029     GeForce 7900 GT/GTO                   0x0291             -
4030     GeForce 7900 GS                       0x0292             -
4031     GeForce 7950 GX2                      0x0293             -
4032     GeForce 7950 GX2                      0x0294             -
4033     GeForce 7950 GT                       0x0295             -
4034     GeForce Go 7950 GTX                   0x0297             -
4035     GeForce Go 7900 GS                    0x0298             -
4036     GeForce 7600 GT                       0x02E0             -
4037     GeForce 7600 GS                       0x02E1             -
4038     GeForce 7300 GT                       0x02E2             -
4039     GeForce 7900 GS                       0x02E3             -
4040     GeForce 7950 GT                       0x02E4             -
4041     GeForce 7650 GS                       0x0390             -
4042     GeForce 7600 GT                       0x0391             -
4043     GeForce 7600 GS                       0x0392             -
4044     GeForce 7300 GT                       0x0393             -
4045     GeForce 7600 LE                       0x0394             -
4046     GeForce 7300 GT                       0x0395             -
4047     GeForce Go 7700                       0x0397             -
4048     GeForce Go 7600                       0x0398             -
4049     GeForce Go 7600 GT                    0x0399             -
4050     GeForce 6150SE nForce 430             0x03D0             -
4051     GeForce 6100 nForce 405               0x03D1             -
4052     GeForce 6100 nForce 400               0x03D2             -
4053     GeForce 6100 nForce 420               0x03D5             -
4054     GeForce 8600 GTS                      0x0400             A
4055     GeForce 8600 GT                       0x0401             A
4056     GeForce 8600 GT                       0x0402             A
4057     GeForce 8600 GS                       0x0403             A
4058     GeForce 8400 GS                       0x0404             A
4059     GeForce 9500M GS                      0x0405             A
4060     GeForce 8600M GT                      0x0407             A
4061     GeForce 9650M GS                      0x0408             A
4062     GeForce 8700M GT                      0x0409             A
4063     GeForce 8400 SE                       0x0420             -
4064     GeForce 8500 GT                       0x0421             A
4065     GeForce 8400 GS                       0x0422             A
4066     GeForce 8300 GS                       0x0423             -
4067     GeForce 8400 GS                       0x0424             A
4068     GeForce 8600M GS                      0x0425             A
4069     GeForce 8400M GT                      0x0426             A
4070     GeForce 8400M GS                      0x0427             A
4071     GeForce 8400M G                       0x0428             A
4072     GeForce 9400 GT                       0x042C             A
4073     GeForce 9300M G                       0x042E             A
4074     GeForce 7150M / nForce 630M           0x0531             -
4075     GeForce 7000M / nForce 610M           0x0533             -
4076     GeForce 7050 PV / nForce 630a         0x053A             -
4077     GeForce 7050 PV / nForce 630a         0x053B             -
4078     GeForce 7025 / nForce 630a            0x053E             -
4079     GeForce GTX 295                       0x05E0             A
4080     GeForce GTX 280                       0x05E1             A
4081     GeForce GTX 260                       0x05E2             A
4082     GeForce GTX 285                       0x05E3             A
4083     GeForce GTX 275                       0x05E6             A
4084     GeForce GTX 295                       0x05EB             A
4085     GeForce 8800 GTS 512                  0x0600             A
4086     GeForce 9800 GT                       0x0601             A
4087     GeForce 8800 GT                       0x0602             A
4088     GeForce 9800 GX2                      0x0604             A
4089     GeForce 9800 GT                       0x0605             A
4090     GeForce 8800 GS                       0x0606             A
4091     GeForce 9800M GTX                     0x0608             A
4092     GeForce 8800M GTS                     0x0609             A
4093     GeForce GTX 280M                      0x060A             A
4094     GeForce 9800M GT                      0x060B             A
4095     GeForce 8800M GTX                     0x060C             A
4096     GeForce 8800 GS                       0x060D             A
4097     GeForce 9600 GSO                      0x0610             A
4098     GeForce 8800 GT                       0x0611             A
4099     GeForce 9800 GTX/9800 GTX+            0x0612             A
4100     GeForce 9800 GTX+                     0x0613             A
4101     GeForce 9800 GT                       0x0614             A
4102     GeForce GTS 250                       0x0615             A
4103     GeForce 9800M GTX                     0x0617             A
4104     GeForce GTX 260M                      0x0618             A
4105     GeForce 9600 GT                       0x0622             A
4106     GeForce 9600 GS                       0x0623             A
4107     GeForce 9600 GSO 512                  0x0625             A
4108     GeForce GT 130                        0x0626             A
4109     GeForce GT 140                        0x0627             A
4110     GeForce 9800M GTS                     0x0628             A
4111     GeForce 9700M GTS                     0x062A             A
4112     GeForce 9800M GS                      0x062B             A
4113     GeForce 9800M GTS                     0x062C             A
4114     GeForce 9500 GT                       0x0640             A
4115     GeForce 9400 GT                       0x0641             A
4116     GeForce 9500 GT                       0x0643             A
4117     GeForce 9500 GS                       0x0644             A
4118     GeForce GT 120                        0x0646             A
4119     GeForce 9600M GT                      0x0647             A
4120     GeForce 9600M GS                      0x0648             A
4121     GeForce 9600M GT                      0x0649             A
4122     GeForce 9700M GT                      0x064A             A
4123     GeForce 9500M G                       0x064B             A
4124     GeForce 9650M GT                      0x064C             A
4125     GeForce GT 130M                       0x0652             A
4126     GeForce 9650 S                        0x0656             A
4127     GeForce 9300 GE                       0x06E0             B 1
4128     GeForce 9300 GS                       0x06E1             B 1
4129     GeForce 8400 GS                       0x06E4             A 1
4130     GeForce 9300M GS                      0x06E5             B 1
4131     GeForce G100                          0x06E6             B 1
4132     GeForce 9200M GS                      0x06E8             B 1
4133     GeForce 9300M GS                      0x06E9             B 1
4134     GeForce G 105M                        0x06EC             B 1
4135     GeForce G 103M                        0x06EF             B 1
4136     GeForce 7150 / nForce 630i            0x07E0             -
4137     GeForce 7100 / nForce 630i            0x07E1             -
4138     GeForce 7050 / nForce 610i            0x07E3             -
4139     GeForce 9100M G                       0x0844             B 1
4140     GeForce 8200M G                       0x0845             B 1
4141     GeForce 9100                          0x0847             B 1
4142     GeForce 8300                          0x0848             B 1
4143     GeForce 8200                          0x0849             B 1
4144     nForce 730a                           0x084A             B 1
4145     GeForce 9200                          0x084B             B 1
4146     nForce 980a/780a SLI                  0x084C             B 1
4147     nForce 750a SLI                       0x084D             B 1
4148     GeForce 8100 / nForce 720a            0x084F             -
4149     GeForce 9400M G                       0x0862             B 1
4150     GeForce 9400M                         0x0863             B 1
4151     GeForce 9300 / nForce 730i            0x086C             B 1
4152     GeForce G102M                         0x0872             B 1
4153     GeForce G102M                         0x0873             B 1
4154     ION                                   0x087D             B 1
4155     GeForce GT 220                        0x0A20             C
4156     GeForce GT 230M                       0x0A2A             C
4157     GeForce GT 240M                       0x0A34             C
4158     GeForce G210                          0x0A60             C
4159     GeForce G210M                         0x0A74             C
4160     GeForce GTS 260M                      0x0CA8             C
4161     GeForce GTS 250M                      0x0CA9             C
4162
4163
4164
4165 A2. NVIDIA QUADRO GPUS
4166
4167
4168     NVIDIA GPU product                    Device PCI ID      VDPAU features
4169     ----------------------------------    ---------------    ---------------
4170     Quadro FX 4000                        0x004E             -
4171     Quadro FX 4500                        0x009D             -
4172     Quadro FX Go1400                      0x00CC             -
4173     Quadro FX 3450/4000 SDI               0x00CD             -
4174     Quadro FX 1400                        0x00CE             -
4175     Quadro FX 3400/Quadro FX 4000         0x00F8             -
4176     Quadro NVS 440                        0x014A             -
4177     Quadro FX 540M                        0x014C             -
4178     Quadro FX 550                         0x014D             -
4179     Quadro FX 540                         0x014E             -
4180     Quadro NVS 285                        0x0165             -
4181     Quadro FX 5600                        0x019D             -
4182     Quadro FX 4600                        0x019E             -
4183     Quadro NVS 110M                       0x01DA             -
4184     Quadro NVS 120M                       0x01DB             -
4185     Quadro FX 350M                        0x01DC             -
4186     Quadro FX 350                         0x01DE             -
4187     Quadro NVS 210S / GeForce 6150LE      0x0245             -
4188     Quadro NVS 510M                       0x0299             -
4189     Quadro FX 2500M                       0x029A             -
4190     Quadro FX 1500M                       0x029B             -
4191     Quadro FX 5500                        0x029C             -
4192     Quadro FX 3500                        0x029D             -