Geez, what happened to this thread, I went to sleep and...
Anyway
Marc,
I am pretty sure MGS2 frame buffers are 24bit. Dithering becomes most noticeable in low contrast, lots of gradient look without excessive pixel detail variations (which MGS2 pretty much fits Imo). And I haven't really noticed any signs of it. Coupled with 16bit Z you get to just over 2mb(640x448 buffers). Closer to 1.8 if they used half height front buffer (I think they do, not sure right now).
ERP said:
32MB's @ 60fps requires 32*60 = 1920 MB/s or about 160% of the available bandwidth.
True, but you'll be memory limited long before you could start sending 32mb down the bus. (assuming you're not sending the same texture over and over
).
Not to mention that kind of hypotetical situation would require all your textures to be "mip level 0" only, and all of them to be visible at the same time. Which would in effect imply that the result would look like pixelated mess, or you'd be using some odd 100 or so texture layers on every pixel.
Hypotethically speaking, of course
But since we're on subject of theory, let's push this all the way. Using entire memory for textures, at 60hz, your total texture pool would be 32mb + ~5/10mb assuming IPU running at its theoretical peak alongside, outputting 16/32bit texels.
At 30hz, the pool would be ~42mb with IPU@16bit, so we'd actually be able to stuff the entire texture pool down the GIF bus, as silly as the idea itself is. 8)
Tagrineth said:
Don't forget that on the PS2, depending on how you use the textures and in what order, some textures will have to be sent across the bus several times...
As far as I'm concerned, cache trashing is indicative of poorly setup rendering engine. Realistically you should see very little to none of it if you do things properly, particularly with a predictable setup where you control everything like on PS2.
Also, multiple fetches of same texel blocks will happen on GC just as well if you aren't paying attention to your data flow.
Tagrineth said:
Main RAM won't stay in one state for the whole second!
Assuming you don't pass through loading areas, it almost definately will. Dynamic loading from external devices is often not really applicable (depends on the game type) and even when it is, it's not a trivial matter to handle without compromising performance of the application.