One of the Google Summer of Code projects pertaining to Mesa / X.Org is to bring-up open-source OpenCL support
with the Gallium3D driver architecture. There's long been a branch of Mesa dubbed "Clover" that provides an OpenCL state tracker for the Gallium3D driver architecture, but it hasn't been usable as there's a lot of work to be finished. This GSoC project attempts to change that and there's already been a big milestone achieved.
The milestone that was hit yesterday by Denis Steckelmacher, the student developer working on the project this summer, is the ability to execute native OpenCL kernels on the CPU. Denis writes on his blog
, "Today is a big day for Clover: we can finally use it to execute native kernels on the processor, in a command queue, asynchronously, and multiple one can be executed in parallel. A native kernel is a simple C/C++ function that we queue for execution on a CPU device, so there is no compiler, no bitcode, etc."
Using the LLVM (Low-Level Virtual Machine) compiler to build the OpenCL code still isn't in place and obviously not yet the GPU-based compute execution, but it's now beginning to work using a fully open-source stack on the CPU. Best of all, this student developer has just begun and there still is a number of weeks left to the summer. Denis has further commented on this milestone
within the Phoronix Forums already. He adds that there isn't yet support for "normal" OpenCL kernels (only the "native" kernels at the moment) but other work is still being done in this area.
This is a surprise to see this milestone hit for the Gallium3D OpenCL implementation already and hopefully in the coming days and weeks we'll have more to report for this promising GSoC project. It's been a very good week for Mesa with just a few days ago the GLSL IR to TGSI translator
now being ready for merging after being written by another independent, community developer.
It's also worth noting that this Gallium3D OpenCL work being done by Denis Steckelmacher is the same individual that originally wanted to write an OpenGL 4.1 state tracker
for Gallium3D, but the Mesa developers called his work unrealistic