Contents
Current Status
For supporting OpenCL, or hardware level GeneralPurposeGPU computing. We are at the planning stage, and redesigning the interfaces in gallium to support compute, like TGSI. It is expected that we will support AMD (ATI) Evergreen (r800 - HD5xxx), and hopefully Nvidia cards too.
|
cpu (llvmpipe) |
nv50 |
nvc0 |
r700 |
r800 |
r900 |
non gallium test code1 |
N/N |
TODO |
TODO |
DONE |
DONE |
WIP |
gallium hw interface |
N/N |
MOSTLY |
MOSTLY |
3D |
MOSTLY |
TODO |
execute binary2 compute shader |
TODO |
TODO |
TODO |
N/A |
MOSTLY |
TODO |
handling GPU buffers |
TODO |
TODO |
TODO |
TODO |
WIP |
TODO |
execute TGSI compute shader |
TODO |
TODO |
TODO |
TODO |
N/A |
TODO |
execute LLVM-IR compute shader |
TODO |
TODO |
TODO |
TODO |
DONE |
TODO |
performance profiling |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
local sync |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
global sync |
TODO |
TODO |
TODO |
N/A |
TODO |
TODO |
local atomics |
TODO |
TODO |
TODO |
N/A |
TODO |
TODO |
global atomics |
TODO |
TODO |
TODO |
N/A |
TODO |
TODO |
2D image read |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
3D image read |
TODO |
TODO |
TODO |
N/A |
TODO |
TODO |
2D image write |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
3D image write |
TODO |
TODO |
TODO |
N/A |
TODO |
TODO |
accurate4 arithmetics |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
OpenCL5 1.0 |
TODO |
TODO |
TODO |
N/A6 |
WIP |
TODO |
OpenCL 1.1 |
TODO |
TODO |
TODO |
N/A |
WIP |
TODO |
OpenGL interoperability |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
1 Proof of concept test code for testing and experimenting with hardware compute support
2 Hardware specific binary code
4 OpenCL defines some level expected accuracy. Some hardware doesn't support it, so we need software emulation
5 OpenCL front-end is a separate project, we aim to support all features needed by the front-end to implement the standard
6 Only partial OpenCL support is possible, support through vertex shaders.
How to Install
R600
Supported Hardware
Evergreen and Northern Islands GPU familes are currently supported. If you are unsure what family your GPU is, you can use this chart: http://www.x.o/wiki/RadeonFeature#Decoder_ring_for_engineering_vs_marketing_names to figure it out.
Instructions
Download the OpenCL 1.1 header files cl.h and cl_platform.h from here and copy them to $(INCLUDE_PATH)/CL
Install the 3.1 release branch of LLVM and Clang with these patches applied: LLVM Clang
Clone and build libclc from here
Fetch the gallium-compute-r600 branch of mesa here
- Configure Mesa with: ./configure --with-dri-drivers="" --with-gallium-drivers=r600 --enable-opencl --with-libclc-path=/path/to/libclc/
- Build and install mesa
Installation notes
- If you get this message when fetching the mesa branch: warning: remote HEAD refers to nonexistant ref, unable to checkout. It just means that no branch was checked out, so you have to do: git checkout clover-r600-master
Testing
OpenCL examples that mostly work with clover and r600g can be found here.


