Nouveau Companion 37

Written by KoalaBR in Display Drivers on 20 March 2008. Page 1 of 2. Add A Comment

In the thirty-seventh edition of the Nouveau Companion, the topics covered largely come down to Gallium3D, the status of the Nouveau driver for each of the NVIDIA product families (primarily the GeForce 8 series), and of interest is that RandR 1.2 should soon be enabled by default for this reverse-engineered open-source 2D/3D NVIDIA driver. The Nouveau developers are working on Gallium3D extensively and recent David Airlie had tried the Nouveau Gallium3D driver for PowerPC, but there is a problem with depth buffers. The GeForce 8 (NV50) status is continuing to improve but there's still work to be done, as these GPUs have no NV40 compatibility mode. Read the rest in this edition of the Nouveau Companion.

Hello, you are going to read issue #37 of TiNDC. If you expect this issue to be as long as the last one, please prepare for some disappointment. We will get back to the normal length this time.

All in all, not much obvious progress to report, as people try to get to grips with Gallium or are working to get Gallium working on their cards. If you feel brave, you can try it out according to Hanno Boeck's blog or have a look at our Wiki page.

Please note that we can't and won't give you any support for this yet. If it works, you are lucky, if not, please don't complain. There are known bugs in both Nouveau and Gallium and we are working on it. But we have just started...

The question was raised whether Nouveau would be manipulating things like fan speed. Answer is: No, please use Thunderbirds NVClock for that kind of work.

Last topic for this introduction: We got an 8400 card donated by kho. This card won't leave the greedy little hands of Marcheu who will join Darktama's efforts to get 3D on NV50 cards going. Thanks you very much kho for your generous donation!

GSoC 2008 saw Xorg accepted as a mentor organization. Depending on the results from the last two years we are not that optimistic that we could get a slot with Xorg mentoring us. If it works out, we would like to work on NV5x, so if you have a spare 8x00 card you could donate, please come forward. And no, we don't expect you to donate a 8800 GTS or 9x00 card. Another 8400 or 8500 card would suffice!

And as this got asked a few times on IRC: We consider the latest G92 cards to be part of the NV50 family and we will support them in the future. Please note, that currently there are drawbacks (more on this in the next chapter).

The Current Status

As we hinted at in the last issue, kernel mode-setting is going mainstream soon. Fedora 9 will be there first, getting the necessary plumbing.

Stillunknown and Malc0 continued cleaning up and fixing Randr1.2. Its code path for NV50 was cleaned up to as there was much cruft accumulated. The new edition is now more in tune with the code for the others cards. However, no new functionality was added, only obvious problems were fixed (please note, that neither Malc0 nor Stillunknown have an NV5x card available). So, the code works as well (or as bad) as before.

Still there seems to be some hope: The Xorg-NV got code to parse the BIOS tables of the NV50 based cards. Maybe malc0 will be able to adapt it to our code base. What comes out of it remains to be seen, though.

Beyond that, the time frame was for Randr1.2 was mainly confirmed if no real showstoppers rear their ugly head. By the way, Nouveau does not crash when exiting X. It simply tries to restore text mode and fails horribly, leaving an unusable text console.

Airlied tested PPC Gallium and had some problems with the depth buffer. Further inspection by Darktama and Marcheu hinted at a possible problem in Mesa for PPC. There seems to be a problem with the depth buffers. Look at the green gear for the problem:

Darktama did some work on NV30 helping pmdata to get the card init going. "I just put the NV30GL in for the fun of it, and fixed the main issues, the rest is up to pmdata now :)"

Benkai is still working on summarizing options, problems and possible solutions barring suspend support for Nouveau. After that he started working on testing suspend / resume functionality on NV04 by hacking the code for suspend into EnterVT (Switch to text console) and for resume into LeaveVT. So when entering text console, the status was saved and restored when switching back to X.

For that functionality, an ioctl() was added to the DRM and PGRAPH proved trivial on NV04: Nouveau simply allocates a channel and calls engine->graph.save_context() before PGRAPH init. For resume a call to engine->graph.restore_context() was sufficient. After that Nouveau was working after a LeaveVT/EnterVT (with PMC/PTIMER/PFB/GPRAPH init) cycle.

After that success, benkai added save/restore of all PFIFO registers to the ioctl(). Nouveau now gets a PGRATH context switch interrupt after X starts sending commands through the FIFO again. Unfortunately, the card emits weird errors after wards.

As already noted in an earlier issue, find the current status here. After seeing his power bill, Ahuillet expressed interest too.

And now for some information about the NV50. Originally, we had hoped that the NV50 would have a NV40 compatibility mode, but that hopes were shattered early on. With reverse engineering being a bit behind and tasked to find his way around Gallium, Darktama decided to work on NV4x where most things needed were already known.

Related Articles