Traditionnaly, GPU sync is quite simple: it's one frame behind (or more).
The CPU doesn't need anything from the GPU, it's just sending command/stream/texture without receiving anything. Simple and efficient...
The question is: will this very simple model still optimal for next-gen consoles ?
Some facts:
- being able to retrieve data from the GPU allow very interesting tricks
- next-gen are multi-core, so coders have to face the parallelism issue anyway
One way of allowing the CPU to use the GPU is make the GPU only a fraction of a frame behind (number = frame number):
CPU: 444444444444 555555555555
GPU: 3333 44444444444 555555555555
That way, the CPU can send command to the GPU and get the result later within the same frame. This model can be seen as the exact copy of the previous (historical) one, but on a "sub-frame" basis. Indeed, it's acting like if a frame was composed of n virtual sub-frames (n~10)
Yeah, that's a bit tricky, but I can't live without bringing back some of the RSX power into the cell. What do you think ?
The CPU doesn't need anything from the GPU, it's just sending command/stream/texture without receiving anything. Simple and efficient...
The question is: will this very simple model still optimal for next-gen consoles ?
Some facts:
- being able to retrieve data from the GPU allow very interesting tricks
- next-gen are multi-core, so coders have to face the parallelism issue anyway
One way of allowing the CPU to use the GPU is make the GPU only a fraction of a frame behind (number = frame number):
CPU: 444444444444 555555555555
GPU: 3333 44444444444 555555555555
That way, the CPU can send command to the GPU and get the result later within the same frame. This model can be seen as the exact copy of the previous (historical) one, but on a "sub-frame" basis. Indeed, it's acting like if a frame was composed of n virtual sub-frames (n~10)
Yeah, that's a bit tricky, but I can't live without bringing back some of the RSX power into the cell. What do you think ?