Implementing the accelerated DRI/DRM driver for a pure 2D graphics card?

Tom Li biergaizi2009 at
Mon Aug 11 06:42:48 PDT 2014

Hello everyone.

I'm currently working on a DRM/KMS driver for the Silicon Motion SM712
graphics card. Avoid the flicking between the VT-switching on my
computer is what I want.
This antiquated card doesn't support 3D and OpenGL stuff, but provide
simple 2D acceleration by a drawing processor. Currently, the DDX
driver xf86-video-siliconmotion directly accessing the hardware to
write the registers for modesetting and 2D acceleration.

But in the world of KMS/DRI, Xorg/DDX can't just control the cards and
write the registers anymore. It is not a problem for modesetting
because there's standard KMS way, but it prevent the DDX driver to
access the 2D drawing processor. It is the problem, the card will
become even more slower if it lost the only acceleration.

Implement the complete DRI/DRM framework seems the right way to do it.
But it seems the DRI/DRM are mainly designed for modern cards, 2D is
just the subset of 3D / OpenGL, so it always got implemented
automatically if we just implemented 3D. Many documents are talking
about how to deal with the vertices / textures to implement 2D/3D, but
I just have something like fillrect.

So I just stuck at here. Is there a standard way to just let
userspace/DDX to access the 2D drawing processor by the exported
interface or DRI/DRM layer?


Tom Li

More information about the dri-devel mailing list