Geometry processing gets more flexible
Today's Radeon GPUs retain fixed-function geometry-processing hardware in their front ends, but the company has observed that more and more developers have been doing geometry processing in compute shaders. Koduri notes that some of today's games can have extremely geometrically complex scenes. He cited parts of the Golem City section of Deus Ex: Mankind Divided (that we incidentally use in our graphics-card testing) to prove his point.
The middle portion of that benchmark run has over 220 million polygons, according to AMD, but only about 22 million might need to be shaded for what the gamer actually sees in the final frame. Figuring out which of those polys need to be shaded is a hugely complicated task, and achieving better performance for that problem is another focus of the Vega architecture.
To accomodate developers' increasing appetite for migrating geometry work to compute shaders, AMD is introducing a more programmable geometry pipeline stage in Vega that will run a new type of shader it calls a primitive shader. According to AMD corporate fellow Mike Mantor, primitive shaders will have "the same access that a compute shader would have to coordinate how you bring work into the shader." Mantor also says that primitive shaders will give developers access to all the data they need to effectively process geometry, as well.
AMD thinks this sort of access will ultimately allow primitives to be discarded at a very high rate. Interestingly, Mantor expects that programmable pipeline stages like this one will ultimately replace fixed-function hardware on the graphics card. For now, the primitive shader is the next step in that direction.
To effectively manage the work generated by this new geometry-pipeline stage, Vega's front end will contain a new "intelligent workgroup distributor" that can consider the various draw calls and instances that a graphics workload generates, group that work, and distribute it to the right programmable stage of the pipeline for better throughput. AMD says this load-balancing design addresses workload-distribution shortcomings in prior GCN versions that were highlighted by console developers pushing its hardware at a low level.