PS4 lead system architect Mark Cerny set about talking about the bottlenecks that the console faces despite its power. Of course, this is all so that the team could consider ways for developers to work around them.
“With graphics, the first bottleneck you’re likely to run into is memory bandwidth. Given that 10 or more textures per object will be standard in this generation, it’s very easy to run into that bottleneck. Quite a few phases of rendering become memory bound, and beyond shifting to lower bit-per-texel textures, there’s not a whole lot you can do.
“Our strategy has been simply to make sure that we were using GDDR5 for the system memory and therefore have a lot of bandwidth.”
And if memory isn’t the bottleneck? “If you’re not bottlenecked by memory, it’s very possible – if you have dense meshes in your objects – to be bottlenecked on vertices. And you can try to ask your artists to use larger triangles, but as a practical matter, it’s difficult to achieve that. It’s quite common to be displaying graphics where much of what you see on the screen is triangles that are just a single pixel in size. In which case, yes, vertex bottlenecks can be large.
“There are a broad variety of techniques we’ve come up with to reduce the vertex bottlenecks, in some cases they are enhancements to the hardware. The most interesting of those is that you can use compute as a frontend for your graphics.”
Cerny describes this as “a mix of hardware, firmware inside of the GPU, and compiler technology. What happens is you take your vertex shader, and you compile it twice, once as a compute shader, once as a vertex shader. The compute shader does a triangle sieve – it just does the position computations from the original vertex shader and sees if the triangle is backfaced, or the like.
“And it’s generating, on the fly, a reduced set of triangles for the vertex shader to use. This compute shader and the vertex shader are very, very tightly linked inside of the hardware. It’s also not a hard solution to implement.
“From a graphics programmer perspective, using this technique means setting some compiler flags and using a different mode of the graphics API. So this is the kind of thing where you can try it in an afternoon and see if it happens to bump up your performance,” he said in an interview with Gamasutra.
Everyone got all that? With the PlayStation 4 releasing this Holiday season, it seems pertinent to get all this out of the way early to avoid a PS3-style debacle. However, Cerny and his team are already hard at work to avoid said debacle. They’ve promised a PS4-optimized version of their performance analysis tool Razor and example code for devs.
Cerny also says that real world code will be distributed later. “If somebody has written something interesting and is willing to post the source for it, to make it available to the other PlayStation developers, then that has the highest value,” he says.