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

Is there interest in having upstream Engine again? #474

Closed
Gcenx opened this issue Oct 8, 2023 · 24 comments
Closed

Is there interest in having upstream Engine again? #474

Gcenx opened this issue Oct 8, 2023 · 24 comments

Comments

@Gcenx
Copy link
Owner

Gcenx commented Oct 8, 2023

Screenshot_2023-10-07_at_8 15 04_PM

That’s upstream wine running Steam on my m1 mini. Upstream Engines would contain minimal hacks (mostly Rosetta2 specific)

@Gcenx Gcenx pinned this issue Oct 8, 2023
@sonatique
Copy link

Hello @Gcenx : sorry, what do you mean exactly by "upstream engine" ? Do you mean "most up to date wrt to WineCX (or WineHQ) ?
Do I understand correctly that engine you usually provide contain much more hacks but use sightly older versions of Wine?

@Gcenx
Copy link
Owner Author

Gcenx commented Oct 8, 2023

Hello @Gcenx : sorry, what do you mean exactly by "upstream engine" ? Do you mean "most up to date wrt to WineCX (or WineHQ) ?

Upstream meaning Winehq.

Do I understand correctly that engine you usually provide contain much more hacks but use sightly older versions of Wine?

The current Engines aka WineCX are based on foss crossover-sources.

Since upstream wow64 is now in a good place it might be worth providing these again since it can be made to work under Rosetta2 not just Intel macs.

@sonatique
Copy link

OK, cool. When you say "work under Rosetta2": do you mean that it could be built to run natively on Apple Silicon (instead of being built for Intel then translated to Apple Silicon during runtime)?

@Gcenx
Copy link
Owner Author

Gcenx commented Oct 8, 2023

OK, cool. When you say "work under Rosetta2": do you mean that it could be built to run natively on Apple Silicon (instead of being built for Intel then translated to Apple Silicon during runtime)?

Rosetta2 is Apples x86_64 translation layer.

wine still need to be x86_64 currently but due to some bugs that affect wine usually something won’t work correctly with upstream wow64. There’s some hacks that can be applied to workaround the Rosetta2 bugs resulting in a functional wine with working wow64 support.

@sonatique
Copy link

sonatique commented Oct 8, 2023

OK, I see, thank for taking the time to explain. I was confused by what you meant because I assumed that WineHQ wine was working straight out of the box with Apple Silicon: I thought that WineCX modifications were more like optimisations and and high level fixes, I didn't think some fundamental things had to be hacked in order to work.

Last question: when you say that current engines are based on foss crossover-sources: does this mean that for example for the WS11WineCX64Bit23.5.0 engine that you provide, you start with https://media.codeweavers.com/pub/crossover/source/crossover-sources-23.5.0.tar.gz but then you add you own hacks / fixes on top of it?
May I ask what kind of hacks/fixes? Are those more related to 3D things or to basic things like Rosetta?
Do you publish your modification to WineCX somewhere?
EDIT: I mean: does your "https://github.com/Gcenx/winecx" contains your personal modification made over crossover FOSS source? Or is it just like said in the About: "just a mirror of https://media.codeweavers.com/pub/crossover/source/" ?
Thanks!

@Gcenx
Copy link
Owner Author

Gcenx commented Oct 8, 2023

When you say that current engines are based on foss crossover-sources: does this mean that for example for the WS11WineCX64Bit23.5.0 engine that you provide, you start with https://media.codeweavers.com/pub/crossover/source/crossover-sources-23.5.0.tar.gz but then you add you own hacks / fixes on top of it?

Correct

May I ask what kind of hacks/fixes?

The hacks/fixes vary it’s not simple.

Are those more related to 3D things or to basic things like Rosetta?

It’s usually game specific fixes/hacks.

Do you publish your modification to WineCX somewhere?

No.

I mean: does your "https://github.com/Gcenx/winecx" contains your personal modification made over crossover FOSS source? Or is it just like said in the About: "just a mirror of https://media.codeweavers.com/pub/crossover/source/" ? Thanks!

It’s simply a mirror of crossover-sources wine with tags. It’s usually forked and used as the base for other projects.

@sonatique
Copy link

I see, things are clear now. Thanks a lot for your time!

@CodeRunner5235
Copy link

This seems interesting. Would it increase performance or just minimize required hacks?

@Gcenx
Copy link
Owner Author

Gcenx commented Oct 9, 2023

This seems interesting. Would it increase performance or just minimize required hacks?

It depends, sometimes games simply require hacks to function where others needs unimplemented functions that land in upstream.

Having something much closer to upstream means potentially getting these fixes much faster.

@palmerj
Copy link

palmerj commented Oct 10, 2023

Have the critical CX patches been push upstream? What do we loose by leaving the CX fork?

@Gcenx
Copy link
Owner Author

Gcenx commented Oct 10, 2023

Have the critical CX patches been push upstream?

