Marek Olšák has implemented support for buffer copying using the CP DMA engine on Radeon HD 4000 "R700" GPUs and newer.
Implemented for the Linux 3.8 kernel was a-sync DMA engine support
within the Radeon DRM driver. This big AMD code drop
is capable of delivering performance improvements
. It's described as
, "The async DMA can do copy/moves independent of the shader engine. So while the shader part of the GPU is busy with the rendering we can still upload new data with the DMA at the same time. Additional to that it is quite a bit more efficient than the shader engine when you just want to copy some data from A to B."
With the command submission checker in place and other improvements to the Radeon a-sync DMA code, Mesa is now taking advantage of the support. In the Tuesday code commit
by Marek, the CP DMA engine is now used on R700, Evergreen, and Cayman GPUs. This is the Radeon HD 4000/5000/6000 series GPUs. The support isn't implemented for the Radeon HD 2000/3000 (R600) GPUs since there appears to be flushing issues with the destination buffer containing garbage.
This commit touches just over 100 lines of code.