Nouveau Companion 39
In the 39th edition of the Nouveau Companion, this open-source NVIDIA driver development crew talks about their latest driver achievements over the past few weeks. Among the progress made includes further enhancing the NV50 support, a Nouveau XvMC implementation for Gallium3D (initially through a software-based implementation), and MMioTrace being postponed to the Linux 2.6.27 kernel.
A bit longer in the making this time as the channel was awfully quiet the last weeks. Partly due to Marcheu being on a conference and some developers waiting for some hints or code from him. So to get at least some content for this issue, I pestered our main developers in private about their work in the last weeks. Then suddenly the pace picked up again and I was in the middle of a system (hardware) update, so that I didn't have enough time to follow the channel. And when I tried to catch up, FreeDesktop.org was doing a system upgrade too... So at least one week is missing, but it took long enough to get so far, either now or never :)
So this issue will be only touching some topics, please do check the git repository and the logs if you need additional information.
Airlied noted in his blog that he is adding a kernel mode setting preview to FC9. That isn't by far the real deal but it can't be too far off from what is planned. Thus the move to mainline shouldn't be too far off either. And phoronix.com did a short test of that code in this article.
BTW: Current Fedora has Nouveau as an available package. If you see problems with that, please try current git first before reporting bugs. Nouveau is a very fast moving target and the package is already outdated.
Other than that: Please do test (always use Randr12!) as much as possible and do report bugs. We are very interested in your results and user experience.
And if you still ask yourself what exactly Gallium3D is, have a look at this link.
And as the question pop up on IRC about twice a month: "Will there be a *BSD port of Nouveau?" The answer is: "Depends". A port of the current DRM and TTM is needed in order to get it working. Other than that there shouldn't be much work needed to get Nouveau working on your favorite BSD system. So please step forward if you are interested in porting, we are interested to hear from you!
The Current Status
After some very long time, the fix for __ucmpdi2 on PPC finally went into the kernel. That should fix some reoccurring question and problems with this symbol missing.
Currently, most work is being done regarding 3D Gallium. As Marcheu was missing in action for some time, the work on cards older than NV4x stalled a bit, because of some code Marcheu intended to write for NV2x and earlier cards. Nevertheless, p0g was able to get glxgears to render on NV1x. Additionally at least some of the Marcheu's NV1x work ended up in git (from to).
pmdata had to do some work on other projects too, but still managed to add a few patches to the NV3x code path (gitweb).
Ok, seems that this time we struck gold in Google's Summer of Code. Although traditionally late, we managed to recruit ymanton. He will work on video decoding via shader instructions. To be prototyped on Gallium3D softpipe implementation first, it will be later implemented for Nouveau. Please note that this interface will be generic, that is, other Gallium drivers will be able to use the reference implementation too. To test whether the idea is usable, Nouveau will see an implementation using graphics hardware (while softpipe is software only).
So let's talk a bit about mode setting on NV5x cards. As you may know, we do have some problems there. The hardware is totally different from what was used up until NV4x.
Stillunknown did try again and again, more often than not coming up with nothing usable. Finally, he noticed that the blob did read out some registers which were never set / written to. After checking back with pq whether either he or MMio had made an error when MMioTracing, but that turned out to be unlikely.
So the question was up, how was the mode set? The suspicion was building that the mode setting was done via a reserved FIFO. That idea was supported by the fact that Darktama was yet unable to get FIFO 0 to work on NV5x cards.
So independently, he came to a similar conclusion: FIFO 0 was used for mode setting (IRC log).
Pursuing that idea further stillunknown redid the mode setting code for NV5x uring a vacation and thus was rarely seen active on IRC. He committed everything and demanded KoalaBR to test the new code on a 8600 GT. Unable to come up with a good excuse for not doing so, KoalaBR obliged and reported success. Everything that worked with the old NV50 code does work with the new one too. Still, switching text mode is not yet possible.
Speaking of mode setting: We had problems with DVI NV2x and NV3x based cards. That was due to the fact that those cards had external DVI driving chips while newer cards have those feature on chip. Malc0 fixed a few things and at least some NV2x/NV3x cards started working with DVI.