If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

AMD Releases New Radeon Code: A-Sync DMA Engines

12-11-2012, 02:40 AM

Phoronix: AMD Releases New Radeon Code: A-Sync DMA Engines

A second update to the Radeon DRM driver has been released that will be pulled into the Linux 3.8 kernel. This second Direct Render Manager update for the Radeon kernel driver provides new code from AMD that was kept internally for months but is now permitted for open-sourcing...

Comment

Pardon my ignorance, but what does this do exactly? Still, it is good stuff in any event.

A quick guess would be that they allow asynchronous DMA transfers.

The specific consequence of which would be that a memory transfer to/from the GPU can be initiated without the driver needing to wait for it to complete, allowing reduced per-transfer latency and overall improved transfer bandwidth. That in turn should reduce draw call overhead, buffer update overhead, and texture upload overload, and hence improve performance for certain applications. For example, given the "GL is faster than D3D" benchmarks from Valve one can presume that their renderer is draw call bound, and hence this could offer a nice performance boost for Source games.

All a quick guess, of course.

Comment

The specific consequence of which would be that a memory transfer to/from the GPU can be initiated without the driver needing to wait for it to complete, allowing reduced per-transfer latency and overall improved transfer bandwidth. That in turn should reduce draw call overhead, buffer update overhead, and texture upload overload, and hence improve performance for certain applications. For example, given the "GL is faster than D3D" benchmarks from Valve one can presume that their renderer is draw call bound, and hence this could offer a nice performance boost for Source games.

All a quick guess, of course.

Yeah. I also would like to know what this "a" stands for. Thought that DMA is as "a" as you can get :P Or maybe its not about CPU/GPU chitchat but CPU DMA module to GPU DMA module talk?

Comment

Does this alone have any performance impact? I recall Marek saying here ttm still does a sync after each transfer.

It should have a very noticeable impact when buffer objects are moved and when VM mappings are changed.
Especially the former case should have a rather big impact: the buffer move is performed by hardware, which is very fast at it. And if the buffer memory is not in coherent (cacheable) memory then the move is even faster.

Comment

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, or just clear a specific region of memory (memcpy/memset).

So using it should result in some very nice performance improvements for certain use cases, but what Alex has released is just kernel part of the implementation, and even that is missing the CS checker. It will probably just take some more time till mesa really picks that up.

Cheers,
Christian.

Comment

So using it should result in some very nice performance improvements for certain use cases, but what Alex has released is just kernel part of the implementation, and even that is missing the CS checker. It will probably just take some more time till mesa really picks that up.

This code is applicable to R600+ hardware! It's nice to see improvements being made for a very broad range of existing cards, rather than just the most recent generation or two.

I wonder if there are any more such features waiting to be unlocked? (Apart from the UVD of course - we already know about that).