← Back to team overview

hybrid-graphics-linux team mailing list archive

OpenCL support for open-source drivers -- status today

 

Much has happened lately in the open-source graphics drivers front,
and one of the questions people is asking is how far are we from
having GPGPU support in the shape of open-source Linux drivers. While
Nvidia and ATI both provide closed-source OpenCL drivers for Linux,
the open-source front is not far from having the same level of
functionality.

Work is underway at PathScale to make a kernel driver that supports
GPGPU applications, at:

http://github.com/pathscale/pscnv

GPGPU program execution works fine with it already. It's currently
missing error handling and has some race conditions, but that should
be fixed soon.

OpenCL or even CUDA can be layered over it just fine, but PathScale
cannot commit in doing that. This is were other open-source developers
can step in.
Documentation for the relevant hardware bits is still sparse, but the
irc channels #nouveau or #pathscale are great places to ask questions.

On the ATI open-source drivers front, the situation is also
incomplete, but with good ways forward. The easiest method identified
so far would be to add OpenCL support to Gallium. Zack Rusin started
on an implementation although it's still incomplete, waiting for
someone to step in:

http://cgit.freedesktop.org/mesa/clover/

Once the Gallium implementation is near completion, it should work on
any gallium driver. Only hardware with DirectX capabilities will work
for full functionality. The idea with Gallium is to abstract a basic
the hardware driver behind a general interface and then write state
tracker front ends that talk to the general interface. The state
tracker implements an API like OpenGL, OpenVG, OpenCL, etc. That way,
only one hardware driver is needed, and you support for multiple APIs
comes for it.

Right now, the r300 Gallium driver is fairly complete, supporting
r3xx-r5xx Radeons.  The r600 Gallium driver (for r6xx, r7xx Radeons)
has only just started.

Documentation on AMD GPUs is available here:

http://wiki.x.org/wiki/DataSheets

Additionally, there are quite a few resources on the AMD developers website:

http://developer.amd.com/pages/default.aspx

Hopefully this short summary will atract interest from developers
waiting for a sexy open-source project to work on.

Many thanks to Marcin Koscielnicki from PathScale and Alex Deucher
from AMD for their reports.