English
outdated translations: Español/Français/Deutsch
FAQ - Frequently asked questions
Contents
- General Questions
- I want to donate to your project...
- But what about the pledge at http://www.pledgebank.com/nouveaudriver?
- When can we expect a working driver ?
- What is the current status of the driver?
- I want to help! What can I do?
- What is an easy route to becoming a developer?
- How do I run REnouveau and submit the results?
- Do you get any support from NVidia?
- Why are you doing this?
- Hardware donations
- Technical questions
- How did you find out how NVidia cards work then?
- Why don't you just disassemble the proprietary driver?
- So go to a country where it's not illegal and produce specs!
- Do you support dual head / Randr 1.2?
- Which cards are you trying to support?
- Which Xorg version do I need?
- Which systems do you support?
- Is hibernation supported?
- Will you support PS3 linux?
- Will you support Xv?
- Will you support XvMC (hardware accelerated video decoding)?
- Glxgears works! But you said there is no 3D?
- Troubleshooting
- Nouveau does not work! (using nvidiafb?)
- Cannot insert drm.ko, "duplicated symbol"
- Inserting nouveau.ko fails
- Compiling xf86-video-nouveau fails: No nouveau_drm.h found.
- Undefined symbol "GlxSetVisualConfigs"
- Syntax error near unexpected token RANDR
- Fonts are gone
- I get *ERROR* Unknow ctx_voodoo for chipset ...
- 2D acceleration in Nouveau is unbearably slow
- Latest git Xorg (from around April 24th 2008) doesn't build libGLcore.so
- Nouveau sees only 256 MB of video memory, but I have more
- Xorg: nouveau_dri.so is missing (AIGLX error)
- Renouveau problems
- Legal questions
1. General Questions
1.1. I want to donate to your project...
You can help us by donating your time. Documentation, webpage, Reverse engineering or coding: all offer vacancies. We currently don't accept money. We do accept hardware however (especially newer NVIDIA cards would be needed to improve support for them), see below.
1.2. But what about the pledge at http://www.pledgebank.com/nouveaudriver?
The pledge was setup without us knowing and was in no way initiated by us. When we heard about it, we honestly didn't expect it to succeed. Well seems we were wrong. Currently (10.01.2007) the initiator of the pledge is working out the payment details and will let us know how to proceed. Please have a look at the pledge page and / or his personal blog for newest information about that.
Update 6th Dec 2008: The pledge still has not worked out, because we could not find an organization willing to take care of the money transfer. Due to tax and legal issues it is not worth the trouble and costs to accept the money without a proper organization handling the paper work.
1.3. When can we expect a working driver ?
It really is not easy to predict any dates, as showstoppers may appear anytime. Very few, usually none, of the developers are paid to work on Nouveau, so all progress depends on their free time and interests.
1.4. What is the current status of the driver?
Please, see the FrontPage.
1.5. I want to help! What can I do?
The very best you can do is to become a developer! We need more developers. Practically nothing says better "I love you, developers" than sending a nice clean patch that fixes a real problem.
Otherwise, probably the easiest thing is to run REnouveau and send us the output, but there are enough dumps already, though more will not hurt. A more involved, but probably also a bit more useful, thing is to send us an mmio-trace dump (MmioTrace) (NV30 and NV40 not needed anymore).
1.6. What is an easy route to becoming a developer?
First you should have some programming skills with the C language. That's pretty much the only requirement, everything else you can learn on the way. Knowing something about graphics or hardware is a big plus.
Becoming a developer usually starts by finding something you think should be fixed, be it in the driver or the reverse engineering tools. When you find that thing, ask people about it, read the relevant code, find stuff out. A good way to start searching for your own developer's itch is to simply start using Nouveau, hanging around on the IRC channel, and maybe subscribing to some mailing lists. When you find a good itch, you have to scratch - this is what drives developers. And when you scratch, the itch usually spreads
Our IntroductoryCourse is recommended as a first read for everyone thinking about becoming a developer.
1.7. How do I run REnouveau and submit the results?
The instructions to get renouveau are in the page REnouveau. For guidelines on packaging the results please read REnouveauDumps. You can check the list of current dumps at http://people.freedesktop.org/~jpakkane/ren/ .
1.8. Do you get any support from NVidia?
No we don't get any support from NVidia, neither specs nor docs nor sources. We started our code from the nv Xorg driver. That driver is being maintained by NVidia, supports all cards but only for 2D and nv's 2D acceleration is very slow compared to nouveau. See "How did you find out how NVidia cards work then?"
1.9. Why are you doing this?
We can't give you the answer, as each of the project members has his own motivation. Just a few answers from our staff, we got when this question was raised:
- Don't like binary blobs
- Want to give back to the OSS community
- Want to learn driver programming
- Yes, we can develop our own drivers regardless of what people at NVidia may think
- Support for missing features
- Support for operating systems not supported by NVidia (any PowerPC based OS for example)
- Just for the fun of it
- Binary driver keeps crashing even in 2D
- Slow Xorg "nv" driver (slow in performance and slow to get new card support)
So pick the reasons you feel are important, chances are that quite a few project members will agree with you pick
1.10. Hardware donations
While many of us already have enough hardware to keep us busy for several weeks, we are usually interested in hardware donations, even of old cards. If you have a card to donate, please write to the Nouveau mailing list, and tell what card you have. The people involved in nouveau development will try to answer you as soon as possible.
2. Technical questions
2.1. How did you find out how NVidia cards work then?
Basically, we store the state of the card before and after running a simplistic OpenGL program. After that we diff the states in order to find out, what was sent to the card. See our REnouveau documentation for further information. We also look at how the proprietary kernel driver accesses the card registers by intercepting the accesses using MmioTrace. There are also other tools to watch the card.
2.2. Why don't you just disassemble the proprietary driver?
Because in some notable countries that would be illegal, and put the whole project and users in jeopardy.
2.3. So go to a country where it's not illegal and produce specs!
Ok, the techincal answer: The Nouveau project needs to know how to drive the hardware. We can find that out without disassembling the proprietary driver (the blob). We are not trying to duplicate the design of the blob, because there exists the DRI we are using. The blob also has its own kernel interfaces, which most likely are not such quality that they could ever go into the mainline kernel - they are specific to the blob and don't care about the DRI/DRM infrastructure. We also have Mesa and Gallium to provide the OpenGL interfaces, the blob has its own version of everything. We really don't want to try to understand or even see all the kludges and hacks that might exist in the blob. Disassembling the blob would be a great effort and produce a lot of useless information, and could still become a legal problem. In short: disassembling is a lot more trouble than it's worth.
Besides, many developers already are in countries, where it is not straightforwardly illegal to dissassemble the blob. However, none of the developers are lawyers, so we prefer to stay well clear from any potential legal issues.
2.4. Do you support dual head / Randr 1.2?
Yes, Randr 1.2 is now the default. If you want to disable it, add
- Option "Randr12" "off"
to the device section of your xorg.conf. There is a summary bug for all Randr12 bugs. Testers are welcome to help fixing any remaining issues.
2.5. Which cards are you trying to support?
Everything starting from NV04. Older cards may see some support when everything is working and the developers have time to do this.
2.6. Which Xorg version do I need?
The absolute minimum is Xorg version 7.1. RandR 1.2 support requires at least Xorg 7.3. The recommended version of xorg-server is 1.5.x (found in Xorg 7.4) or later, earlier versions contain bugs and performance issues with e.g. EXA support.
2.7. Which systems do you support?
The developers are currently working on Linux, where Nouveau runs on AMD64, x86 (UP and SMP) and PowerPC. Support for the various BSD flavours should appear eventually, but there are very few, if any, developers on BSD.
2.8. Is hibernation supported?
Not yet, but is under investigation. It's very complex to implement because the card has to be carefully reprogrammed to the state in which it was at suspend time.
2.9. Will you support PS3 linux?
The PS3 has an nvidia graphics chip of the G70 family (called RSX), and a project has been started for PS3 specifically to take advantage of that chip. A way to use the chip for 3D has been found with some firmware versions, however sony quickly closed it down, and seems willing to close any way to properly use the RSX under linux. Therefore, we do not advise getting a PS3 for the purpose of using the RSX under linux.
2.10. Will you support Xv?
We do support Xv. Nouveau uses the "nv" code to support Xv, which was improved by ArthurHuillet and it provides two texture adapters which use the 3D engine of the NV30 and NV40 cards. They provide bilinear and high-quality bicubic filtering.
2.11. Will you support XvMC (hardware accelerated video decoding)?
XvMC (X-Video Motion Compensation) might be supported someday, but this is not considered high-priority at the moment.
2.12. Glxgears works! But you said there is no 3D?
Yes, glxgears should work just fine. Mesa can render glxgears and many other programs using software, and it is slow. There is no 3D hardware acceleration for end users (See FrontPage).
3. Troubleshooting
3.1. Nouveau does not work! (using nvidiafb?)
You must use Xorg version 7.1 or later and have to disable the kernel framebuffer driver for virtual console (nvidiafb is bad for us, don't use it). This is for 2D support. 3D is not supported, which means that if you want to try 3D acceleration or you have problems with it, you are on your own, unless you are looking to contribute patches.
3.2. Cannot insert drm.ko, "duplicated symbol"
Make sure that you have not set CONFIG_DRM to yes in your kernel config.
3.3. Inserting nouveau.ko fails
drm.ko needs to be inserted first. Make sure you are inserting the drm.ko that was built at the same time as nouveau.ko. Your kernel might provide another drm.ko which is incompatible.
3.4. Compiling xf86-video-nouveau fails: No nouveau_drm.h found.
Make sure that nouveau_drm.h lies in a path, which can be found by your compiler. You do not have to install it for that. To build the drm tree without installing it, use
- /configure --prefix=$PWD/install make install export PKG_CONFIG_PATH=$PWD/install cd ../your-checkout-of-xf86-videou-nouveau sh autogen.sh make
3.5. Undefined symbol "GlxSetVisualConfigs"
X: symbol lookup error: nouveau_drv.so: undefined symbol: GlxSetVisualConfigs
You may need to Load "glx", or you may still have the nvidia GLX driver installed, and need to use the xorg one instead. Often the nvidia module will be /usr/lib/xorg/modules/libglx.so, with the original xorg glx in /usr/lib/xorg/modules/extensions/libglx.so, in which case you can just move the nvidia .so out of the way.
3.6. Syntax error near unexpected token RANDR
syntax error near unexpected token RANDR when running ./configure on xf86-video-nouveau means that you are probably missing X development libraries. (On Ubuntu, try apt-get install xorg-dev; on Fedora, yum install xorg-x11-server-sdk) You may also have to re-run autogen.sh to regenerate configure.
Note! This can also happen if you have built Xorg using git as per xorg modular build instructions.
The issue arises as automake cannot find the xorg m4 macros as when using the modular build example, the xorg aclocal m4 files will be installed in a non-standard location. To fix up this issue, first locate your default aclocal directory - use this command to find it:
aclocal --print-ac-dir
In this directory, create a file called 'dirlist'. This file can contain paths to alternate aclocal directories, one per line. Add the directory location to the xorg aclocal directory, e.g. /usr/X11R7/share/aclocal
automake will now find the xorg m4 macros, and the syntax error should be fixed.
3.7. Fonts are gone
This is a known problem with Xorg 7.2. Try Option "MigrationHeuristic" "greedy" in xorg.conf as a workaround.
3.8. I get *ERROR* Unknow ctx_voodoo for chipset ...
NVidia cards need an init value which seems to be different from card to card. We need a mmio-trace to find out this value. Please do a MmioTrace and report back.
3.9. 2D acceleration in Nouveau is unbearably slow
There are three major things known to make Nouveau 2D slow:
- old X server: xserver should be at least version 1.5.x, see your Xorg.log for the version info.
you have NV50 class hardware (Geforce 8000, 9000 series etc.): you are not running a compositing (window) manager. NV50 EXA acceleration needs a compositing manager running, xcompmgr for instance. This is a temporary workaround. Do not use an OpenGL based compositing manager.
- you are using OpenGL: all OpenGL is software rendered, hence slow. If your desktop environment, e.g. KDE4, is using OpenGL to render the window and the desktop, it will be terribly slow. KDE4 can be configured to use Xrender instead of OpenGL.
If these hints do not help, see if there are any errors in your kernel or Xorg logs, and consult the Bugzilla.
3.10. Latest git Xorg (from around April 24th 2008) doesn't build libGLcore.so
This is a slight gotcha. From around the end of April, 2008, libGLcore.so is now built from the latest git mesa tree.
- To build:
Build xorg normally. Build mesa normally (make linux-dri e.g.). Now to build libGLcore.so in mesa tree:
make glcore make glcore-install
This creates and installs libGLcore.so in your xorg system location: ...X11R7/lib/modules/dri/libGLcore.so
3.11. Nouveau sees only 256 MB of video memory, but I have more
Only 256 MB of the video memory is directly mappable to the CPU, because the maximum PCI resource slot (BAR) size is 256 MB. Only the GPU can access the video memory above the first 256 MB. This currently limits Nouveau to 256 MB, but in the future a proper memory manager should give (indirect) access to all of the video memory.
3.12. Xorg: nouveau_dri.so is missing (AIGLX error)
In the Xorg log you get:
(EE) AIGLX error: dlopen of /usr/lib64/dri/nouveau_dri.so failed (/usr/lib64/dri/nouveau_dri.so: cannot open shared object file: No such file or directory) (EE) AIGLX: reverting to software rendering
This is good, because nouveau_dri.so is the Gallium3D driver, and as you know, it is in development and not supported. It would only bring trouble, especially with AIGLX. To silence the harmless warning, you can add the following to xorg.conf ServerLayout section:
Option "AIGLX" "false"
4. Renouveau problems
4.1. renouveau does not compile: cannot find -lXvMCNVIDIA
This is usually due to the missing symbolic link /usr/lib/libXvMCNVIDIA.so. You can create it with something like
ln -s /usr/lib/libXvMCNVIDIA.so.1.0.8776 /usr/lib/libXvMCNVIDIA.so
as root. Substitute the name libXvMCNVIDIA.so.1.0.8776 with the version you have.
4.2. renouveau says "device detection failed"
Usually this is due to broken nvidia driver installation. glxinfo should report
direct rendering: Yes server glx vendor string: NVIDIA Corporation ... client glx vendor string: NVIDIA Corporation ... OpenGL vendor string: NVIDIA Corporation
- If it does not, try to reinstall the proprietary driver from nvidia.
4.3. renouveau segfaults
Let me guess, you have a PCI-E card and nVidia driver version 9xxx. If you do, then it is a known "feature". The driver maps memory areas in and out and renouveau loses the track. You can try to downgrade to driver version 8xxx. If you do not have PCI-E and 9xxx, let us know.
It would be useful to Renouveau developers if you could run renouveau under gdb. Instead of running renouveau, use the command gdb ./renouveau and you should get the gdb prompt. Command run and it should start renouveau and crash at some point, then you should be facing the gdb prompt again. Use the command bt and save the output. You can use e.g. http://rafb.net/paste/ and post a link to #nouveau IRC channel. Finally, you can kill renouveau with command kill and exit gdb with quit.
4.4. renouveau: Creating probe window failed.
You are likely using a 16-bit color depth on your desktop. Please, try again with 24-bit colors. Some Renouveau tests requires the stencil buffer to be available, and it's only there in 24-bit color mode (24 bits for depth, 8 for stencil).
4.5. renouveau crashes in test X
Each test should be independent of each other. However there are still some tests that don't restore the OpenGL state like it was before running the test. For example, we have reports saying that nv_fragment_program2 test crashes sometimes if ran for the whole test list, but does not crash if it's the only test ran. Proper fix is to find which test ran before makes it crash, and try to rewrite it in a more proper way.
5. Legal questions
5.1. Do you violate NVidias EULA with renouveau?
No. We don't touch NVidia's binary blob at all, we just observe what the driver changes in memory. All config data we have, is exposed in some /proc or /dev files. And running OpenGL is the main reason why you would use the driver. That is no violation.
5.2. What license does Nouveau use?
Nouveau is made of 3 components : DDX (2D driver), DRI (3D driver) and DRM (kernel component). The DDX and DRI use the MIT license, the DRM uses a dual MIT/GPL license. REnouveau is under GPL. ²

