This happened somewhat unexpected while looking again at the state of open OpenCL implementations (so pocl and clover).
Suddenly some hero told me that there is a smallish OpenCL example which actually works with Mesa's OpenCL implementation (actually this is bound to r600 based devices). So what is awesome if this ain't?
What you need:
- tstellar's clover-r600-master branch
- Fedora 16 (okay, it might also work somewhere else), with rawhide clang and llvm
- and the example code
- oh - and - important - an appropriate card e.g. HD6310 (AMD E-350/E-450) or some other evergreen GPU
What actually has to be done is - this time - left to the user.
A few hints:
- Look at the comment in line 96 of src/gallium/state_trackers/clover/llvm/invocation.cpp and swap comments (there are r600 patches for LLVM which can be applied to get around this).
- The implementation expects the opencl libs to reside in /usr/local/lib/opencl - so install or softlink
- Set LD_LIBRARY_PATH to mesa/lib when building the example
- You need to provide the OpenCL headers
What you get:
There are 1 platforms. There are 1 GPU devices. clCreateContext() succeeded. notkernel main clCreateCommandQueue() succeeded. clCreateProgramWithSource() suceeded. build log: clBuildProgram() suceeded. clCreateKernel() suceeded. clCreateBuffer() succeeded. clSetKernelArg() succeeded. -------------------------------------------------- [...] clEnqueueReadBuffer() suceeded. pi = 3.141590
Let's see when I can build gst-plugins-opencl against mesa. And "they" include zack, steckdenis, and tstellar.
Some more informations using this tool:
$ make clInfo CFLAGS="-I$PATH_TO_CL_HEADERS" LDFLAGS="-lOpenCL -L$MESAPATH/lib" $ sudo LD_LIBRARY_PATH="$MESAPATH/lib" ./clInfo Found 1 platform(s). platform[(nil)]: profile: FULL_PROFILE platform[(nil)]: version: OpenCL 1.1 MESA 8.0.0 platform[(nil)]: name: Default platform[(nil)]: vendor: Mesa platform[(nil)]: extensions: platform[(nil)]: Found 1 device(s). [...]