Announcement

Collapse
No announcement yet.

NVIDIA Further Details Turing's Mesh Shaders, Supports OpenGL/Vulkan

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

  • NVIDIA Further Details Turing's Mesh Shaders, Supports OpenGL/Vulkan

    Phoronix: NVIDIA Further Details Turing's Mesh Shaders, Supports OpenGL/Vulkan

    Later this week the GeForce RTX 2080 "Turing" GPUs begin shipping and one of the interesting additions with this new GPU architecture is support for mesh shaders...

    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
    Interesting link, I had to download for reading latter.

    Comment


    • #3
      can anyone knowledgeable narrow down the differences to "geometry shaders" for me?
      Is it that mesh shaders allow to create more mesh shaders, while geometry shaders are limited to outputing geometry (an thus have to be more complex and cant be parallelized easily)?

      Comment


      • #4
        As far as I've understood geometry shader work only on existing geometry, mesh shader can generate or change geometry (number of primitives), as well as transform it.

        Comment


        • #5
          blacknova according to the khronos wiki , indirect rendering + geometry shaders should do the trick

          Comment


          • #6
            Originally posted by blacknova View Post
            As far as I've understood geometry shader work only on existing geometry, mesh shader can generate or change geometry (number of primitives), as well as transform it.
            No, geometry shaders can add (or remove) triangles and other primitives. I am sure mesh shaders are more flexible, but I wouldn't be able to describe the difference (I suppose it's a own step in the pipeline now, potentially can create or call other mesh shaders to run in parallel).
            Ie. I am not sure what can be done, that gs just plainly could not do (in a more ackward or inefficient manner)


            Comment


            • #7
              Just found info, that AMD introduced with Vega some "primitive shaders" https://techreport.com/review/31224/...architecture/2, I wonder if it is the same or close to NVIDIA's mesh shaders...

              Comment


              • #8
                Originally posted by blacknova View Post
                Just found info, that AMD introduced with Vega some "primitive shaders" https://techreport.com/review/31224/...architecture/2, I wonder if it is the same or close to NVIDIA's mesh shaders...
                Indeed, it seems to me that Mesh Shaders are Primitive Shaders + Tesselation support.

                AMD initially said they will enable this feature in their drivers, and devs won't have to do anything.

                Then they said they won't do it transparently in the driver, they will release an API for developers to use.

                AMD still hasn't released any APIs for accessing this feature on Vega.
                IDK if they encountered issues with it or they're more interested in Vega's potential for mining/compute, but it seems NVIDIA didn't wait.
                After CES2018, AMD told people in a breakout session, that they cancelled the implicit driver path for Primitive Shaders, they are now offering...

                Comment


                • #9
                  Originally posted by blacknova View Post
                  Just found info, that AMD introduced with Vega some "primitive shaders" https://techreport.com/review/31224/...architecture/2, I wonder if it is the same or close to NVIDIA's mesh shaders...
                  My understanding is that "primitive shaders" are about combining vertex and geometry shaders to gain performance. They still process a single primitive (triangle) at a time, can discard it or create a bunch of additional ones.

                  The mesh shaders thing seems to be about processing bunches of primitives "meshlets". You can modify the primitives or discard the whole meshlet. So it is more flexible and efficient.

                  Comment


                  • #10
                    Originally posted by discordian View Post
                    can anyone knowledgeable narrow down the differences to "geometry shaders" for me?
                    Is it that mesh shaders allow to create more mesh shaders, while geometry shaders are limited to outputing geometry (an thus have to be more complex and cant be parallelized easily)?
                    The linked blog has few tidbits clarifying the differences including a visual graphic. Here's a short snippet:

                    "The previous tessellation shaders were limited to fixed tessellation patterns while geometry shaders suffered from an inefficient threading, unfriendly programming model which created triangle strips per-thread.

                    Mesh shading follows the programming model of compute shaders, giving developers the freedom to use threads for different purposes and share data among them."

                    Seems to be more efficient, capable and flexible approach. There is also the use of meshlets with task shaders that break down a large mesh into smaller pieces/chunks and by sharing vertices with this approach apparently keeps the memory use down/compressed while also improving ability to cull or perform LoD decisions?

                    Comment

                    Working...
                    X