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

Use gallium nine with Proton FullScreen hack patch... #131

Open
Castro-Fidel opened this issue Apr 13, 2022 · 12 comments
Open

Use gallium nine with Proton FullScreen hack patch... #131

Castro-Fidel opened this issue Apr 13, 2022 · 12 comments

Comments

@Castro-Fidel
Copy link

Hello.
Is it possible to run G9 under the version of wine with FullScreen hack patch?

@Castro-Fidel
Copy link
Author

Native Direct3D 9 v0.8.0.385-release is active.
For more information visit https://github.com/iXit/wine-nine-standalone
fixme:d3d9nine:DRIPresentGroup_GetMultiheadCount (0xb456d0), stub!
fixme:d3d9nine:DRIPresentGroup_GetMultiheadCount (0xb456d0), stub!
X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
Major opcode of failed request: 14 (X_GetGeometry)
Resource id in failed request: 0x0
Serial number of failed request: 14
Current serial number in output stream: 14

@lorn10
Copy link

lorn10 commented Apr 14, 2022

Maybe you should check the information available in #125. Last version of proton which was official compatible to Gallium Nine was 4.2-9 from Jun 2019.

It may be possible to get Gallium Nine working again on newer Proton versions but you may have to "hack this together" at your own. 😉

I think a good source for this project will be the blog of Mike Blumenkrantz, the Zink developer, here:
https://www.supergoodcode.com/the-finale/

@niobium93
Copy link

@lorn10 AFAIK #125 is talking about a different and unrelated problem to this and that blog post talks about using nine in native games with d3d9 renderers, not Proton/Wine.

This is a different problem which causes Gallium Nine to crash in any version of Wine patched with various patches from Proton. This is a known bug in wine-tkg for example.

This includes most any Wine version used by gamers, including lutris runners. The only people who can still use Gallium Nine are those running vanilla Wine or vanilla Wine Staging.

@niobium93
Copy link

Can confirm it also crashes with wine-ge.
wine-ge gallium-nine.log

@lorn10
Copy link

lorn10 commented Apr 17, 2022

Okay, I see... Now I understand.

Whatever, for me Gallium Nine worked almost perfectly well in Wine Stable and Wine Devel in conjunction with the CXBX-R Xbox emulator.

Maybe these incompatibility problems will became better when also Gallium Nine is finally converted into a true PE module, see #130. I hope that this transition will simplify the integration process of Gallium Nine into Wine, Proton, Lutris and so on. 😉

Addition: Unfortunately it looks that this simply cannot work so easy. The reason is DXVK which is at all those special Wine forks deeply integrated. So since DXVK comes with its own Direct3D9 functionality it was most likely decided to only use that one.

So the whole matter here is in the end not so easy to solve. Maybe this will change at some point in the far future when Gallium Nine and the new state tracker d3d10umd (which should be expanded to d3d11umd) are once fully integrated into Wine.:smile:
Seriously, If I understand this topic correctly then this would help a lot. The biggest stumbling block for an integration of native D3D state-trackers into Wine is effectively the lack of a WDDM DDI (Windows Display Driver Model) implementation in Wine.

@axeldavy
Copy link
Collaborator

Gallium nine is compatible with the fullscreen hack, but it is indeed not covered by Proton.

So far we are stuck to using wine directly.

@niobium93
Copy link

@axeldavy are you sure about that? I just built wine-tkg a bunch of times with various patches enabled or disabled and every time I have either _proton_fs_hack or _childwindow_fix set to true Gallium Nine crashes. Maybe it used to be compatible, but the fullscreen hack changed and now it isn't? Could you please re-test this to make sure.
These are the patches from tkg that cause me issues:
valve_proton_fullscreen_hack-staging.patch
childwindow-proton.patch

@Kethen
Copy link

Kethen commented May 3, 2022

I managed to build proton 7.2 ge-2 that allows nine standalone to work with @niobium93's findings, by commenting the following lines to skip fshack related patches
https://github.com/GloriousEggroll/proton-ge-custom/blob/b7dcda35ddb5c2a37f84ffcf194528e7bde49e3f/patches/protonprep.sh#L354
https://github.com/GloriousEggroll/proton-ge-custom/blob/b7dcda35ddb5c2a37f84ffcf194528e7bde49e3f/patches/protonprep.sh#L357
https://github.com/GloriousEggroll/proton-ge-custom/blob/b7dcda35ddb5c2a37f84ffcf194528e7bde49e3f/patches/protonprep.sh#L483

@axeldavy
Copy link
Collaborator

axeldavy commented Jun 6, 2022

the part of the patch
"[PATCH] winex11.drv: Remove unused X11DRV_GET_DRAWABLE ExtEscape"
removes something nine uses and totally requires. Nine has no way to possibly work without this (besides using internal wine structures directly, which would require to be in-tree to be ABI compatible).

@niobium93
Copy link

niobium93 commented Jun 6, 2022

Maybe we could ask Proton upstream to just remove that commit? If all it does is remove unused functionality, they should have no problem just keeping it instead?

@axeldavy
Copy link
Collaborator

axeldavy commented Jun 7, 2022

Before that it would be appropriate to see if reverting just that part is enough to make the whole work again as it did in the past.

@niobium93
Copy link

I made a patch that reverts that commit and used the wine-tkg build system to apply it to a build which also had fshack enabled. This resulted in a build where Gallium Nine fully works.

Here's the patch in case someone wants an easy way to try.

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

No branches or pull requests

5 participants