tech-x11 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

DRM with KMS/GEM



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.


Home | Main Index | Thread Index | Old Index