Kernel Mode-Setting With The Glint Driver
For those that don't recall the scope of this KMS summer project or what the Glint driver is, the goal is to provide kernel mode-setting support for the Permedia 3 and Permedia 4 graphics cards. Right now the X.Org support is provided via user-space mode-setting in the Glint DDX driver. These old OpenGL-capable graphics processors from 3Dlabs are very rare to find these days seeing as they have been out for more than a decade, but under Linux they shall have KMS support for anyone who still uses such a GPU on an antiquated system.
The kernel mode-setting work is being done on the 3Dlabs Permedia 3/4 since writing a kernel driver for a very old graphics processor is much simpler than writing one for a modern GPU, especially over the course of a summer. While this KMS Glint support will be of direct benefit to almost no individuals, the GSoC developer hopes to better document the KMS driver writing process, which could help other developers down the road in targeting new hardware. Of course, with there already being KMS support for Intel, ATI/AMD, and NVIDIA hardware, even then new KMS drivers will really be targeting minority users.
Matt Turner, the student developer working on this 3Dlabs Glint KMS support, has all of his DRM-side code found in this personal kernel repository. Matt has started filling in some of the needed functions for enabling kernel-space mode-setting support, but is a bit uncertain regarding the next step(s) with his KMS support upbringing, so here is his mailing list message with where he is at on this DRM driver. With kernel mode-setting support, Matt needs to add kernel memory management support (via GEM/TTM is to be expected), which still needs to be tackled too. After the Glint KMS driver is up and running, Matt will turn his attention to documenting the process and providing some KMS driver writing tutorials.
If you are interested in more on the history of kernel mode-setting for Linux, this week we posted the slides by Egbert Eich from the Berlin LinuxTag.