The irregular Nouveau-Development companion
Issue for August, 25th
1. Intro
This is the first version of the TiNDC which is published on Phoronix.com first. We did this for various reasons:
- get some more coverage and perhaps attract a few more contributors.
- get out the word of where we stand today as a project. Seems as if the TiNDC are not read as often as we would like
- more coverage would mean a better informed public which in turn would hopefully translate into more and better contributions.
What changes? Except for the site on which we publish first, nothing. Phoronix.com will publish the english version first and about 2-3 days later the Wiki version will show up including the translations.
So thanks a lot to Phoronix.com for giving us a chance to address a larger public.
Update: There has been some critics who were annoyed by our move to Phronoix first. Please understand that we didn't try to annoy you with this but that we are trying to get a broader audience and thus address more potential contributers. All we are trying to do is do move the the project further along. If it doesn't work out, we still can adapt. But for the medium future, we are willing to give Phoronix a chance.
Admittedly, the publishing in the Wiki took 4 days, much longer than I intended. That was due to bad planning on my side. Future issues will be delayed for not much more than one day.
So for those of you, who are reading a TiNDC for the first time: The irregular Nouveau Development companion is a free form summary of the developments going on within the nouveau project. This includes mostly the IRC #nouveau on freenode.net plus mailing list and git commits if needed.
2. The current status
Most work gets currently done in 2D and from that a huge part goes into getting Xv working. Ahuillet and p0g have created register (MMIO) traces for YV12 and YUY2 and compared them against each other. From the results they filtered out the registers touched for setting up the overlay. On 10.08.2007 they finally claimed success and asked for testers. dagb created a feature matrix of what works and on what we are working ... or not. You can find it here: http://nouveau.freedesktop.org/wiki/FeatureMatrix
The overlay works on NV1x to NV3x and yields good performance if the videos use YV12 This format is converted on the fly to NV12 (image format) which the NVidia cards expect. That means of course, that the native NV12 overlay is working too.
The first version had a bug in the color plane upload, which resulted in problems (missing colours) if the video displaying the window was moved partly off screen. Testing the overlay with YV12/NV12 resulted in image corruption due to bandwith limits if the video wass big (at least 1024 pixels horizontally). Ahuillet and p0g supposed that this wass due to the format using 2 planes. The nv Xorg driver does some trickery with the CRTC video registers which we don't understand fully. Ahuillet simply cropped the image to the parts really displayed on screen with the same result. After fixing that ahuillet and p0g turned their attention to the YUY2 format.
NV04 doesn't work because ahuillet currently has no, we got some offer, otherwise we'll use ebay... So that may well change in the near future.
MJules tested on NV3x and it worked, pq tested on NV28 with out any problems either. But dcha reported image corruption on NV11 (GForce 2 Go) which prompted investigation by p0g and ahuillet.
NV4x cards don't have an overlay but use the blitter to do the work. Ahuillet got that sped up too.
By the way, we have the following types of overlays:
- NV04/NV05 overlay does only YUY2,
- NV10+ overlay does YUY2
- NV17+ overlay does YV12
While playing around with the driver, matc and p0g every now and then got an INVALID_STATE error thrown by the card. Ahuillet and p0g tried to track it down but quickly found out that the error was in the EXA code. Backtracking to DRM version 0.0.4 seemed to support the idea that this problem was there from the beginning of time (well, at least since we started), so another approach was needed. After some tests ahuillet and p0g noticed that the problem came from trying to blend. Any EXA function trying to do some kind of blending triggers the error. Xv was only a victim which crashed due to an EXA error occuring just before it being called.
With ahuillet's Vacation of Code coming to end we would like to thank him for his dedicated work which resulted in a working Xv implementation for cards >=NV18 to NV4x. We are glad you chose Nouveau for your project (and even gladder that you will stay with us)!
pmdata got around to finally create dumps containing only the detected data changes without interpreting them which makees the dumps much smaller. To create an interpreted dump you run the "raw" dumps through renouveau-parse which then creates the well known text dumps.
The parser data is now stored in a XML database. Next step would be to change the nouveau_drm.h generator to use this XML database too. Currently it relies on the nv_objects[] array in renouveau which holds the same data as the database (well, not all data is migrated yet, but it will be soon).
kmeyer adapted his upload scripts so that they can deal now with the changed contents of the mailed in archives. JussiP meanwhile announced that he won't be able to support the status page from September 1st on, as his account will get deactivated. We are looking into other options.
cmn did more work on glxgears on NV35. Last status was that it was working without rendering, now it works better than the last picture posted on the TiNDC, but there is still much to be done.
If the height is greater than the width of the window, the result is a static oversized gear with no means to see the rest.
If the width is greater than the height of the window, colours (mainly blue) flash and vaguely comparable with a red gear appears and dissapears as if it was moving around a point.
But there is a catch to the NV3x line: Initilization doesn't work correctly yet. So starting X with Nouveau won't get far. You need to load the blob first which does some initialization we are currently doing wrong, after that unload the blob start X and nouveau will work. That simply means: Our context switching code is working fine but init code is missing at least one important thing. Marcheu is at it and tries to find out what that might be, but he has to check about 90MB of MMio register writes for the needed values. That takes time (but he is down to 250Kb).
Small notes:
- The generator for nouveau_drm.h was broken for the default mode (it created unusable #defines). Fixed by KoalaBR
- The createdump.sh got some additional tests for SDL header files and the libXvMVNVIDIA.so file so that renouveau can build.
- pmdata implemented a working clear command for all cards NV04+ and NV1x. So now parts of your screen really get cleared. Feedback from other users is still missing, however.
- Marcheu had a hard disk crash and lost some patches for NV04 which got them running with current DRM.
3. Help needed
Ok guys, let's get serious here, you want a working Open Source NVidia driver? Fine, we need your help and this section is how you can save a kitten. Pick what ever you like and please get in touch with us!
Please test Xv with our driver. You only have to watch your favorite video with mplayer, codeine etc. and report back to ahuillet whether it works for you or not.
We would like owners 8800 cards to test our current driver and report back to us. As we currently have "only" two G84 cards for development and testing available, feedback from users with this hardware would be much welcome. Please note: Use the randr-1.2 branch and report back to Darktama.
We need MMioTraces for NV41, NV42, NV44,NV45, NV47,NV48 and NV4C. And owners of 10de:030x are needed too. Contact Darktama (NV4x) or marcheu (NV3x) in our IRC channel..
That's the end for issue #26 and marks my 1 year anniversary as a member of this project. Although irregular, we managed to get one issue out every 14 days on average for the last year. The next issue however will probably be late a week or two as I will be on vacation until the end of September. We will try to answer the Q&A session posted in this forum in the next two weeks though.