The pros and cons of eDRAM/ESRAM in next-gen

The Witcher 3 Dev: Hitting Full HD 1080p on Xbox One Using eSRAM is a Challenge – Constantly Optimizing Usage

Filing this under this thread. More or less what this forum has agreed upon.

“I would say that targeting Full HD with a complex rendering pipeline is a challenge in terms of ESRAM usage. Especially when this pipeline is built on deferred rendering. We are definitely taking advantage of the ESRAM on Xbox One, and we know that we have to fit into these limits, so we are constantly optimizing the usage.”

Read more: http://wccftech.com/cd-projekt-red-achieving-1080p-witcher-3-xbox-esram-challenge/#ixzz39RIAoY3b
 
I don't know what to think anymore. One side says it's the ESRAM, others say it's some other bottleneck(Which is never specified).
 
Deferred rendering needs multiple frame buffers, which can't all fit in that 32MB at the same time. Additional work on moving the data is needed to make that happen.
 
Yeah, the limited size of the ESram creates a real flexibility issue. IF they do decide to go with 1080p i wonder how much they will have to dial back the IQ.
 
the developers will choose the better overall IQ, ergo, they wouldn't choose to go for higher resolution with worse overall look.
 
So does extra AA have any effect on the ESRAM? Or are we talking general horsepower consumption here.
 
Deferred rendering needs multiple frame buffers, which can't all fit in that 32MB at the same time.

As far as I know there's no fixed configuration for the G-buffer. Several devs have already managed to optimize memory usage and buffer configuration and even talked about their approaches so it's not even some secret knowledge any more.

Still, 1080p is probably a bit more challenging to get to work.
 
As far as I know there's no fixed configuration for the G-buffer. Several devs have already managed to optimize memory usage and buffer configuration and even talked about their approaches so it's not even some secret knowledge any more.

Still, 1080p is probably a bit more challenging to get to work.

True. Also there are already games running at 1080p with no real difference in IQ or assets.
As far a defered rendering being a problem for the 32mb of esram. It has been stated by several devs the ideal usage of esram is to use it for the parts of the framebuffer that need to be accessed quickly. The entirety of the framebuffer doesnt have to go through esram at all.
Remember the main dram can also be used for the framebuffer.
 
So does extra AA have any effect on the ESRAM? Or are we talking general horsepower consumption here.

Depends on the type of AA. MSAA has a huge memory requirement (4x memory for 4x MSAA) but has a fairly low bandwidth hit in comparison. So using an MSAA gbuffer is petty much out of the question.

Post process AA memory usage roughly scales with the size of the output image, and (if temporal) the number of history buffers. However it has a pretty heavy bandwidth and ALU hit especially if it does long edge detection tests.
One non-obvious side effect of temporal AA is that it typically requires per-pixel motion vectors, which adds additional requirement on your gbuffer (typically at least 3-4 bytes per pixel)

As far as I know there's no fixed configuration for the G-buffer. Several devs have already managed to optimize memory usage and buffer configuration and even talked about their approaches so it's not even some secret knowledge any more.

Still, 1080p is probably a bit more challenging to get to work.

Gbuffers are entirely up to the developer. You could go the extreme 'everything we could possibly need at high precison' route, like infamous and shadow fall (40+ Bpp) or go for a leaner, more restrictive system that limits what effects and material types you can manage. My favorite, (and what I suspect will see much more traction going forward) is getting the gpu to do material type specific bit packing. So for example, a simpler material gets more precision - while a complex material with more data gets more compression. But each uses the same number of bits per pixel. Per pixel you just output a number of bytes instead of writing a fixed set of separate color buffers (in varying formats) as occurs in traditional gbuffers rendering.

Bungie are sort of halfway there with destiny. I'd like to say what we are doing but I won't :mrgreen:

Needless to say, the infamous/KZ approach really isn't practical on the XB1 - where even 720p wouldn't fit.
Yet even 12 bytes per pixel, 3x RGBA8 buffers (plus 4Bpp depth, and 1B stencil) would not fit full 1920x1080. Which should make it quite clear why ESRAM will cause developer discomfort. 12 bytes really isn't much at all given how complex today's material models are..
 
Yet even 12 bytes per pixel, 3x RGBA8 buffers (plus 4Bpp depth, but not stencil) would not fit full 1920x1080. Which should make it quite clear why ESRAM will cause developer discomfort. 12 bytes really isn't much at all given how complex today's material models are..

That's why tiled rendering is most convenient.
 
My favorite, (and what I suspect will see much more traction going forward) is getting the gpu to do material type specific bit packing. So for example, a simpler material gets more precision - while a complex material with more data gets more compression. But each uses the same number of bits per pixel. Per pixel you just output a number of bytes instead of writing a fixed set of separate color buffers (in varying formats) as occurs in traditional gbuffers rendering.

Really cool to know you are going that route. I'll be curious to see the result, and whatever presentation or blog post on the subject if one ends up getting released! Good luck on your research, and on whatever project you guys are working on at your studio.
 
I realized I made a mistake there. 1080 /w a 12Bpp gbuffer would fit without stencil... Just. With stencil wouldn't fit.
 
Digital Foundry: Is ESRAM really that much of a pain to work with?

Oles Shishkovstov: Actually, the real pain comes not from ESRAM but from the small amount of it. As for ESRAM performance - it is sufficient for the GPU we have in Xbox One. Yes it is true, that the maximum theoretical bandwidth - which is somewhat comparable to PS4 - can be rarely achieved (usually with simultaneous read and write, like FP16-blending) but in practice I've seen only a few cases where it becomes a limiting factor.

http://www.eurogamer.net/articles/d...its-really-like-to-make-a-multi-platform-game
 
The ESRAM doesn't offer any advantages over the PS4 ram does it? They talk about how great it will be when tiling comes along. But the PS4 ram is nearly as fast and there is way more of it. Am I simplifying this too much?
 
The ESRAM doesn't offer any advantages over the PS4 ram does it? They talk about how great it will be when tiling comes along. But the PS4 ram is nearly as fast and there is way more of it. Am I simplifying this too much?

Im not sure, but you are completely leaving out the fact that they X1 also has 8gb of ddr3 that the gpu also accesses at 64gb per second. The main dram can be used for all the same things the esram can be used for.
 
The ESRAM doesn't offer any advantages over the PS4 ram does it? They talk about how great it will be when tiling comes along. But the PS4 ram is nearly as fast and there is way more of it. Am I simplifying this too much?
As per the entire thread, there's nothing you can do as an optimisation for ESRAM amount or BW that you can't also use in PS4 or PC for the same sorts of advantages. There's a possibility that in certain cases you can get a higher peak BW in the XB1, but it's probably not something that can be designed around. There's also a possibility that some tasks would benefit from the lower latency, although we've no idea how much so.

So until something real appears as strong evidence for a benefit, the ESRAM doesn't bring any performance or usability advantages to the platform. It's solely about getting the same sort of bandwidth using cheaper RAM as a cost choice, which may scale cheaper faster than GDDR5. In short, no, the ESRAM doesn't bring any advantages of PS4 RAM at the moment.
 
Back
Top