Global Plan :
On the DRI side, once the memory manager is working, texture support can be added. Note that to be able to see any 3D rendering, we need working back -> front blitting code.
Pending TODO List
DRM tasks
- write a portable version of pci_read_config_dword, use it in nouveau_mem.c
- write a test for register endianness. Some bioses (notably the mac's openfirmware) setup the nvidia regs as big endian. Ideally, we should read a known reg, see if it is backwards and act accordingly from that information.
- add support for suspend/resume ; that requires getting the DDX's bios code to work, then move it to the kernel, then add some save/restore code in the DRM.
- move modesetting to the DRM.
- move all card initialization to the DRM
- add a nouveaufb driver that stacks upon the DRM. That will help people who want/need some kind of fb support (requires in-kernel modesetting/card init though)
DDX tasks
[Junior] Cleanup the remaining obfuscated parts of the code. In particular, reinstate register names instead of hardcoded constants, also try to reinsert relevant comments or unobfuscated parts from http://cvsweb.xfree86.org/cvsweb/xc/programs/Xserver/hw/xfree86/vga256/drivers/nv/?hideattic=0&only_with_tag=xf-3_3_3
- get the bios code to work for a coldstart
DRI tasks
Add a function doing back -> front blits to nouveau_context.c (nouveauSwapBuffers, see how radeonSwapBuffers works for example). this one probably depends on the DRM DMA queue
[Junior] add block-diagrams (in .gif or .png) to illustrate shader instruction word formats, primitive formats, vertex formats, for reference as supporting illustrations for feature matrix breakdowns by card and instruction type. (documentation task)
- investigate submitting vertex data "the quadro way" instead of using "the geforce way"
- write some card initialization code (setting up the matrices and default OpenGL state)
- [Junior] output the CVS checkout date of the DRM module in the logs on startup
General tasks
- [Junior] cleanup the copyrights so that they mention the authors, add them when needed, check that there is no stuff like "IN NO EVENT SHALL VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM" which isn't quite right (we aren't supposed to discharge VIA or S3 from liability, but the authors). We have to spot all the files bearing such issues, and fix them.
write a correct locking scheme. A reasonable approach would be to add per-drawable locks in the sarea, since that would handle cliprects, resizing and moving windows, and back->front blits.
- Get rid of G7x/G8x naming everywhere, replace it with the NVxx naming
Port the xbox bits http://xbox.cvs.sourceforge.net/xbox-linux/kernel-2.6/drivers/video/xbox/ and http://xbox.cvs.sourceforge.net/xbox-linux/xf86-video-nvxbox/ to nouveau
[Expert hacker]: Help with implementing suspend2disk or suspend2ram
Renouveau tasks
- [Junior] Figure out how depth handling is different with a 16bit versus 24bit depth buffer. In particular, if depth clear values have to be changed and so on...
- [Junior] Figure out how color buffer handling is different with a 16bit versus 32bit colors.
Figure out the commands emitted on NV10, NV20, NV30 and NV40 by the following enables : GL_AUTO_NORMAL, GL_COLOR_MATERIAL, GL_COLOR_SUM_EXT, GL_CONVOLUTION_1D, GL_INDEX_LOGIC_OP, GL_LINE_SMOOTH, GL_LINE_STIPPLE,GL_MAP1_COLOR_4, GL_MAP1_INDEX, GL_MAP1_NORMAL, GL_MAP1_TEXTURE_COORD_1, GL_MAP1_TEXTURE_COORD_2, GL_MAP1_TEXTURE_COORD_3, GL_MAP1_TEXTURE_COORD_4, GL_MAP1_VERTEX_3, GL_MAP1_VERTEX_4, GL_MAP2_COLOR_4, GL_MAP2_INDEX, GL_MAP2_NORMAL, GL_MAP2_TEXTURE_COORD_1, GL_MAP2_TEXTURE_COORD_2, GL_MAP2_TEXTURE_COORD_3, GL_MAP2_TEXTURE_COORD_4, GL_MAP2_VERTEX_3, GL_MAP2_VERTEX_4. refer GL also figure out if those enables are useful to any real OpenGL application.
- unify the NV10_TCL, NV20_TCL and NV30_TCL offset names. Right now there are offsets for similar commands that bear different names.
- [Junior with a G80] figure out functionality of G80s
[Junior with OpenGL knowledge] write new tests for unexplored extensions, see also GL
- create a bot that picks up dump tarballs from the irc channel, downloads them, formats them in the right format and uploads them with correct permissions
[Junior] merge the xbox commands found there : http://home.tele2.fr/~fr-51785/pbkit/inner.txt into the NV20_TCL_PRIMITIVE object
See REnouveauFutureFeatures (unify here?)
- On 25/Oct/2007 at 11:41 marcheu noted some renouveau tests leak state on each other
Potential TODO items (to be discussed)
XvMC (hardware accelerated video decoding), efforts have been started by jb17bsome
Perpetual TODO items :
look at the freedesktop nv driver bugs which probably apply to us as well https://bugs.freedesktop.org/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__all__&product=xorg&content=nv
look at the ubuntu nv driver bugs https://launchpad.net/distros/ubuntu/+source/xserver-xorg-video-nv/+bugs
Port relevant patches from http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-nv.git;a=summary
Apply relevant patches from http://cvs.fedora.redhat.com/viewcvs/rpms/xorg-x11-drv-nv/devel/

