Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Sebbbi and others have indicated it in the other tweet found on the other thread.I don’t see any reason to believe ps5 is not using the rdna2 front end, especially now with Remedy saying support is essentially the same. The ability to output a single primitive as the output of a mesh shader would be a critical difference.
Sebbbi and others have indicated it in the other tweet found on the other thread.
it’s a single difference and there is only one between the two. AMD rushed to get this prepared for RDNA2, we know this. Because it wasn’t until rdna3 was mesh shading properly rectified.
For alignment sakes the entirety of dx12U, series consoles, and amd gpus all moved as a single group. MS cited they needed to wait for AMD to finish, this was long after developers have had a year with PS5 devkits. I don’t think it’s possible amd could have finished rdna2 a whole year earlier with the release of rdna1 and Sony being there with kits and MS without. It’s just not a likely scenario.
Unless my comprehension is wrong:I don’t see any indication in sebbbi’s tweet that ps5 is rdna1 or 2. He just says amd calls it primitive shaders, which is what amd uses at the driver/hardware level. Dx12u mesh shaders implemented with primitive shaders.
Unless my comprehension is wrong:
He’s saying that the first implementation didn’t match dx12 perfectly and was not exposed. Sony calls this primitive shaders.
The latter sentence referring to the one prior. As in, Sony is still using AMDs first implementation of mesh shaders.
Don't know who this Locuza person is, how credible they are or what their track record is. For sebbbi's tweet all he says is Sony still calls the feature primitive shaders. That doesn't really determine whether it's RDNA1 or RDNA2. What we do know is Remedy said the mesh shader implementation is almost the same as pc, which means it should be able to take meshlets, skipping the input assembler, and output primitives to the rasterizer. AMD, starting with RDNA2, supports mesh shaders by mapping them onto their NGG pipeline. They basically reuse the NGG pipeline and made changes to support the mesh shader model. So what's the likely scenario here? Sounds to me like PS5 is RDNA2 and when Sony announched the hardware they just used AMD actual hardware names (NGG, primitive shaders) instead of using the Mesh Shader name which is an API level abstraction from Microsoft and then Vulkan.
Are primitive shaders the Impossible Burger of the Mesh shader world? Because Vegans keep telling me they are almost the same, too.Almost the same means it isn't the same.
Almost the same means it isn't the same. I think that's pretty evident then that it isn't the same. The missing piece from what we've been able to piece together is that the PS5 doesn't support amplification shaders which are part of what MS call Mesh Shaders in Dx12. Hence Remedy choosing not to use amplification shaders.
Regards,
SB
In the video I think they say there are small differences like recommended meshlet sizes.
Also how and where did this get pieced together?
Almost the same means it isn't the same. I think that's pretty evident then that it isn't the same. The missing piece from what we've been able to piece together is that the PS5 doesn't support amplification shaders which are part of what MS call Mesh Shaders in Dx12. Hence Remedy choosing not to use amplification shaders.
Regards,
SB
Yes. But amplification shaders still has a hardware requirement to work. It can’t be back ported to rdna1 as per Timothy’s blog. It would never work.DX 12 supports task shaders that are used in conjunction with mesh shaders which is a Nvidia solution. AMD has primitive shaders which are analogous to mesh shaders but instead of amplification/task shaders, initially AMD offered surface shaders which are pre-tessellation shaders that require utilization of the hardware tessellator. Task shaders on AMD utilize compute shaders that run in parallel with the graphics pipeline in which most of the hard part to get it to work is hidden behind firmware.
Timur or Timothy? Timur mentions that RDNA1 is missing some features such per-primitive outputs that make mesh shading support impossible. I don't recall anything specifically targeting task shaders.Yes. But amplification shaders still has a hardware requirement to work. It can’t be back ported to rdna1 as per Timothy’s blog. It would never work.
As far as I understand his blog, Hardware is required in order for the graphics and compute queues to communicate with each other in a task.
Yes it’s a compute shader. But it is highly specialized. It can be emulated, but you’ll miss out on the efficiency compared to the hardware variant.
Timur. My thanks on the correction.Timur or Timothy? Timur mentions that RDNA1 is missing some features such per-primitive outputs that make mesh shading support impossible. I don't recall anything specifically targeting task shaders.
I suspect on fixed hardware this is more of an academic point than a practical one, you can schedule around whatever tiny infefficiency you encounter here, it’s unlikely to be a bottleneck in a real production. On pc any wrinkle like this much bigger challenge due to the variety of hardware configurations, not to mention the split memory.Yes it’s a compute shader. But it is highly specialized. It can be emulated, but you’ll miss out on the efficiency compared to the hardware variant.
The relevant details here are that most of the hard work is implemented in the firmware (good news, because that means I don’t have to implement it), and that task shaders are executed on an async compute queue and that the driver now has to submit compute and graphics work in parallel.
Keep in mind that the API hides this detail and pretends that the mesh shading pipeline is just another graphics pipeline that the application can submit to a graphics queue. So, once again we have a mismatch between the API programming model and what the HW actually does.
NGG (Next Generation Geometry) is the technology that is responsible for any vertex and geometry processing in RDNA GPUs (with some caveats). Also known as “primitive shader”, the main innovations of NGG are:
- Shaders are aware of not only vertices, but also primitives(this is why they are called primitive shader).
- The output topology is entirely up to the shader, meaning that it can createoutput vertices and primitives with an arbitrary topology regarless of its input.
- On RDNA2 and newer, per-primitive output attributes are also supported.
Mesh shaders were picked just because of nicely uniform support on the platforms, on the console platforms, and the pc that we're running. And then the fact that it's possible to build more granular culling ... So it was kind of natural to take that as the basic building block going forward, and it's also supported on the current generation consoles so that's kind of like the low end for, or the baseline, for the stuff that we do now since the previous generation was cropped out.
Playstation is actually very close to pc specs, so I don't think we did anything specific to meshlets really. The meshlet sizes are slightly different on platforms, but that's basically conversion time stuff, so not really. Obviously there's been a lot of platform specific optimizations, but those are not so much specific to Playstation, Xbox or AMD or Nvidia, but they are kind of like general optimizations that help usually everything on all of the platforms, and some of them happen to work a bit better on some platform than other ones.