New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
D3D: Implement vectored efb pokes #3361
Conversation
46de608
to
9ce52cd
Compare
| { | ||
| u32 rgbaColor = (poke_data & 0xFF00FF00) | ((poke_data >> 16) & 0xFF) | ((poke_data << 16) & 0xFF0000); | ||
| EfbPokeData d; |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This saves allocating a vector for the pass-through path.
9ce52cd
to
a61fc37
Compare
|
OGL + VideoCommon LGTM, no clue about D3D |
|
@hdcmeta Do you want to review the d3d11 parts? |
|
Tested this out. It works fine and speeds up EFB pokes by around 7 times. Tested Avatar: The Last Airbender (GC), Jimmy Neutron: Boy Genius (GC) and Mario Strikers Charged (Wii). Tested using Real XFB enabled (native res) and disabled (upscaled res). |
D3D: Implement vectored efb pokes
|
Oh my god, very very great improvement : ) works awesome on Super Mario Galaxy, Resident evil 4 GC, The legend of Zelda Windwaker, etc. No problems found. And works much better than the OpenGL version (Comparison in Resident evil 4 GC version) |
Implementing the vectored EFB poke path for the D3D backend that is currently present in the GL backend.
This needs testing, I haven't identified any regressions, but if there is anyone who has titles that heavily use EFB pokes, could you please confirm this does not change anything, visually. Performance should be on par with GL now.
Additionally, I've increased the util vertex buffer to 64KiB, to reduce the number of draws which have to be issued to draw an entire frame with efb pokes. That buffer class is rather iffy though, and I had to modify it in order to not have to have an intermediate buffer, probably would be an idea in the future to create a general "streaming" buffer (and perhaps share with the vertex loader).