Nvidia Feature Requests

Nvidia currently supports the FreeBSD/i386 platform, which essentially means that anyone can download their binary driver and get hardware accellerated OpenGL support (yes, you can actually play and enjoy games like Doom3 and Quake4 on FreeBSD. Awesome, isn't it?). Nvidia has lately been looking at possible ways to (a) improve their current driver for the FreeBSD/i386 platform and (b) create a new driver for the FreeBSD/amd64 platform. This has transformed into several kernel feature requests, which are necessary in order to achieve (a) and (b). This page tries to document each feature request and its current status.

Update: At this point in time, all of the necessary features are present in FreeBSD 7 and 8 and will be present in 7.3 and 8.0. Note that the prefaulting is not a required feature, but an optimization that may improve performance in the future.

Update: A public BETA driver has been posted by Nvidia. More details are available at http://www.nvnews.net/vbulletin/showthread.php?t=148959

List of tasks

Task

Why?

Priority

Status

Responsible

Implement pmap_mapdev_attr() on FreeBSD/i386 and on FreeBSD/amd64.

Allows reliable creation of kernel mappings of I/O memory with specific cache attributes (with per-page granularity).

Needed for FreeBSD/amd64.

Complete / Merged

alc@

Design/implement better mmap(2) mechanism for mapping memory to user space (context information, cache attributes).

Allows reliable creation of user mappings of DMA and I/O memory and support for systems with more than 4GB of RAM.

PCI-E performance improvements, SLI support, FreeBSD/amd64 support.

Complete / Merged

jhb@

Allow VM objects to be mapped with non-default cache modes

"

"

Complete / Merged

alc@ / jhb@

Add a new OBJT_SG VM object to map arbitrary address ranges

"

"

Complete / Merged

jhb@

Allow mmap() to prefault mappings for OBJT_SG and possibly OBJT_DEVICE

"

"

Not implemented

alc@ / jhb@

Implement pmap_change_attr() on FreeBSD/i386 and on FreeBSD/amd64.

Allows prevention of cache coherency problems.

Needed for FreeBSD/amd64.

Complete / Merged

alc@

Implement mechanism to allow character drivers to maintain per-open instance data (e.g. like the Linux kernel's 'struct file *').

Allows per thread NVIDIA notification delivery; also reduces CPU overhead for notification delivery from the NVIDIA kernel module to the X driver and to OpenGL. The FreeBSD kernel provides some support for this via cloning devices; the NVIDIA FreeBSD graphics driver used this interface for a while, but bugs/limitations and differences between kernel versions made it necessary to revert to regular device nodes.

Improved X/OpenGL performance.

Complete / Merged

kib@

Contact

Status, information etc

Downloads

NvidiaFeatureRequests (last edited 2010-04-07 21:16:51 by AndrewThompson)