As the relevant changes are marked “hacks” it might be difficult to get upstreamed.


What do we loose by leaving the CX fork?

These would be in addition to WineskinCX.

There’s always going to be additional hacks that live in CX that can’t be upstreamed.

@palmerj
Copy link

palmerj commented Oct 10, 2023

There’s always going to be additional hacks that live in CX that can’t be upstreamed.

Is there a list of these significant hack? It's pretty hard to know the impact of this without knowing what they are.

Are you considering providing the upstream Engine as an option alongside the WineskinCX fork, or just a swap out?

@Gcenx
Copy link
Owner Author

Gcenx commented Oct 10, 2023

Is there a list of these significant hack? It's pretty hard to know the impact of this without knowing what they are.

There’s quite a lot of hacks and some are not noted.


Are you considering providing the upstream Engine as an option alongside the WineskinCX fork, or just a swap out?

I’d still be providing WineskinCX builds.


Let’s say a game doesn’t work in CX23.5.0 but there’s a fix in upstream wine, it may be possible to simply play the game using for example wine-8.17.

Currently I end-up needing to back-port upstream commits to make things work, having upstream package available might help alleviate the need to do this.

@palmerj
Copy link

palmerj commented Oct 10, 2023

sounds great!

@niclimcy
Copy link

Is bypassing anticheat considered a hack that is not able to go upstream?

@Gcenx
Copy link
Owner Author

Gcenx commented Oct 13, 2023

Is bypassing anticheat considered a hack that is not able to go upstream?

Yes, I can justify Rosetta2 related hacks as they don’t do anything other than get wine working. Bypassing anti-cheat on the other hand I couldn’t justify to upstream.

@asmaloney
Copy link

This would be a great option. I was going to ask if it were possible to run those!

@ZeppLu
Copy link

ZeppLu commented Dec 5, 2023

Since upstream wow64 is now in a good place

Just curious, before upstream wow64 is in a good shape, how can winecx support 32bit PE on a 64bit-only macos? Do they build their own 32bit-to-64bit translation layer or so?

@Gcenx
Copy link
Owner Author

Gcenx commented Dec 5, 2023

@ZeppLu

Just curious, before upstream wow64 is in a good shape, how can winecx support 32bit PE on a 64bit-only macos?

You’d need to do three builds and install them into place sequentially.


Do they build their own 32bit-to-64bit translation layer or so?

Yes they’d created there own 32on64 system with the help of a custom version of llvm/clang-8 that could generate 32>64 thunks, this was used for CX19 > CX22.


Upstream has hand generated thunks so there’s no requirement for a custom version of llvm/clang-8 anymore.

@niclimcy
Copy link

May I know how are your engines build currently and how is gptk included in them? Is gptk compiled already and just added on as libs to a wine build?

@Gcenx
Copy link
Owner Author

Gcenx commented Dec 31, 2023

May I know how are your engines build currently.

There plenty of online guides for building wine based of steps I’ve provided, this includes Apples gptk brew formula that’s based on one I use to provide.

how is gptk included in them?

gptk is two components, wine & d3dmetal, my custom packages mention D3DMetal on there name if it’s included.

The new gptk engine (only for comparison sake) is complete game-porting-toolkit + d3dmetal pre included just not marked.

Is gptk compiled already and just added on as libs to a wine build?

See my above comment.

@niclimcy
Copy link

niclimcy commented Jan 1, 2024

May I know how are your engines build currently.

There plenty of online guides for building wine based of steps I’ve provided, this includes Apples gptk brew formula that’s based on one I use to provide.

how is gptk included in them?

gptk is two components, wine & d3dmetal, my custom packages mention D3DMetal on there name if it’s included.

The new gptk engine (only for comparison sake) is complete game-porting-toolkit + d3dmetal pre included just not marked.

Is gptk compiled already and just added on as libs to a wine build?

See my above comment.

Thank you!

@yochenhsieh
Copy link

Please could you upload more recent winehq releases? Maybe 9.0-rc?
Just found a mac-only issue and cannot reproduce in Linux. So upstream winehq engine would be very helpful.
Mac + CX 22, 23 engines -> has bug
Mac + staging 8.18 engine -> has bug
Linux + Wine 8.0.2 -> no bug

@Gcenx
Copy link
Owner Author

Gcenx commented Jan 15, 2024

Please could you upload more recent winehq releases? Maybe 9.0-rc?
Just found a mac-only issue and cannot reproduce in Linux. So upstream winehq engine would be very helpful.
Mac + CX 22, 23 engines -> has bug
Mac + staging 8.18 engine -> has bug
Linux + Wine 8.0.2 -> no bug

I won’t consider providing these directly in Winery until after wine-9.0 releases.

You could always repack the wine packages I’m providing.

@Gcenx Gcenx closed this as completed Jan 17, 2024
@Gcenx Gcenx unpinned this issue Jan 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants