[HN Gopher] Mesh shaders talk at XDC 2022 ___________________________________________________________________ Mesh shaders talk at XDC 2022 Author : JNRowe Score : 28 points Date : 2022-10-24 18:56 UTC (4 hours ago) (HTM) web link (rg3.name) (TXT) w3m dump (rg3.name) | bsder wrote: | I really wish that everybody would finally admit that the "fixed | function pipeline" is dead and shift the development work to | making the use of the GPU compute units mainstream. | | Unreal Engine 5 ("nanite") shows that the high end game engines | are already stepping around a lot of the fixed function pipeline. | It's just going to get worse. | | The problem is that the GPU compute systems throw away decades of | CPU processor development. This is good in some ways. However, | it's very bad in others. | | GPUs don't yet have a well-defined memory model (to be fair, even | CPUs are still a bit sketchy in places)--so you can't guarantee | atomicity or progress or fairness. GPUs don't have the equivalent | of an MMU--so they can't be partitioned or protected. etc. | | The problem is that switching to a "compute" model and making | that work well would commodify the GPU--and that's the last thing | that AMD and NVIDIA want. | moonchild wrote: | > I really wish that everybody would finally admit that the | "fixed function pipeline" is dead | | There is a great deal of space between 'fixed function | pipeline' (which no one is using) and 'all compute all the | time' (which pretty much no one is using for real-time | graphics). | | > GPUs don't yet have a well-defined memory model | | Nidia _has_ a memory model. (I have heard--from an nvidia | employee--that amd plays a bit more fast and loose.) | | https://www.youtube.com/watch?v=VogqOscJYvk | | > GPUs don't have the equivalent of an MMU--so they can't be | partitioned or protected. etc. | | You do not need an MMU to partition or to protect. (Not to say | that GPU security isn't a shitshow.) | | > The problem is that switching to a "compute" model and making | that work well would commodify the GPU--and that's the last | thing that AMD and NVIDIA want. | | https://s22.q4cdn.com/364334381/files/doc_financials/2023/Q2... | look at where nvidia's revenue is coming from, and tell me | again that they're not _already_ there. | tambre wrote: | Is there any point in switching to mesh shaders if I don't have | any use for the flexibility they provide? For example, do the new | semantics allow faster execution on newer hardware for converted | boring vertex shaders? | corysama wrote: | Nope. They don't make anything faster by themselves if you | stick to doing the same work the same way as vertex shaders. | What they do is open up a lot more options for you to do | something differently that can work better for your situation. | phire wrote: | My understanding is that if you are just doing the exact same | work that regular vertex shaders would do, you are better off | sticking with the regular pipeline. Might even be faster, since | the old pipeline (potentially, depending on implementation) has | a bunch of fixed-function hardware that gets disabled for mesh | shaders. | | The preformance advantages only come when you can take | advantage of the flexibility to apply new optimisations. Such | as sharing work across a mesh invocation, or avoiding launching | mesh invocations from task/amplification shaders, or avoiding | vertex fetch (procedural generation). | dragontamer wrote: | So it sounds like Vertex / Tessellation / Geometry shaders should | be just one stage of the pipeline, and not necessarily locked | into handling vertices (even if they end up outputting vertices). | The new combined shader will be named "Mesh" shader and have the | flexibility of all three. | corysama wrote: | What you are describing is how it works. A mesh shader is a lot | more general and flexible than even all three of Vertex / | Tessellation / Geometry shaders working together. And so, it | replaces all three of them to be an alternate pipeline option. | It cannot be chained together with them. | Const-me wrote: | Yeah, that's more or less correct. | | > The new combined shader will be named "Mesh" shader | | It's only new for Vulkan. On Windows and XBox, mesh shaders | were implemented couple years ago: | https://devblogs.microsoft.com/directx/coming-to-directx-12-... | | This new Vulkan extension is a direct copy-paste of the above, | leveraging the same hardware. | | However, the hardware support for mesh shaders is less than | ideal. That thing needs feature level 12.2, so-called "DirectX | 12 Ultimate". It only works on nVidia Turing (GeForce 20 | series) or newer, and AMD RDNA2 (Radeon RX 6000 series, and | current generation of game consoles). | Cloudef wrote: | Mesh shaders actually go way back to Playstation 2, they are | pretty much identical to PS2's VU1 | https://govanify.com/post/im-path-three-ps2/#not-so-quick- | tr... | Const-me wrote: | They do similar job in the sense they both generate data | for hardware rasterizer, but I think the differences are | rather large. | | That PS2 coprocessor is similar to a single ARMv7 core with | NEON. | | Mesh shaders don't run loops for elements of the meshlets, | they do them in parallel, on different threads of the same | thread group. ___________________________________________________________________ (page generated 2022-10-24 23:00 UTC)