Pardon my ignorance, but what does this do exactly? Still, it is good stuff in any event.![]()
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...
http://www.phoronix.com/vr.php?view=MTI0ODE
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.
Does this alone have any performance impact? I recall Marek saying here ttm still does a sync after each transfer.
WOW! Realy clean and understandable code with many comments! Thanks for all AMD team (for Alex special).
Return to home and apply this pach for 3.7 ^_^ need testing OilRush fps.
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.
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.
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).