Skip to content
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

Merged
merged 2 commits into from Dec 30, 2015

Conversation

stenzek
Copy link
Contributor

@stenzek stenzek commented Dec 19, 2015

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).

{
u32 rgbaColor = (poke_data & 0xFF00FF00) | ((poke_data >> 16) & 0xFF) | ((poke_data << 16) & 0xFF0000);
EfbPokeData d;

This comment was marked as off-topic.

This saves allocating a vector for the pass-through path.
@degasus
Copy link
Member

degasus commented Dec 22, 2015

OGL + VideoCommon LGTM, no clue about D3D

@degasus
Copy link
Member

degasus commented Dec 23, 2015

@hdcmeta Do you want to review the d3d11 parts?

@skidau
Copy link
Contributor

skidau commented Dec 29, 2015

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).

@degasus degasus changed the title [Testing required] D3D: Implement vectored efb pokes D3D: Implement vectored efb pokes Dec 29, 2015
degasus added a commit that referenced this pull request Dec 30, 2015
@degasus degasus merged commit 3303292 into dolphin-emu:master Dec 30, 2015
@LuismaSP89
Copy link

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)

@stenzek stenzek deleted the d3d-vectored-efb-pokes branch January 9, 2016 04:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
5 participants