The irregular Nouveau-Development companion

Issue for March, 3rd

Intro

This time the issue was delayed because I decided to visit the FOSDEM in Brussels where Marcheu held a talk about our project. Most of this issue deals with info I got there, unfortunately I missed Day 1, as I lost my orientation when I arrived at Brussels and therefore was totally late.

Current status

Most work is currently done for the rules-ng database. This effort is lead by pq with important help from Wallbraker and a little starting help from KoalaBR. The intention is to make the mmio-trace dumps more readable. Furthermore pq tries to update the data contained in the current rules.xml with the data either coming from our reengineering tools and from other sources (like Thunderbird's nvclock). This information is likely to be very useful for other NVidia based projects too.

Work on the mmio-trace itself continues, aiming at removing need for the kernel patch. Additionally, some stability problems got addressed. Current status now: Stable on x86 and AMD64. If you encounter problems, please report to pq, aeichner and / or jrmuizel.

Darktama found some issues in the generator which are due to unfortunate data structures (e.g. generator insists that GL_SMOOTH is valid for glDepthFunc). He fixed the data structure to better reflect cases like this.

While some devs enjoyed FOSDEM cmn took up the tasks to get glxgears running on NV3x. Before cmn tried his patience, glxgears produced PGRAPHS interrupts because some part of the init code was missing or incorrect. cmn was able to fix this but hit immediately another problem as seen here:

[[!img glxgears-nv36.png]

Darktama immediately noticed a bug long known to him: The projection matrix is not always applied at all (or at least not correctly). When using vertex shaders it works correctly but not on earlier cards. He promised to fix it correctly soon (it may be even be fixed now).

Additionally, marcheu and darktama are thinking over the idea to offer a driver crash course for driver programmer newbies (you should know C at least). If you are interested, we would probably have some sessions dedicated to a certain topic in IRC. If the interest is high enough, that may become a reality. Please let us (Darktama, Marcheu, KoalaBR or pq) know whether you would be interested. Please note that we will concentrate on nouveau still, so asking us questions about the ATI driver wouldn't be a good idea :)

Returning after FOSDEM Marcheu did a patch to kill of the "disappearing fonts" problem. stillunknown volunteered to test but found some problems. The fonts didn't improve unfortunately and to make matters worse the driver became unstable. After some time it would encounter a DMA hang (Edited by stillunknown). The issue is still unresolved as of 28.02.2007.

During the last two weeks, we tried to get the wishes of our developers in case we will really get the >= $10.000 pledge money. The bank account is finally set up and the necessary data was just sent to Lovechild. Now the only thing we can do is wait and see.

Basically all of the people asked said that they didn't need the money but after some pestering came up with some ideas:

1:

Energy drinks or an external USB hard drive

2:

Currently nothing. Maybe a G80 later (but he needs a newer computer first)

3:

He could use some mobile chipsets. But because this means a complete Laptop (too expensive) probably either an older / used one via money from our project, or if someone would be willing, a laptop with such a chipset to borrow it for a fixed time. (Please contact us, if you would be willing)

4:

A somewhat modern NVidia card for a soon to come new computer #5: Nothing. Money should be put back into the pool and distributed equally to the rest of the gang.

6:

Nothing for now, that may change if the complete sum is known (some kind of hardware either gfx or computer)

7:

Drinks or rent. Some newer hardware for our fellow ATI guys which could need them.

8:

Nothing for now. Maybe a one of the cheaper not yet announced consumer priced G80 cards (likely named NV8600 GTS or some such)

9:

Hasn't said anything yet.

On 28.02.2007 Darktama pushed a patch into DRI and DRM which broke the binary compability of the driver. It may stop working on some cards, so extensive testing is needed! Some of the changes:

  • For DMA objects parameters are now checked, so clients can't randomly create DMA objects pointing at whatever they feel like.
  • Added FB_SIZE/AGP_SIZE getparams
  • Read PFIFO_INTR in PFIFO irq handler, not PMC_INTR
  • Dump PGRAPH trap info on PGRAPH_INTR_NOTIFY if NSOURCE isn't NOTIFICATION_PENDING. If you had a look at our Todo page recently, you will certainly recognize some task from it here.

And a short outlook for the next 2 or 3 weeks: The above changes need extensive testing! So there will be a stop for adding new features to the driver for about 2 or 3 weeks. Only bug fixing is allowed to enter our repositories during this time frame (Tools development like renouveau, mmio-trace and mmio-parse, generator and so on are in no way afflicted by this!).

Help needed

Darktama is seeking for NV4x and G70 owners who would be willing to do some additional tests for him. So please contact Darktama, if you that type of person.

And we could use one or two persons who would answer typical "I haven't read even your FAQ, but answer me this..." or always repeating questions on our IRC channel. It slows our developers down, if they must answer the same questions again and again. So please have mercy and either read our FAQ or answer those questions, if you know the answer. If you are interested in the crash course mentioned above, please let Darktama or Marcheu know.

FOSDEM

Well, yours truly decided ad hoc that it would be a good idea to go to FOSDEM this year, meet marcheu in person and get some impressions about the Xorg development. It was planned to arrive late saturday afternoon but due some navigational problems, I arrived just 10 minutes before FOSDEM closed at my Hotel :(

[[!img uni.jpg] The building on the left was where the Xorg Devel room was located.

Next day, I was 30 minutes early and got a place in the Xorg room which had about 82 seats available, 37 of which were occupied for the first talk of the day about a new X11 security framework. I gained some insight on the history of the security in X11, but hadn't enough background knowledge to fully understand this topic presented by Egbert Eich.

Next up was Marcheu who talked about (hm, let me see my notes, ah here..) nouveau. More specifically, he described the development our project experienced since he presented it to the public on last FOSDEM (#### Link to talk ####). Exactly at this point in time I noticed that my camera was still in my car. But Thiebaut Mochel who was sitting next to me kindly offered to send me his photos. So all in-talk photos in here are his, thank you for helping me out!

When Marcheu started about 70 seats were taken and some stayed free even during the talk, because people kept coming in and didn't want to create too much noise by getting through to the seats. I guess there were finally about 90 people listening. Because Marcheu prepared the slide on the computer of his friend, they are still somewhere in Brussels. We will upload them as soon as we have them available.

[[!img stephane.jpg]

Here you can see Marcheu talking about nouveau

If you read our TiNDC or linger in our channel, then the talk did not reveal much news, but the feedback from the audiencee was really positive. Topics that were raised:

  • How many core developers are involved? About half a dozen regulars offering patches to the nouveau driver. And many more people coming in and doing some small work like reverse engineering a certain problem, offering renouveau dumps etc.

  • Marcheu didn't expect such a positive feedback from the community. Any person talking with him seems to know about us, offering help or at least some moral support. And the amount of work done is much more then he thought could be achieved.

  • Marcheu is quite pleased with our wiki, documentation and how we present our work to the public. The documentation of our reverse engineering work could be better still (Hint Hint :) ).

  • When is the driver usable (for applications beyond glxgears): Currently aiming for late this year.

  • Milestones? First milestone was / is glxgears. Next sensible one would be Quake 3. ;-)

  • How can people help us? See our Todo, offer dumps or traces. Basically we really need development power.

  • Besides 3D acceleration, Multihead is the second most asked for feature.

  • Current status:
    • NV4x: Milestone 1 reached NV3x: Milestone 1 nearly reached (well, see cmn's work above which made
      • this status obsolete) NV2x: NV1x: Rendering parts for 3D commands are missing. Context switches
      • seem to work in most cases though. NV04/NV05/NV06:
      • Many functions emulating features later cards have hardware based support for already work. But 3D still crashes.
  • We are waiting for the TTM memory manager to appear in X11 (at least for those of us living on the bleeding edge). It is necessary for texturing support but still further work is needed to support multiple hardware contexts like we see on "newer" cards. Later on Keith Packard revealed in his talk about "randr1.2 - Driver Howto" that the next (yet to be officially announced) Intel GFX chip will support multiple contexts too. So marcheu thought that we might take a "wait and see" attitude a little longer. We could put our available development time to better use currently. If (some of) the main X11 developers are going to do this already then we can spend our time somewhere else. After Marcheu finished there was a one hour break after which Linden Labs talked about their "Second Life" game / simulation. This was the second best visited talk this day in the Xorg dev room.

[[!img KeithPackard.jpg] Keith Packard during Stephane's talk

Returning late from restaurant, Keith Packard talked about randr1.2, about the fact that he at first didn't feel this topic was important but when he saw the feature set of newer intel (and to some degree NVidia) chips he slowly came to the conclusion that this was a wrong assessment. Currently he is trying to get the API stable and asks driver developers to check whether the API fills their needs and to give feedback.

Last but not least Mathias Hopf from Suse talked about Video acceleration and colour correction through OpenGL. It was highly theoretical which threw me out of the curve quite fast (missing background knowledge again) but the demo at the end showed some nice improvements in the render quality from the current solutions. But for this to work, they need a working accelerated 3D driver for popular cards. So they are monitoring our progress too, which fits nicely as a final word for this TiNDC issue.

I hope you enjoyed reading this issue as much as I enjoyed doing it.