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

Implement Direct3D 8 Frontend #3411

Merged
merged 306 commits into from
Jul 7, 2024
Merged

Conversation

AlpyneDreams
Copy link
Contributor

@AlpyneDreams AlpyneDreams commented May 10, 2023

D8VK is far more feature complete at this point than I believe D9VK was when it was merged into DXVK in 2019. There are still maybe a few dozen edge case games that haven't been fixed yet but every game in this list plus many more do work at this point.

Issues that would need to be closed before merging: (a lot of this is just admin)

Things to do before merge:

Things that can be done after the merge:

Note about static linking: We are moving back to dynamic linking. The following games were fixed specifically when we added static linking, but currently work with the latest main even with dynamic linking:

  • Empires Dawn of the Modern World
  • Anito: Defend a Land Enraged

Not having issues at any point in my testing include: Advent Rising. Not tested but speculated to maybe have had issues: Acceleration of Suguri 2, Acceleration of SUGURI X-Edition HD.

@doitsujin
Copy link
Owner

I think once we're at a point where this can be merged, I'd squash everything into one commit again, like we did for D3D9.

Probably a good idea to rebase this whole thing now and sort out things like the build system changes though.

@PatrickvL
Copy link

Would it make sense to split off and merge the Direct3D 9 chances in this pull request separately?

src/d3d9/d3d9_bridge.h Outdated Show resolved Hide resolved
@doitsujin
Copy link
Owner

Would it make sense to split off and merge the Direct3D 9 chances in this pull request separately?

Ideally, yes. Any changes to common code as well.

@AlpyneDreams
Copy link
Contributor Author

Would it make sense to split off and merge the Direct3D 9 chances in this pull request separately?

Ideally, yes. Any changes to common code as well.

I'd make an exception for D3D9Bridge since that's just part of the d3d8 architecture. Everything else I can try to split off like #3408

@qwertychouskie
Copy link

I think once we're at a point where this can be merged, I'd squash everything into one commit again, like we did for D3D9.

Probably a good idea to rebase this whole thing now and sort out things like the build system changes though.

Wouldn't squashing everything remove authorship information of the commits? There are commits from more than 1 person in the D8VK repo.

@Blisto91
Copy link
Contributor

Just gonna note here that for my own commits i don't care

@WinterSnowfall
Copy link
Contributor

That's not really a problem. I don't think anyone will mind (I certainly don't). And for the record probably 98%+ of the code is Alpyne's work (and dedication) anyway.

@Blisto91
Copy link
Contributor

It's also possible to add everyone as coauthor if relevant.

@doitsujin
Copy link
Owner

It's also possible to add everyone as coauthor if relevant.

Yeah that. This is what we did with the d9vk merge as well, it's not that hard to make git put out a list of authors and add everyone as co-authors.

@Bitwolfies
Copy link

Question, once merged will any upstream D3D8 workarounds in proton have to be removed? I ask because I got a patch merged for both Bloodrayne terminal cuts that force the local D3D8 wrapper to be used, as it fellback to wined3d otherwise and gave awful performance.

@WinterSnowfall
Copy link
Contributor

Question, once merged will any upstream D3D8 workarounds in proton have to be removed?

I'm not sure how Proton handles dll overrides, but the situation will be a bit tricky for games that ship their own d3d8.dll for one reason or another, since a native override will load the dll they ship, not d8vk's.

So the answer is ideally yes, they should be removed and replaced by a global override, however users may still have to manually rename/delete game shipped d3d8.dlls themselves to properly leverage d8vk, depending on what those dlls actually do. Some are just pass-throughs with some fixes, as in the case of Better Rayman, which is fine, but the BloodRayne games ship what is essentially d3d8to9, which is not what we want to load once d8vk gets merged.

@AlpyneDreams
Copy link
Contributor Author

Officially ready for first round of code review!

@AlpyneDreams AlpyneDreams marked this pull request as ready for review July 3, 2023 14:14
@pchome
Copy link
Contributor

pchome commented Jul 3, 2023

  1. *.sym file, if native builds supported
  2. src/d3d9/meson.build is unrelated, or add newlines where they are currently missing in src/d3d8/d3d8_*.* files
  3. the whole src/d3d8/d3d8_include.h is total mess, especially
    +#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)         \
    +}                                                                     \

src/util/config/config.cpp Outdated Show resolved Hide resolved
@AlpyneDreams
Copy link
Contributor Author

  1. *.sym file, if native builds supported

Can do.

  1. src/d3d9/meson.build is unrelated, or add newlines where they are currently missing in src/d3d8/d3d8_*.* files

Fixed. That was left over from changes to the d3d9 meson.

  1. the whole src/d3d8/d3d8_include.h is total mess, especially
    +#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)         \
    +}                                                                     \

This is exactly the same as the MingW implementation of this macro except it allows us to include d3d9 in a namespace. The macro is used a lot throughout d3d9.h. The program would not compile if d3d9 was not included in a namespace.

I could re-format it maybe but I don't really see what's wrong with it specifically?

@Joshua-Ashton Joshua-Ashton merged commit 60e523b into doitsujin:master Jul 7, 2024
4 checks passed
@Joshua-Ashton
Copy link
Collaborator

seal-hop-seal-approaching-ezgif com-effects

@Snowiiii
Copy link

Snowiiii commented Jul 7, 2024

Don't forget to change the Github repo description as well

@Sterophonick
Copy link

caption-7

@jams3223
Copy link

jams3223 commented Jul 7, 2024

ba060429615b472062dc87ace4910883f3e43cdd7ad7476b710be6233d6209eb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet