patsu said:
No. Even with RSX, PS2 emulation is non-trivial or impossible.
racerx said:
Yes, that is correct. the reasons the ps2 is very difficult to emulate is because edram in the ps2.
Everytime I hear this i shake my head
The PS2 GPU has lots of bandwidth roughly 48 Gbits, thats 24 Gbit each way or :
19 Gbit frame buffer + 5 gbit texture buffer -> write
19 Gbit frame buffer + 5 gbit texture buffer <- read
Although i can't remember if the above is a 50/50 split read/write, it may of been 60/40
I think it also has about 1GB/s of bandwidth to access the main RDRAM.
The RSX has:
22.4 GB/s read and write bandwidth to GDDR (or 20.8)
and
20 GB/s read to the Cell and XDR memory
15 GB/s write to the Cell and XDR memory
Conveniently that adds up to about 47-48 Gbits in 2 discrete pools, that give you roughly the same bandwith as the PS2
So I postulate, throw the texture buffer onto the RSX's GDDR and also using DXTC(texture compression), to compress the textures, which the PS2 did not natively support, should reduce your texture bandwith requirements to about 4x the size
One of the main problem seems to be that the ps2's GS could context switch on a dime, so it could go from texturing to framebuffer effects in a couple of clock cycles, context switches on a modern GPU are very expensive, so instead they use fragment programs, or as you and me know them "shaders"
The solution to me would seem to be to write a library of variable shader functions, that emulate the context switches or states of the GS (but then you may as well re-write each game
)
Or perhaps a partial GS emulator on the SPU's that would dynamically generate (or dynamically recompile) a fragment shader based on the data passed to it from the game, the SPE would then pass the generated/translated/recompiled fragment shader onto the GPU
also to quote someone far more knowledgeable than me:
Fafalada Beyond 3d said:
the PS2 has 38.4GB bandwith to it's Frame+Z buffer, split into 19.2GB for read/write each respectively. And for vast majority of cases, a chip like
RSX will obliterate GS speed in any normal rendering, including multipass.
GS also tends to stall on waiting for geometry/texture a lot, something that RSX emulating PS2 would theoretically never have to do.
The other side of the story is rendering order of display lists, where just dumb execution of 'GS-ordered' commands could easily slow down
RSX for orders of magnitude - and working around that could ultimately boil down to the same thing about hand-optimizing games that you
said.
I should really start a thread on this.
EDIT: probably have my GB's and Gbit's mixed up somewhere up there, can't be bothered to fix it