Hi,
I started playing with Dolphin code drop recently for fun, playing with profilers and boost perf if possible. I am a graphic/low level programmer in the video game industry, and will focus first on having a D3D11 backend faster than the OGL one
I do not yet anything to pull on git, but one of the change i work on already involve a deferred EFB access mode "hack". Usually, when a graphic engine read back memory from the GPU, it will be seen every frame and do not really need a strong link to the frame it was requested. And user code usually already deal with frame latency to prevent CPU/GPU syncs anyway ( at least on X360, PS3 and PC ).
The idea is to remove the sync completely. On the Render thread, we execute requests received as fake FIFO commands and put the results in a cache. On the CPU thread, we push the fake command to the FIFO and try to match a previously done request from the previous frames in the cache to return a value directly.
I am working on this for Zelda: Skyward Sword as profiling session shown a lot of sync waste to allow PEEK in the depth buffer. If you know some other games using EFB access with visible glitches when disable, let me know, i will look at the access pattern to see if the hack i am working on is also viable for them.
I started playing with Dolphin code drop recently for fun, playing with profilers and boost perf if possible. I am a graphic/low level programmer in the video game industry, and will focus first on having a D3D11 backend faster than the OGL one

I do not yet anything to pull on git, but one of the change i work on already involve a deferred EFB access mode "hack". Usually, when a graphic engine read back memory from the GPU, it will be seen every frame and do not really need a strong link to the frame it was requested. And user code usually already deal with frame latency to prevent CPU/GPU syncs anyway ( at least on X360, PS3 and PC ).
The idea is to remove the sync completely. On the Render thread, we execute requests received as fake FIFO commands and put the results in a cache. On the CPU thread, we push the fake command to the FIFO and try to match a previously done request from the previous frames in the cache to return a value directly.
I am working on this for Zelda: Skyward Sword as profiling session shown a lot of sync waste to allow PEEK in the depth buffer. If you know some other games using EFB access with visible glitches when disable, let me know, i will look at the access pattern to see if the hack i am working on is also viable for them.
