During a livestreamed presentation at Build, Xbox One Team Partner Development Lead Frank Savage explained in detail how the much discussed ESRAM of the Xbox One works, also mentioning that it can help developer sreach the fabled 1080p resolution goal or a 60 frames per second resolution with their games:
ESRAM is dedicated RAM, it’s 32 megabytes, it sits right next to the GPU, in fact it’s on the other side of the GPU from the buses that talk to the rest of the system, so the GPU is the only thing that can see this memory.
And what it does is that it gives you very very high bandwidth output, and read capability from the GPU as well. This is useful because in a lot of cases, especially when we have as large content as we have today and five gigabytes that could potentially be touched to render something, anything that we can move to memory that has a bandwidth that’s on the order of 2 to 10 x faster than the regular system memory is gonna be a huge win.
So this is where you put things that you gonna read a lot like a shadow map, put things that you draw to a lot, like your back buffer… We have resource creation settings that allow you to put things into there, and don’t have to all reside in the ESRAM, there can be pieces of it that can reside in regular memory as well. So for example if I’m a racing game, and I know that the top third of my screen is usually sky and that sky doesn’t get touched very much, great, let’s leave that in regular memory, but with the fast memory down here we’re gonna draw the cars. This works practically for any D3D resource there is, buffers, textures of any flavors… There’s no CPU access here, because the CPU can’t see it, and it’s gotta get through the GPU to get to it, and we didn’t enable that.
So the last thing you have to do to get it all composited up is to get it copied over to main memory. That copy over to main memory is really fatst, and it doesn’t use any CPU or GPU time either, because we have DNA engines that actually do that for you in the console. This is how you get to 1080p, this is how you run at 60 frames per second… period, if you’re bottlenecked by graphics.
Savage’s explanation was definitely intriguing, especially with some developers encountering initial difficulties in using the ESRAM effectively. It’ll probably take some time for them to master its capabilities to their full extent, but it’ll be very interesting to see where what they’ll be able to do with those apparently tiny 32 megabytes that can potentially achieve a lot more than what their size suggests.