The irregular Nouveau-Development companion

Issue for April, 25th

Intro

Not much to report during the last two weeks, as we are waiting for the TTM manager to appear in mainstream DRM in a usable form. Without that we are basically stuck. Using the old or an home made memory manager will lead to duplicated work, while just waiting will get us nowhere.

Google has announced their picks for the Summer of Code projects. Unfortunately, Nouveau didn't get a slot. Amidst the despair Egbert Eich from Xorg came into our channel and announced the Xorg "Vacation of Code", which aims to be a drop in replacement for the rejected Xorg projects and thus for our projects too. Details remain a bit sketchy though, as Xorg is trying this for the first time and problems get solved when they arise. However, all students who proposed rejected Xorg projects are already contacted by Xorg and got informed.

As of 20.04.2007 we got one project accepted: Xv support for Nouveau by Ahuillet. And additionally the project to create a new algorithm for the S3TC texture compression algorithm (which is patented) was accepted too. This will be for the good of all drivers, not only nouveau. See the official announcement here: http://summer.cs.pdx.edu/

Congratulations to all involved. And to those whose application got rejected twice: We are sorry! Nevertheless, we would really like you to still work on nouveau, if you could find the time.

Regarding the pledge money: Money transfer is still pending because of problems on our side. If marcheu accepts the money, we would need to pay a hefty amount of taxes, so you'd need to have a non-profit organisation to handle it for you. However, we can't create and manage one (this project has only volunteers working in their free time), so we are trying to get a non-profit organisation to accept us as a sub project and handle the money for us. However, this process is only slowly advancing.

Current status

pq and z3ro continued their work on refining the rules-ng schema plus started to implement and test some things. A very preliminary run about a mmio trace yielded about 820k lines of converted / annotated lines. As pq is manually checking each line for correctness, we can't give you a final result yet (he started only on 19.04.2007) :)

jwstolk started his work to find common code sequences in mmio dumps. This could lead to creating macros, which are nothing else but a descriptive name for a long sequence of otherwise non-understandable register writes (non-understandable at least for common dwellers of the channel, our fearless leaders do disassemble those writes into mnemonics from memory :) )

Furthermore, the headergen.py was finished by pq too. This is a script which creates from the afore mentioned database a header file which includes #define's of addresses, names and possible values for all known registers.

Over the Easter weekend hughsie and darktama tried to get hughsie's 7300 Go card going (ahem). After some ground work regarding the voodoo, darktama whipped up a patch which led to success. The card is working including glxgears.

And now a list of noteworthy events in the channel, which can be summed up in one sentence:

KoalaBR's script of downloading, compiling and running renouveau was updated after user feedback.

A script to gather all important information about the system after a nouveau crash is in the making and pending review of the higher beings of the project.

Aeichner tried to port nouveau to *BSD but was stopped due to the fact that the DRM on BSD is lagging behind in features.

Darktama has a small disassembler which partly decodes the context voodoo values.

austin1 got glxinfo and glxgears working on his NV42.
It seems that we have problems for cards < NV40. We often get PGRAPH_ERROR interrupts. It seems as if our context init isn't good enough. Marcheu is looking into it.

stephan_2303 helped us get nouveau running on a NV4B. In the process of testing his patches, it was deduced that the top 4 bits of NV03_PFIFO_RAMHT defines the size of the hash tables. Every context on a NVidia card has objects assign to / created for it. To find these objects, a hash table is used. Unfortunately an important test in renouveau was disabled earlier this year because it caused renouveau to frequently crash. We reenabled this test again (and pq crashed his system when testing it, seems as if he has to start from the beginning comparing the mmio-parse results :) )

KoalaBR did some tests with some 2D games (majesty and Railroad Tycoon 2) and found some problems when the game screen / window was updated. This led to severe display corruption until nothing useful could be seen on the screen. Further investigation showed that blending was at fault. Disabling blending led to correct results.

Our leading example for persistance for this issue is jb17some: After watching his progress over the last 2 issues of TiNDC he finally got context switching working on his NV49. The patch necessary was nearly the same as for NV4B except for some small adjustments.

More problems with our infrastructure: We reached the hard limit for data space storage on ?SourceForge. That messed up our uploads and so we needed to disable it. If you sent in some dump(s) that is why you don't see them updated on JussiP's page.

Do you remember renouveau our reverse engineering tool? Well, after being neglected for a long time, some things happened lately:

Support script by KoalaBR, to download, compile and run it automatically.

interesting registers test reenabled again (as mentioned above)

Version information is encoded into the output
Beyond that, we are thinking about whether we should / could seperate renouveau into 2 different programs: dumper and parser. The dumper would just dump binary information (instead of writing them out in human readable form like it is now) while the parser would take that data and transform it into something readable. This would allow for a similar scheme like pq is currently implementing for the mmio dumps. Additionally, the generated dumps would be much smaller.

randr1.2 branch got some attention during the last days. It got all changes from master merged and saw a few additions. Shortly after that pq did some tests with his setup and found some display problems (Wrong colors, screen shifted to the right). The good thing however is, that Airlied get exactly the same display errors on his setup. So compared to the tests before, there was progress to be seen. Still, work is going on slowly and there is still much work to do.

Help needed

Ignoring the problems with sf, we are looking for SLI and 8x00 dumps. If someone with some programming knowledge and an 8x00 card would be willing to help us, we would be grateful.

Furthermore we are looking for MMio dumps of cards which currently do not run glxgears correctly.

And if you are the guy who got the NV44 working: We are still waiting for your patch (I think your nick was "mg").