Parts of drm ported to DragonFlyBSD and a GSoC offer to help with GEM/KMS

David Shao davshao at
Fri Apr 9 16:53:49 UTC 2010

A big thanks to Robert Noland and an offer to help.

Parts of the drm from current have been ported to DragonFlyBSD 2.7.0
development, x86_64, and are being tested in git branches.  With the
latest git versions of the stack including Mesa and libdrm, the
usual demos from Mesa can be run for r600.  What has been specifically
tested is a Radeon HD 4550 on a Shuttle SG45H7, Intel 64-bit.  An
evolving report can be seen at

I readily recognize that I hardly did much more than cut and paste of
already existing FreeBSD code.  I even used the kern_subr.c and hash.h
code to have a hashtable implementation with hashdestroy().

I am a CS masters student at San Jose State who will be submitting a
GSoC application to create a cross-BSD porting layer for GEM/KMS.  I
have an idea of preserving as much of the Linux code as possible so
that it is easier to contribute back to the drm developers who have
enough problems just finishing their code for Linux.

>From what I can tell the next step is to basically reimplement some
version of Linux's idr (small integer ID management) API using radix
trees, or more simply just to see performance, to get any version of
the API, brute force the searches using the current red-black tree.  I
welcome correction, but looking at the code what exists now is a
partial solution using unrhdr where the smallest available integer is
returned while what the idr API is being used for sometimes calls for
the smallest available integer above a certain floor.  This kind of
problem appears in several aspects of kernel programming which is no
doubt why Linux implemented this abstraction.  And there is hardly a
shortage of radix tree implementations available for the BSDs to use.

More information about the freebsd-x11 mailing list