The irregular Nouveau-Development companion
Issue for December, 8th
1. Intro
When we added the first image to the TiNDC last time, we moved the image to a different server. This was to get a rough estimate on how many times the TiNDC was read as the WIKI doesn't seem to give normal users this kind of information. After some feedback in the channels I expected about 20-30 server requests and was only slightly of. When we last checked we reached around 2400 unique requests. And that despite the fact, the TiNDC is hidden on a secondary page.
Thank you for your interest and from this issue on, we will announce and link the TiNDC from the frontpage. Back issues will stay on the old known page too.
In Germany, there is www.pro-linux.de which is a well known news page for Linux related news. I noticed that you will find an article on our project there under http://www.pro-linux.de/news/2006/10526.html (in german!).
If you find any other articles on newspages, tell KoalaBR or mention it on the irc channel. Perhaps it will be time for a "In the press" section.
2. Current status
So, since last time not much visible has changed, but there was a bunch of important works behind the scenes.
Marcheu still kept on working on software transform clipping and lightning both as a fallback for newer cards and as the main code path for older cards. When pq finished his work on the pci-id parser and nouveau_card.c generator, Marcheu integrated the changes to the current nouveau version. pq then started to find out more about unknown or not fully known fifo commands on NV2x.
ajmitch did one of the Junior tasks from our TODO list: XF86DRI clean up.
Darktama was hacking away on implementing more 3d features so that finally "glxgears" would be running. His code has some limitations however:
- it needs shaders
- it can't use more than one subchannel / object
- restricted to one OpenGL client (more could be run but would encounter serious state corruption leading to crashes or even lockups)
So we still need a working graphic context switch. NV40 and newer cards can do this through hardware while older cards need an IRQ handler doing the needed switch of the card state.
Combining forces with darktama and marcheu, mat found out some important bits for the RAMFC register: The size of context can be configured to either 32 or 64 bit. So mat used this knowledge and came to the rescue for NV2x based cards. His patch faked a context switch. That means, that everything is setup and handled correctly for the so called PGRAPH switch, but the real data for the states is not swapped.
I can hear you moan, "Now just copy the data, that can't be that hard!". Well, it can and in fact it is. Problems stem from the fact that we don't know enough about the state of the card. Which registers and memory regions are used for which purpose. We know quite a bit already, as once again Darktama has shown: He has a working NV40+ version which does a complete context switch and thus is able to run more than one client. Drawback: Initialisation stills needs to be done by the nvidia driver (which can be removed after init). Want to know, how glxgears looks like, if you don't have correctly working depth buffers and clearing is missing? Look no further than here:
Now after some more hacking, double buffering and clearing does work. Same output now with working clears and double buffering (about one week later)
Note: Double buffering is not fully working yet, as the buffers are always copied to position 0,0. But single buffered programs will honor the window position. Nevertheless, impressive work by darktama.
Airlied is currently working on radeon stuff (see his blog on kernelplanet for further info), but he mentions that he will be working on nouveau after randr++ for radeon is finished. And according to his blog, his proposal to talk about nouveau at the Linux Conf Australia was just accepted.
Not to be left behind, pmdata continued his quest on finding out how the parameters for the various lighting commands have to be calculated and found it out for 4 out of 7 parameters. He is still looking into the 3 remaining parameters.
Last but not least, Marcheu is working on a shader optimizer for cards NV30+. This is needed as most work on those card is done by using some kind of shader code. Good optimization would lead to better performance.
3. Help needed
Another topic which needs fixing is our feature matrix in the Wiki. It is far from up to date. You could pester pmdata, Marcheu and Darktama in order to find out how what has been done (and furthermore, you could read the back issues of TiNDC). Otherwise we will sooner or later delete this page, as it only leads to confusion.
We always need help, just drop into #nouveau on freenode.org and offer your help. Currently we would really like someone with the newly released NVidia 8800 to come to our channel and offer testing help. It seems as if some new objects were introduced with this new generation of cards. Furthermore, we just noticed that we are lacking SLI setup dumps. So if you are using an SLI setup under Linux, please run renouveau and contact us!