tech-x11 archive

DRM with KMS/GEM

To : tech-x11%NetBSD.org@localhost

: Subject : DRM with KMS/GEM

: From : Taylor R Campbell <riastradh%NetBSD.org@localhost>

: Date: Wed, 6 Feb 2013 02:46:58 +0000

In order to make NetBSD work with modern graphics cards, The NetBSD Foundation has hired me to port the current generation of Linux's direct rendering manager (DRM) to NetBSD, with support for kernel mode switching (KMS) and the graphics execution manager (GEM). Kernel support for the current generation of DRM should enable us to follow the X.org video drivers, which all require KMS and GEM now, without much maintenance work on our part. My first goal will be to support Intel integrated graphics cards, but I would like to additionally support at least AMD/ATI and NVIDIA graphics cards as time permits. We could have taken the approach of OpenBSD and adapted the previous generation of Linux DRM with user-mode switching (UMS) to support newer hardware. Gregroire Sutre has ported OpenBSD's work to NetBSD at <https://github.com/gsutre/netbsd-drmgem>. However, by using KMS, our upstream for Intel drivers will be Intel itself, our upstream for AMD/ATI drivers will be AMD/ATI itself, &c. That said, I will pay attention to what work he has done there to implement the GEM. FreeBSD has taken more or less the same approach, of porting Linux's DRM with KMS/GEM. I will be seeing what work of theirs I can use to expedite the process. Most of Linux's current DRM code is available under the same BSD-style / ISC-style / X11-style licences as the previous DRM code we imported. All of the code I plan to import into the kernel will be available under these licences; I will avoid the parts that have unclear licences or are available only under the GPL. So far I have been familiarizing myself with the world of graphics and DRM, which I am pretty new to. I began to work on importing code to sys/external/bsd/drm2 and fitting it into our build infrastructure, but realized yesterday I had neglected to pay attention to the licences, so I restarted with closer attention to them. It will be some time before I have everything building and ready to for anyone test, of course. I am currently doing my work in a private Git mirror of NetBSD's CVS repository, which I intend to publish soon.