Exophase
Nothing good will ever come of Exophase.
God Ginrai said:Interesting. So, the emulation of the games are being slowed down only by graphics rendering? o_ô
-God Ginrai
One of the big things that's taking up time in emulating graphics is geometry transformation and lighting, rather than the rasterization that the SGX performs. This is performed by high level emulation but accomplishes the same task as the RSP vector processor on an N64. You can see this being performed in gSP.cpp in gles2n64.
The issue I have with the way things are being done right now is that all of the vector transforms and dot products, which most likely dominate computation for geometry, are being serialized through some functions. This does nothing to hide the high latency of NEON vector multiply + add operations, making these operations take dozens of cycles instead of a few. But if you look at what gSP.cpp is doing, the vectors to be transformed are being batched in at least some capacity. So the inner transform routines should really be batched and NEON-ized - you will ideally want batches of at least 8 or so at a time to maximize performance. You'll also want to hoist a lot of stuff out of the inner loop of the vector transform. Where loop multiplexing stops being practical things should be broken into multiple passes instead. Finally, I recommend removing the clipping entirely if at all possible and having the SGX do it, but where not possible at least NEONize more of the bounds checking.
I could be way off base but I think there could be a lot of performance to be gained on the GPU plugin side of things, far more than can be gained from any improvements to CPU emulation. But I'm just an onlooker on this right now, and would like to know what Adventus thinks.
Last edited by a moderator: