Yes, that's an important correction to my explanation. I guess I should have said 'rendering functions' or something. I'm assuming a graphics engine that spans both memory pools, but what you say suggests that's actually a bit rare (?).
I'm not really in a position to answer that, as I haven't really seen the code of many other people. It is certainly possible - and absolutely straight-forward - to use XDR for rendering stuff. I don't think it's really needed for bandwidth, though. More on that below.
In essence the aggregate BW of XDR+GDDR isn't readily being targeted for rendering, instead the XDR BW is being isolated somewhat to game code. If that's the case in the majority of titles, PS3's graphics capabilty will be limited to something like 256 MBs VRAM (excluding OS reservations if any) and 20 GB/s BW, which isn't a great deal.
20GB/s is a whole lot of bandwidth, if you use it smart. Let's calculate! Assume 1080p and 30fps for 666MB/frame and 8MB for your target. If we do a deferred-pass, we'll probably do a z-prepass. Assuming we hit every pixel 5 times (ouch!), we're at 80MB for this frame. Now for the g-pass, we'll probably reduce the number of hits on the z-buffer a lot, simply by early-z tests. But let's assume 2 reads per pixel, or 16MB. We'll also need textures here, so let's say diffuse, normal, specular and foo, all DXT5. With 50% texture cache hit-rate (not very good), we're at 8 bytes per pixel read (bilinear) and probably 12 bytes writing. So that's about 40MB.
The deferred-pass itself will eat a lot. We have 4 targets to read, all 4bpp, and maybe two to write (yes, I'm making this up). So we have 6 full 1080p targets moving around, for 48MB. So just for my deferred solid-pass, I've consumed 80+16+40+48=184MB of bandwidth. So that's a quarter of my bandwidth. There's still plenty for transparent passes, shadows, particles and whatnot.
(I've probably made a big terrible mistake in there somewhere, but hey, you get the point. If it's all off by a factor of 2, just assume I was talking 720p.)
To be honest with you, if you're using a not-so-smart forward renderer (as opposed to a smart forward renderer
), especially with a good number of light-passes, bandwidth will kill you. Add some AA, some aniso, render to FP16 targets and you will feel the bandwidth fast. On the other hand I would argue that this is not necessary, most of the time. If you pick your texture resolutions wisely, apply advanced filtering where you need it and have some good artists, you'll get great results without needing 100GB/s busses.
I don't suppose there's any way to determine what games are using XDR for textures.
Nah, no chance. I can't profile other people's games on a devkit, sadly. Boy would that be fun.