Announcement

Collapse
No announcement yet.

AMD Releases New Radeon Code: A-Sync DMA Engines

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

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

    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...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

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

    Comment


    • #3
      Originally posted by Hamish Wilson View Post
      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


      • #4
        Originally posted by elanthis View Post
        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.
        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


        • #5
          Originally posted by przemoli View Post
          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?
          Looking at the code the a stands for Asynchronous.

          Or in other words: they have a DMA hardware engine on the GPU. This engine can transfer memory in parallel to other stuff happening. Hence they call is asynchronous. Logical, right? ;-)

          Comment


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

            Comment


            • #7
              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.

              Comment


              • #8
                Originally posted by curaga View Post
                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


                • #9
                  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


                  • #10
                    But on the positive side...

                    Originally posted by Deathsimple View Post
                    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).

                    Comment

                    Working...
                    X