rincewind said:Forgive me if I'm being an idiot, but doesn't the current PhysX have to feed data back to the CPU over the PCI bus? 2Tb/s internal bandwidth is all well and good, but the PCI bus only offers ~132Mb/s (some of which is already eaten up). PCI-E x16 gives a more respectable 6.4Gb/s, and the bus itself is capable of double that (PCI-E mobos normally have 32 lanes afaik) Am I missing something, or does PhysX have a major achilles heel right there? The data can be moved internally at lightspeed, but the most it can afford to transmit is a meagre 4 megs per frame (to maintain 30FPS).
While I'm not familiar with the PhysX API, you'd only need to send back a few floating point numbers per object in most cases: 3 for position, 3 for orientation. For boxes tumbling about, you'd have to have about 175,000 boxes to saturate the PCI bandwidth at that rate. There simply isn't a lot of data that needs to be sent back to the CPU in most cases. Of course, PCIe would be less limiting, no?
Emulation?
That won't cut it.
For gameplay physics to operate, collision data have to be feedback to the CPU.
The problem is that once data enters the pixel pipelines, it's out of reach of the CPU.
You can't "emulate" a new GPU-stucture that is bi-directional...
The pipelines are a one way street...
No they're not. The pipelines generate data which is sent to a location in the GPU's memory. From there, it's not that hard to copy data from the GPU, over the AGP bus, and into system memory to get the results you need. Yes, it stalls a bit when you try to do something like that on D3D, but ATi is developing their physics API such that they're able to talk and interact VERY directly with the GPU, and so the stalling that would normally occur can be easily avoided.