Repository navigation
Conversation
A fresh prefix is close to a gigabyte of files that wineboot copies out of the runner, and every game gets its own. Build one template per runner per library and seed each game from it with "cp -c", which clones on APFS so the files share blocks. Measured across two games: 2834 MB logical, 942 MB actually consumed. It also skips the work wineboot would redo, so launches after the first are noticeably faster. The template sits in the library's compatdata, so it is always on the volume it seeds; a same_volume check falls back to a plain copy otherwise. It is built through lay_out_proton_profile and then wineboot, the same order and the same steps a game's prefix takes, because a bare wineboot leaves a real users/crossover directory that lay_out_proton_profile then refuses to convert, which would cost every seeded prefix the steamuser layout. That needed lay_out_proton_profile to accept the prefix to lay out. The key includes the unix arch, since one runner directory now serves both flavors and they populate a prefix from different PE sets.
Contributor
Author
|
some not clean overlap with #8, apologies I hadn't seen it, but I think all are relevant. |
Owner
|
Will give this a review today. Very interesting way to do things. I was exploring this approach earlier in development, but it got cut for time. I think it's worth looking into. |
Contributor
Author
|
I'm just updated to HEAD of dev and this needed some modifications. I'm just finishing testing it and will update if you want to hold off a moment :) |
Contributor
Author
|
updating this with dev changes looked messy, so I'm closing and replacing with a cleaner-to-read #19). |
Contributor
|
omg @natbro big fan! |
Contributor
|
Please teach me how to develop Shadps4 to run better on mac 😭 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A fresh prefix is close to a gigabyte of files that wineboot copies out of the runner, and every game gets its own. Build one template
($STEAM_COMPAT_DATA_PATH)/notproton-template)per runner per library and seed each game from it with "cp -c", which clones on APFS so the files share blocks. Measured across two games: 2834 MB logical, 942 MB actually consumed. It also skips the work wineboot would redo, so launches after the first are noticeably faster.The template sits in the library's compatdata, so it is always on the volume it seeds; a same_volume check falls back to a plain copy otherwise. It is built through lay_out_proton_profile and then wineboot, the same order and the same steps a game's prefix takes, because a bare wineboot leaves a real users/crossover directory that lay_out_proton_profile then refuses to convert, which would cost every seeded prefix the steamuser layout. That needed lay_out_proton_profile to accept the prefix to lay out. Depending on how Steam does integrity checks or wants this to work, it might make sense to store this in
($STEAM_COMPAT_DATA_PATH")/<NotProton-appid>/notproton-templateinstead.The key includes the unix arch, since one runner directory now serves both flavors and they populate a prefix from different PE sets.