proton-ge-custom

This commit is contained in:
Nathan 2022-02-19 08:39:14 -06:00
parent d7e1d213c2
commit 5ae5a33538
6 changed files with 1050 additions and 0 deletions

270
proton-ge-custom/.SRCINFO Normal file
View file

@ -0,0 +1,270 @@
pkgbase = proton-ge-custom
pkgdesc = Compatibility tool for Steam Play based on Wine and additional components, GloriousEggroll's custom build
pkgver = 7.2.GE.2
pkgrel = 4
epoch = 1
url = https://github.com/GloriousEggroll/proton-ge-custom
arch = x86_64
arch = x86_64_v3
license = custom
makedepends = autoconf
makedepends = bison
makedepends = perl
makedepends = fontforge
makedepends = flex
makedepends = mingw-w64-gcc
makedepends = git
makedepends = wget
makedepends = rsync
makedepends = mingw-w64-tools
makedepends = lld
makedepends = nasm
makedepends = meson
makedepends = cmake
makedepends = python-virtualenv
makedepends = python-pip
makedepends = glslang
makedepends = vulkan-headers
makedepends = giflib
makedepends = lib32-giflib
makedepends = libpng
makedepends = lib32-libpng
makedepends = gnutls
makedepends = lib32-gnutls
makedepends = libxinerama
makedepends = lib32-libxinerama
makedepends = libxcomposite
makedepends = lib32-libxcomposite
makedepends = libxmu
makedepends = lib32-libxmu
makedepends = libxxf86vm
makedepends = lib32-libxxf86vm
makedepends = libldap
makedepends = lib32-libldap
makedepends = mpg123
makedepends = lib32-mpg123
makedepends = openal
makedepends = lib32-openal
makedepends = v4l-utils
makedepends = lib32-v4l-utils
makedepends = alsa-lib
makedepends = lib32-alsa-lib
makedepends = libxcomposite
makedepends = lib32-libxcomposite
makedepends = mesa
makedepends = lib32-mesa
makedepends = mesa-libgl
makedepends = lib32-mesa-libgl
makedepends = opencl-icd-loader
makedepends = lib32-opencl-icd-loader
makedepends = libxslt
makedepends = lib32-libxslt
makedepends = libpulse
makedepends = lib32-libpulse
makedepends = libva
makedepends = lib32-libva
makedepends = gtk3
makedepends = lib32-gtk3
makedepends = gst-plugins-base-libs
makedepends = lib32-gst-plugins-base-libs
makedepends = vulkan-icd-loader
makedepends = lib32-vulkan-icd-loader
makedepends = sdl2>=2.0.16
makedepends = lib32-sdl2>=2.0.16
makedepends = libgphoto2
makedepends = gsm
makedepends = opencl-headers
makedepends = attr
makedepends = lib32-attr
makedepends = fontconfig
makedepends = lib32-fontconfig
makedepends = lcms2
makedepends = lib32-lcms2
makedepends = libxml2
makedepends = lib32-libxml2
makedepends = libxcursor
makedepends = lib32-libxcursor
makedepends = libxrandr
makedepends = lib32-libxrandr
makedepends = libxdamage
makedepends = lib32-libxdamage
makedepends = libxi
makedepends = lib32-libxi
makedepends = gettext
makedepends = lib32-gettext
makedepends = freetype2
makedepends = lib32-freetype2
makedepends = glu
makedepends = lib32-glu
makedepends = libsm
makedepends = lib32-libsm
makedepends = gcc-libs
makedepends = lib32-gcc-libs
makedepends = libpcap
makedepends = lib32-libpcap
makedepends = lzo
makedepends = lib32-lzo
makedepends = libxkbcommon
makedepends = lib32-libxkbcommon
makedepends = sdl2>=2.0.16
makedepends = lib32-sdl2>=2.0.16
makedepends = desktop-file-utils
makedepends = python
makedepends = steam-native-runtime
makedepends = cabextract
depends = attr
depends = lib32-attr
depends = fontconfig
depends = lib32-fontconfig
depends = lcms2
depends = lib32-lcms2
depends = libxml2
depends = lib32-libxml2
depends = libxcursor
depends = lib32-libxcursor
depends = libxrandr
depends = lib32-libxrandr
depends = libxdamage
depends = lib32-libxdamage
depends = libxi
depends = lib32-libxi
depends = gettext
depends = lib32-gettext
depends = freetype2
depends = lib32-freetype2
depends = glu
depends = lib32-glu
depends = libsm
depends = lib32-libsm
depends = gcc-libs
depends = lib32-gcc-libs
depends = libpcap
depends = lib32-libpcap
depends = lzo
depends = lib32-lzo
depends = libxkbcommon
depends = lib32-libxkbcommon
depends = sdl2>=2.0.16
depends = lib32-sdl2>=2.0.16
depends = desktop-file-utils
depends = python
depends = steam-native-runtime
depends = cabextract
optdepends = giflib
optdepends = lib32-giflib
optdepends = libpng
optdepends = lib32-libpng
optdepends = libldap
optdepends = lib32-libldap
optdepends = gnutls
optdepends = lib32-gnutls
optdepends = mpg123
optdepends = lib32-mpg123
optdepends = openal
optdepends = lib32-openal
optdepends = v4l-utils
optdepends = lib32-v4l-utils
optdepends = libpulse
optdepends = lib32-libpulse
optdepends = alsa-plugins
optdepends = lib32-alsa-plugins
optdepends = alsa-lib
optdepends = lib32-alsa-lib
optdepends = libjpeg-turbo
optdepends = lib32-libjpeg-turbo
optdepends = libxcomposite
optdepends = lib32-libxcomposite
optdepends = libxinerama
optdepends = lib32-libxinerama
optdepends = opencl-icd-loader
optdepends = lib32-opencl-icd-loader
optdepends = libxslt
optdepends = lib32-libxslt
optdepends = libva
optdepends = lib32-libva
optdepends = gtk3
optdepends = lib32-gtk3
optdepends = gst-plugins-base-libs
optdepends = lib32-gst-plugins-base-libs
optdepends = vulkan-icd-loader
optdepends = lib32-vulkan-icd-loader
optdepends = libgphoto2
optdepends = gsm
optdepends = dosbox
provides = proton
noextract = wine-gecko-2.47.2-x86.tar.xz
noextract = wine-gecko-2.47.2-x86_64.tar.xz
noextract = wine-mono-7.1.2-x86.tar.xz
options = !staticlibs
options = !lto
options = emptydirs
source = proton-ge-custom::git+https://github.com/gloriouseggroll/proton-ge-custom.git#tag=7.2-GE-2
source = wine::git+https://github.com/wine-mirror/wine.git
source = dxvk::git+https://github.com/doitsujin/dxvk.git
source = openvr::git+https://github.com/ValveSoftware/openvr.git
source = liberation-fonts::git+https://github.com/liberationfonts/liberation-fonts.git
source = FAudio::git+https://github.com/FNA-XNA/FAudio.git
source = gstreamer::git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git
source = gst-plugins-base::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-base.git
source = gst-plugins-good::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-good.git
source = gst-orc::git+https://gitlab.freedesktop.org/gstreamer/orc.git
source = vkd3d-proton::git+https://github.com/HansKristian-Work/vkd3d-proton.git
source = OpenXR-SDK::git+https://github.com/KhronosGroup/OpenXR-SDK.git
source = dxvk-nvapi::git+https://github.com/jp7677/dxvk-nvapi.git
source = vkd3d-valve::git+https://github.com/ValveSoftware/vkd3d.git
source = Vulkan-Headers::git+https://github.com/KhronosGroup/Vulkan-Headers.git
source = SPIRV-Headers::git+https://github.com/KhronosGroup/SPIRV-Headers.git
source = Vulkan-Loader::git+https://github.com/KhronosGroup/Vulkan-Loader.git
source = gst-libav::git+https://gitlab.freedesktop.org/gstreamer/gst-libav.git
source = dxil-spirv::git+https://github.com/HansKristian-Work/dxil-spirv.git
source = wine-staging::git+https://github.com/wine-staging/wine-staging.git
source = ffmpeg-meson::git+https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git
source = lsteamclient-gloriouseggroll::git+https://github.com/gloriouseggroll/lsteamclient.git
source = vrclient_x64-gloriouseggroll::git+https://github.com/gloriouseggroll/vrclient_x64.git
source = protonfixes-gloriouseggroll::git+https://github.com/gloriouseggroll/protonfixes.git
source = gst-plugins-bad::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad.git
source = gst-plugins-ugly::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly.git
source = https://dl.winehq.org/wine/wine-gecko/2.47.2/wine-gecko-2.47.2-x86.tar.xz
source = https://dl.winehq.org/wine/wine-gecko/2.47.2/wine-gecko-2.47.2-x86_64.tar.xz
source = https://github.com/madewokherd/wine-mono/releases/download/wine-mono-7.1.2/wine-mono-7.1.2-x86.tar.xz
source = https://raw.githubusercontent.com/Frogging-Family/wine-tkg-git/cbf83264a16183d6b4d574e746522969fb02d126/wine-tkg-git/wine-tkg-patches/proton/fsync_futex_waitv.patch
source = wine-more_8x5_res.patch
source = proton-sanitize_makefile.patch
source = proton-disable_lock.patch
source = proton-user_compat_data.patch
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = 8fab46ea2110b2b0beed414e3ebb4e038a3da04900e7a28492ca3c3ccf9fea94
sha256sums = b4476706a4c3f23461da98bed34f355ff623c5d2bb2da1e2fa0c6a310bc33014
sha256sums = 59f146dde0f0540ca4648fc648e6b16335c71921deaf111b5fe8c3967881661d
sha256sums = b121625686227bb9e51b44e1e2e762250d34b1d3f8d7750787470b1885f3a1c4
sha256sums = 9005d8169266ba0b93be30e1475fe9a3697464796f553886c155ec1d77d71215
sha256sums = cedd69b258c3e446307d3e4b22fe63d7fb9ad3736711ec998933dcc393b43ce7
sha256sums = 27b75be282c5f235171569aebce80020b330d6117becdb3b1670d3124eb52489
sha256sums = 242566c092f83a71ba06c3aefe0400af65a6fa564dd63196af54403c2c4d09e2
pkgname = proton-ge-custom

396
proton-ge-custom/PKGBUILD Normal file
View file

@ -0,0 +1,396 @@
# Maintainer: ndowens <ndowens@artixlinux.org>
# Contributor: loathingkernel <loathingkernel _a_ gmail _d_ com>
pkgname=proton-ge-custom
_srctag=7.2-GE-2
pkgver=${_srctag//-/.}
_geckover=2.47.2
_monover=7.1.2
pkgrel=1
pkgdesc="Compatibility tool for Steam Play based on Wine and additional components, GloriousEggroll's custom build"
url="https://github.com/GloriousEggroll/proton-ge-custom"
arch=(x86_64 x86_64_v3)
options=(!staticlibs !lto emptydirs)
license=('custom')
depends=(
attr lib32-attr
fontconfig lib32-fontconfig
lcms2 lib32-lcms2
libxml2 lib32-libxml2
libxcursor lib32-libxcursor
libxrandr lib32-libxrandr
libxdamage lib32-libxdamage
libxi lib32-libxi
gettext lib32-gettext
freetype2 lib32-freetype2
glu lib32-glu
libsm lib32-libsm
gcc-libs lib32-gcc-libs
libpcap lib32-libpcap
lzo lib32-lzo
libxkbcommon lib32-libxkbcommon
'sdl2>=2.0.16' 'lib32-sdl2>=2.0.16'
desktop-file-utils
python
steam-native-runtime
cabextract
)
makedepends=(autoconf bison perl fontforge flex mingw-w64-gcc
git wget rsync mingw-w64-tools lld nasm meson cmake python-virtualenv python-pip
glslang vulkan-headers
giflib lib32-giflib
libpng lib32-libpng
gnutls lib32-gnutls
libxinerama lib32-libxinerama
libxcomposite lib32-libxcomposite
libxmu lib32-libxmu
libxxf86vm lib32-libxxf86vm
libldap lib32-libldap
mpg123 lib32-mpg123
openal lib32-openal
v4l-utils lib32-v4l-utils
alsa-lib lib32-alsa-lib
libxcomposite lib32-libxcomposite
mesa lib32-mesa
mesa-libgl lib32-mesa-libgl
opencl-icd-loader lib32-opencl-icd-loader
libxslt lib32-libxslt
libpulse lib32-libpulse
libva lib32-libva
gtk3 lib32-gtk3
gst-plugins-base-libs lib32-gst-plugins-base-libs
vulkan-icd-loader lib32-vulkan-icd-loader
'sdl2>=2.0.16' 'lib32-sdl2>=2.0.16'
libgphoto2
gsm
opencl-headers
)
optdepends=(
giflib lib32-giflib
libpng lib32-libpng
libldap lib32-libldap
gnutls lib32-gnutls
mpg123 lib32-mpg123
openal lib32-openal
v4l-utils lib32-v4l-utils
libpulse lib32-libpulse
alsa-plugins lib32-alsa-plugins
alsa-lib lib32-alsa-lib
libjpeg-turbo lib32-libjpeg-turbo
libxcomposite lib32-libxcomposite
libxinerama lib32-libxinerama
opencl-icd-loader lib32-opencl-icd-loader
libxslt lib32-libxslt
libva lib32-libva
gtk3 lib32-gtk3
gst-plugins-base-libs lib32-gst-plugins-base-libs
vulkan-icd-loader lib32-vulkan-icd-loader
libgphoto2
gsm
dosbox
)
makedepends=(${makedepends[@]} ${depends[@]})
provides=('proton')
source=(
proton-ge-custom::git+https://github.com/gloriouseggroll/proton-ge-custom.git#tag=${_srctag}
wine::git+https://github.com/wine-mirror/wine.git
dxvk::git+https://github.com/doitsujin/dxvk.git
openvr::git+https://github.com/ValveSoftware/openvr.git
liberation-fonts::git+https://github.com/liberationfonts/liberation-fonts.git
FAudio::git+https://github.com/FNA-XNA/FAudio.git
gstreamer::git+https://gitlab.freedesktop.org/gstreamer/gstreamer.git
gst-plugins-base::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-base.git
gst-plugins-good::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-good.git
gst-orc::git+https://gitlab.freedesktop.org/gstreamer/orc.git
vkd3d-proton::git+https://github.com/HansKristian-Work/vkd3d-proton.git
OpenXR-SDK::git+https://github.com/KhronosGroup/OpenXR-SDK.git
dxvk-nvapi::git+https://github.com/jp7677/dxvk-nvapi.git
vkd3d-valve::git+https://github.com/ValveSoftware/vkd3d.git
Vulkan-Headers::git+https://github.com/KhronosGroup/Vulkan-Headers.git
SPIRV-Headers::git+https://github.com/KhronosGroup/SPIRV-Headers.git
Vulkan-Loader::git+https://github.com/KhronosGroup/Vulkan-Loader.git
gst-libav::git+https://gitlab.freedesktop.org/gstreamer/gst-libav.git
dxil-spirv::git+https://github.com/HansKristian-Work/dxil-spirv.git
wine-staging::git+https://github.com/wine-staging/wine-staging.git
ffmpeg-meson::git+https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git
lsteamclient-gloriouseggroll::git+https://github.com/gloriouseggroll/lsteamclient.git
vrclient_x64-gloriouseggroll::git+https://github.com/gloriouseggroll/vrclient_x64.git
protonfixes-gloriouseggroll::git+https://github.com/gloriouseggroll/protonfixes.git
gst-plugins-bad::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad.git
gst-plugins-ugly::git+https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly.git
https://dl.winehq.org/wine/wine-gecko/${_geckover}/wine-gecko-${_geckover}-x86{,_64}.tar.xz
https://github.com/madewokherd/wine-mono/releases/download/wine-mono-${_monover}/wine-mono-${_monover}-x86.tar.xz
https://raw.githubusercontent.com/Frogging-Family/wine-tkg-git/cbf83264a16183d6b4d574e746522969fb02d126/wine-tkg-git/wine-tkg-patches/proton/fsync_futex_waitv.patch
wine-more_8x5_res.patch
proton-sanitize_makefile.patch
proton-disable_lock.patch
proton-user_compat_data.patch
)
noextract=(
wine-gecko-${_geckover}-{x86,x86_64}.tar.xz
wine-mono-${_monover}-x86.tar.xz
)
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'8fab46ea2110b2b0beed414e3ebb4e038a3da04900e7a28492ca3c3ccf9fea94'
'b4476706a4c3f23461da98bed34f355ff623c5d2bb2da1e2fa0c6a310bc33014'
'59f146dde0f0540ca4648fc648e6b16335c71921deaf111b5fe8c3967881661d'
'b121625686227bb9e51b44e1e2e762250d34b1d3f8d7750787470b1885f3a1c4'
'9005d8169266ba0b93be30e1475fe9a3697464796f553886c155ec1d77d71215'
'cedd69b258c3e446307d3e4b22fe63d7fb9ad3736711ec998933dcc393b43ce7'
'27b75be282c5f235171569aebce80020b330d6117becdb3b1670d3124eb52489'
'242566c092f83a71ba06c3aefe0400af65a6fa564dd63196af54403c2c4d09e2')
_make_wrappers () {
# _arch prefix gcc ld as strip
local _i686=( "i686" "-m32" "-melf_i386" "--32" "elf32-i386")
local _x86_64=("x86_64" "-m64" "-melf_x86_64" "--64" "elf64-x86-64")
local _opts=(_i686 _x86_64)
declare -n _opt
for _opt in "${_opts[@]}"; do
for l in ar ranlib nm; do
ln -s /usr/bin/$l wrappers/${_opt[0]}-pc-linux-gnu-$l
done
for t in gcc g++; do
install -Dm755 /dev/stdin wrappers/${_opt[0]}-pc-linux-gnu-$t <<EOF
#!/usr/bin/bash
$(which ccache 2> /dev/null) /usr/bin/$t ${_opt[1]} "\$@"
EOF
done
install -Dm755 /dev/stdin wrappers/${_opt[0]}-pc-linux-gnu-ld <<EOF
#!/usr/bin/bash
/usr/bin/ld ${_opt[2]} "\$@"
EOF
install -Dm755 /dev/stdin wrappers/${_opt[0]}-pc-linux-gnu-as <<EOF
#!/usr/bin/bash
/usr/bin/as ${_opt[3]} "\$@"
EOF
install -Dm755 /dev/stdin wrappers/${_opt[0]}-pc-linux-gnu-strip <<EOF
#!/usr/bin/bash
/usr/bin/strip -F ${_opt[4]} "\$@"
EOF
done
}
prepare() {
# I know this is fugly and it should NOT be done
# but the afdko package from AUR breaks regularly.
# Install it from pip in a virtualenv
[ -d build_venv ] && rm -rf build_venv
virtualenv --app-data "$srcdir"/build_venv/cache --no-wheel build_venv
source build_venv/bin/activate
pip install --no-cache-dir meson==0.59.3
pip install --no-cache-dir afdko
pip install --no-cache-dir pefile
# Provide wrappers to compiler tools
rm -rf wrappers && mkdir wrappers
_make_wrappers
[ ! -d gecko ] && mkdir gecko
mv wine-gecko-${_geckover}-x86{,_64}.tar.xz gecko/
[ ! -d mono ] && mkdir mono
mv wine-mono-${_monover}-x86.tar.xz mono/
[ ! -d build ] && mkdir build
cd proton-ge-custom
_submodules=(
wine
dxvk
openvr
liberation-fonts::fonts/liberation-fonts
FAudio
gstreamer
gst-plugins-base
gst-plugins-good
gst-orc
vkd3d-proton
OpenXR-SDK
dxvk-nvapi
vkd3d-valve::vkd3d
Vulkan-Headers
SPIRV-Headers
Vulkan-Loader
gst-libav
wine-staging
ffmpeg-meson::ffmpeg
lsteamclient-gloriouseggroll::lsteamclient
vrclient_x64-gloriouseggroll::vrclient_x64
protonfixes-gloriouseggroll::protonfixes
gst-plugins-bad
gst-plugins-ugly
)
for submodule in "${_submodules[@]}"; do
git submodule init "${submodule#*::}"
git config submodule."${submodule#*::}".url "$srcdir"/"${submodule%::*}"
git submodule update "${submodule#*::}"
done
pushd vkd3d-proton
for submodule in subprojects/{dxil-spirv,Vulkan-Headers,SPIRV-Headers}; do
git submodule init "${submodule}"
git config submodule."${submodule}".url "$srcdir"/"${submodule#*/}"
git submodule update "${submodule}"
done
pushd subprojects/dxil-spirv
git submodule init third_party/spirv-headers
git config submodule.third_party/spirv-headers.url "$srcdir"/SPIRV-Headers
git submodule update third_party/spirv-headers
popd
popd
pushd dxvk-nvapi
git submodule init external/Vulkan-Headers
git config submodule.external/Vulkan-Headers.url "$srcdir"/Vulkan-Headers
git submodule update external/Vulkan-Headers
popd
cp "$srcdir"/fsync_futex_waitv.patch patches/proton/57-fsync_futex_waitv.patch
./patches/protonprep.sh
pushd wine
# From Arch Wine
sed 's|OpenCL/opencl.h|CL/opencl.h|g' -i configure*
# Fix openldap 2.5+ detection
sed 's/-lldap_r/-lldap/' -i configure
# Adds more 16:10 resolutions for use with FSR
patch -p1 -i "$srcdir"/wine-more_8x5_res.patch
popd
patch -p1 -i "$srcdir"/proton-sanitize_makefile.patch
patch -p1 -i "$srcdir"/proton-disable_lock.patch
patch -p1 -i "$srcdir"/proton-user_compat_data.patch
# Remove repos from srcdir to save space
for submodule in "${_submodules[@]}"; do
rm -rf "$srcdir"/"${submodule%::*}"
done
rm -rf "$srcdir"/dxil-spirv
rm -rf "$srcdir"/Vulkan-Headers
rm -rf "$srcdir"/SPIRV-Headers
}
build() {
source build_venv/bin/activate
export PATH="$(pwd)/wrappers:$PATH"
cd build
ROOTLESS_CONTAINER="" \
../proton-ge-custom/configure.sh \
--container-engine="" \
--proton-sdk-image="" \
--steam-runtime=native \
--no-proton-sdk \
--build-name="${pkgname}"
# Filter known bad flags before applying optimizations
# Filter fstack-protector{ ,-all,-strong} flag for MingW.
# https://github.com/Joshua-Ashton/d9vk/issues/476
export CFLAGS="${CFLAGS// -fstack-protector*([\-all|\-strong])/}"
export CXXFLAGS="${CXXFLAGS// -fstack-protector*([\-all|\-strong])/}"
# From wine-staging PKGBUILD
# Doesn't compile with these flags in MingW so remove them.
# They are also filtered in Wine PKGBUILDs so remove them
# for winelib versions too.
# Doesn't compile without remove these flags as of 4.10
export CFLAGS="${CFLAGS/ -fno-plt/}"
export CXXFLAGS="${CXXFLAGS/ -fno-plt/}"
export LDFLAGS="${LDFLAGS/,-z,now/}"
# MingW Wine builds fail with relro
export LDFLAGS="${LDFLAGS/,-z,relro/}"
# By default export FLAGS used by proton and ignore makepkg
# This overrides FLAGS from makepkg.conf, if you comment these you are on your own
# If you want the "best" possible optimizations for your system you can use
# `-march=native` and remove the `-mtune=core-avx2` option.
# `-O2` is adjusted to `-O3` since AVX is disabled
export CFLAGS="-O3 -march=native -pipe" # -mtune=haswell -pipe"
export CXXFLAGS="-O3 -march=native -pipe" # -mtune=haswell -pipe"
export RUSTFLAGS="-C opt-level=3 -C target-cpu=native"
export LDFLAGS="-Wl,-O1,--sort-common,--as-needed"
# If using -march=native and the CPU supports AVX, launching a d3d9
# game can cause an Unhandled exception. The cause seems to be the
# combination of AVX instructions and tree vectorization (implied by O3),
# all tested archictures from sandybridge to haswell are affected.
# Since Wine 5.16 AVX is supported. Testing showed 32bit applications
# crashing with AVX regardless, but 64bit applications worked just fine.
# Relevant Wine issues
# https://bugs.winehq.org/show_bug.cgi?id=45289
# https://bugs.winehq.org/show_bug.cgi?id=43516
# AVX is "hard" disabled for 32bit in any case.
# AVX2 for 64bit is disabled below.
export CFLAGS+=" -mno-avx2"
export CXXFLAGS+=" -mno-avx2"
export WINEESYNC=0
export WINEFSYNC=0
export DISPLAY=
SUBJOBS=$([[ "$MAKEFLAGS" =~ -j\ *([1-9][0-9]*) ]] && echo "${BASH_REMATCH[1]}" || echo "$(nproc)") \
make -j1 dist
}
package() {
cd build
local _compatdir="$pkgdir/usr/share/steam/compatibilitytools.d"
mkdir -p "$_compatdir"
cp -rf --no-dereference --preserve=mode,links dist "$_compatdir/${pkgname}"
mkdir -p "$pkgdir/usr/share/licenses/${pkgname}"
mv "$_compatdir/${pkgname}"/LICENSE{,.OFL} \
"$pkgdir/usr/share/licenses/${pkgname}"
cd "$_compatdir/${pkgname}/files"
i686-w64-mingw32-strip --strip-unneeded \
$(find lib/wine \( -iname fakedlls -or -iname i386-windows \) -prune -false -or -iname "*.dll" -or -iname "*.exe")
x86_64-w64-mingw32-strip --strip-unneeded \
$(find lib64/wine \( -iname fakedlls -or -iname x86_64-windows \) -prune -false -or -iname "*.dll" -or -iname "*.exe")
local _geckodir="share/wine/gecko/wine-gecko-${_geckover}"
i686-w64-mingw32-strip --strip-unneeded \
$(find "$_geckodir"-x86 -iname "*.dll" -or -iname "*.exe")
x86_64-w64-mingw32-strip --strip-unneeded \
$(find "$_geckodir"-x86_64 -iname "*.dll" -or -iname "*.exe")
local _monodir="share/wine/mono/wine-mono-${_monover}"
i686-w64-mingw32-strip --strip-unneeded \
$(find "$_monodir"/lib/mono -iname "*.dll" -or -iname "*.exe")
i686-w64-mingw32-strip --strip-unneeded \
"$_monodir"/lib/x86/*.dll \
$(find "$_monodir" -iname "*x86.dll" -or -iname "*x86.exe")
x86_64-w64-mingw32-strip --strip-unneeded \
"$_monodir"/lib/x86_64/*.dll \
$(find "$_monodir" -iname "*x86_64.dll" -or -iname "*x86_64.exe")
}

View file

@ -0,0 +1,31 @@
diff --git a/proton b/proton
index 910a2e1..9cc88f0 100755
--- a/proton
+++ b/proton
@@ -292,7 +292,6 @@ class Proton:
self.wine_bin = self.bin_dir + "wine"
self.wine64_bin = self.bin_dir + "wine64"
self.wineserver_bin = self.bin_dir + "wineserver"
- self.dist_lock = FileLock(self.path("dist.lock"), timeout=-1)
def path(self, d):
return self.base_dir + d
@@ -1463,8 +1462,6 @@ if __name__ == "__main__":
g_proton = Proton(os.path.dirname(sys.argv[0]))
- g_proton.cleanup_legacy_dist()
- g_proton.do_steampipe_fixups()
g_compatdata = CompatData(os.environ["STEAM_COMPAT_DATA_PATH"])
@@ -1477,7 +1474,8 @@ if __name__ == "__main__":
g_session.init_wine()
if g_proton.missing_default_prefix():
- g_proton.make_default_prefix()
+ log("Default prefix is missing, something is very wrong.")
+ sys.exit(1)
import protonfixes

View file

@ -0,0 +1,318 @@
diff --git a/build/makefile_base.mak b/build/makefile_base.mak
index dc52210f..dcfca71c 100755
--- a/build/makefile_base.mak
+++ b/build/makefile_base.mak
@@ -62,7 +62,6 @@ ifeq ($(ENABLE_CCACHE),1)
export CCACHE_DIR := $(if $(CCACHE_DIR),$(CCACHE_DIR),$(HOME)/.ccache)
DOCKER_OPTS := -v $(CCACHE_DIR):$(CCACHE_DIR)$(CONTAINER_MOUNT_OPTS) $(CCACHE_ENV) -e CCACHE_DIR=$(CCACHE_DIR) $(DOCKER_OPTS)
else
- export CCACHE_DISABLE := 1
DOCKER_OPTS := $(CCACHE_ENV) -e CCACHE_DISABLE=1 $(DOCKER_OPTS)
endif
@@ -120,7 +119,7 @@ container-build:
all32 $(MAKECMDGOALS32): container-build
all64 $(MAKECMDGOALS64): container-build
else
-J = $(patsubst -j%,%,$(filter -j%,$(MAKEFLAGS)))
+J = $(patsubst -j%,%,$(SUBJOBS))
endif
@@ -170,11 +169,12 @@ else
endif
CROSSLDFLAGS += -Wl,--file-alignment,4096
-OPTIMIZE_FLAGS := -O2 -march=nocona -mtune=core-avx2 -mfpmath=sse
+CFLAGS ?= -O2 -march=nocona -mtune=core-avx2
+OPTIMIZE_FLAGS := $(CFLAGS) -mfpmath=sse
SANITY_FLAGS := -fwrapv -fno-strict-aliasing
DEBUG_FLAGS := -gdwarf-2 -gstrict-dwarf
COMMON_FLAGS = $(DEBUG_FLAGS) $(OPTIMIZE_FLAGS) $(SANITY_FLAGS) -ffile-prefix-map=$(CCACHE_BASEDIR)=.
-COMMON_FLAGS32 := -mstackrealign
+COMMON_FLAGS32 := -mstackrealign -mno-avx
CARGO_BUILD_ARG := --release
##
@@ -359,8 +359,8 @@ ALL_TARGETS += dist
GOAL_TARGETS += dist
dist_prefix: wine gst_good
- find $(DST_LIBDIR32)/wine -type f -execdir chmod a-w '{}' '+'
- find $(DST_LIBDIR64)/wine -type f -execdir chmod a-w '{}' '+'
+ find $(DST_LIBDIR32)/wine -type f -execdir chmod go-w '{}' '+'
+ find $(DST_LIBDIR64)/wine -type f -execdir chmod go-w '{}' '+'
rm -rf $(abspath $(DIST_PREFIX))
python3 $(SRCDIR)/default_pfx.py $(abspath $(DIST_PREFIX)) $(abspath $(DST_DIR)) $(STEAM_RUNTIME_RUNSH)
@@ -413,6 +413,9 @@ endif # ifeq ($(CONTAINER),)
##
GST_COMMON_MESON_ARGS := \
+ -Db_lto=true \
+ -Db_pie=true \
+ -Ddoc=disabled \
-Dexamples=disabled \
-Dtests=disabled \
-Dgtk_doc=disabled \
@@ -425,6 +428,7 @@ GST_COMMON_MESON_ARGS := \
GST_ORC_MESON_ARGS := \
-Dorc-test=disabled \
+ -Dpackage-name="GStreamer Orc (Proton)" \
$(GST_COMMON_MESON_ARGS)
$(eval $(call rules-source,gst_orc,$(SRCDIR)/gst-orc))
@@ -441,6 +445,9 @@ GSTREAMER_MESON_ARGS := \
-Dbenchmarks=disabled \
-Dtools=disabled \
-Dbash-completion=disabled \
+ -Dptp-helper-permissions=capabilities \
+ -Ddbghelp=disabled \
+ -Dpackage-name="GStreamer (Proton)" \
$(GST_COMMON_MESON_ARGS)
GSTREAMER_DEPENDS = gst_orc
@@ -477,6 +484,8 @@ GST_BASE_MESON_ARGS := \
-Dx11=disabled \
-Dxshm=disabled \
-Dxvideo=disabled \
+ -Dtools=disabled \
+ -Dpackage-name="GStreamer Base Plugins (Proton)" \
$(GST_COMMON_MESON_ARGS)
GST_BASE_DEPENDS = gst_orc gstreamer
@@ -540,7 +549,8 @@ GST_GOOD_MESON_ARGS := \
-Dwavenc=disabled \
-Dximagesrc=disabled \
-Dy4m=enabled \
- -Ddoc='disabled' \
+ -Dtools=disabled \
+ -Dpackage-name="GStreamer Good Plugins (Proton)" \
$(GST_COMMON_MESON_ARGS)
GST_GOOD_DEPENDS = gst_orc gstreamer gst_base
@@ -575,6 +585,9 @@ GST_BAD_MESON_ARGS := \
-Dopencv=disabled \
-Dvoamrwbenc=disabled \
-Dx265=disabled \
+ -Dopenexr=disabled \
+ -Dtools=disabled \
+ -Dpackage-name="GStreamer Bad Plugins (Proton)" \
$(GST_COMMON_MESON_ARGS)
GST_BAD_DEPENDS = gst_orc gstreamer gst_base
@@ -590,6 +603,8 @@ $(eval $(call rules-meson,gst_bad,64))
GST_UGLY_MESON_ARGS := \
-Ddoc='disabled' \
+ -Dtools='disabled' \
+ -Dpackage-name="GStreamer Ugly Plugins (Proton)" \
$(GST_COMMON_MESON_ARGS)
GST_UGLY_DEPENDS = gst_orc gstreamer gst_base
@@ -605,6 +620,9 @@ $(eval $(call rules-meson,gst_ugly,64))
GST_LIBAV_MESON_ARGS := \
-Ddoc=disabled \
+ -Dtools=disabled \
+ --force-fallback-for=FFmpeg \
+ -Dpackage-name="GStreamer FFmpeg Plugin (Proton)" \
$(GST_COMMON_MESON_ARGS)
GST_LIBAV_DEPENDS = gst_orc gstreamer gst_base
@@ -768,8 +786,14 @@ WINE_SOURCE_ARGS = \
--exclude include/config.h.in \
WINE_CONFIGURE_ARGS = \
+ --with-x \
+ --with-gstreamer \
+ --with-faudio \
--with-mingw \
--without-xpresent \
+ --without-vkd3d \
+ --without-oss \
+ --disable-win16 \
--disable-tests
WINE_CONFIGURE_ARGS64 = --enable-win64
@@ -824,16 +848,6 @@ $(OBJ)/.vrclient-post-source:
mkdir -p $(VRCLIENT_OBJ64) && cp -a $(VRCLIENT_SRC)/vrclient_x64/vrclient_x64.spec $(VRCLIENT_OBJ64)/vrclient_x64.spec
touch $@
-##
-## xkbcommon -- needed for wayland support in wome
-##
-
-XKBCOMMON_MESON_ARGS := \
- -Denable-docs='false'
-
-$(eval $(call rules-source,xkbcommon,$(SRCDIR)/xkbcommon))
-$(eval $(call rules-meson,xkbcommon,32))
-$(eval $(call rules-meson,xkbcommon,64))
##
@@ -843,6 +857,9 @@ $(eval $(call rules-meson,xkbcommon,64))
DXVK_MESON_ARGS32 = --bindir=$(DXVK_DST32)/lib/wine/dxvk
DXVK_MESON_ARGS64 = --bindir=$(DXVK_DST64)/lib64/wine/dxvk
+DXVK_CPPFLAGS= -msse -msse2
+DXVK_LDFLAGS= -static -static-libgcc -static-libstdc++
+
$(eval $(call rules-source,dxvk,$(SRCDIR)/dxvk))
$(eval $(call rules-meson,dxvk,32,CROSS))
$(eval $(call rules-meson,dxvk,64,CROSS))
@@ -865,6 +882,9 @@ $(OBJ)/.dxvk-post-build32:
DXVK_NVAPI_MESON_ARGS32 = --bindir=$(DXVK_NVAPI_DST32)/lib/wine/nvapi
DXVK_NVAPI_MESON_ARGS64 = --bindir=$(DXVK_NVAPI_DST64)/lib64/wine/nvapi
+DXVK_NVAPI_CPPFLAGS= -msse -msse2
+DXVK_NVAPI_LDFLAGS= -static -static-libgcc -static-libstdc++
+
$(eval $(call rules-source,dxvk-nvapi,$(SRCDIR)/dxvk-nvapi))
$(eval $(call rules-meson,dxvk-nvapi,32,CROSS))
$(eval $(call rules-meson,dxvk-nvapi,64,CROSS))
@@ -928,10 +948,13 @@ VKD3D_PROTON_SOURCE_ARGS = \
--exclude vkd3d_build.h.in \
--exclude vkd3d_version.h.in \
-VKD3D_PROTON_MESON_ARGS = -Denable_standalone_d3d12=true
+VKD3D_PROTON_MESON_ARGS = -Denable_d3d12=true
VKD3D_PROTON_MESON_ARGS32 = --bindir=$(VKD3D_PROTON_DST32)/lib/wine/vkd3d-proton
VKD3D_PROTON_MESON_ARGS64 = --bindir=$(VKD3D_PROTON_DST64)/lib64/wine/vkd3d-proton
+VKD3D_PROTON_CPPFLAGS= -msse -msse2
+VKD3D_PROTON_LDFLAGS= -static -static-libgcc -static-libstdc++
+
$(eval $(call rules-source,vkd3d-proton,$(SRCDIR)/vkd3d-proton))
$(eval $(call rules-meson,vkd3d-proton,32,CROSS))
$(eval $(call rules-meson,vkd3d-proton,64,CROSS))
diff --git a/make/rules-autoconf.mk b/make/rules-autoconf.mk
index 0827caa9..4e6d19f2 100644
--- a/make/rules-autoconf.mk
+++ b/make/rules-autoconf.mk
@@ -31,9 +31,9 @@ $$(OBJ)/.$(1)-configure$(3): $$(OBJ)/.$(1)-pre-configure
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
- $$(MAKE)
+ $$(MAKE) -j$$(SUBJOBS)
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
- $$(MAKE) install
+ $$(MAKE) -j$$(SUBJOBS) install
touch $$@
endif
endef
diff --git a/make/rules-cargo.mk b/make/rules-cargo.mk
index 2dbfe75f..6afbc42c 100644
--- a/make/rules-cargo.mk
+++ b/make/rules-cargo.mk
@@ -14,7 +14,9 @@ $$(OBJ)/.$(1)-configure$(3):
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
cd $$($(2)_SRC) && env $$($(2)_ENV$(3)) \
- cargo build $$(filter -j%,$$(MAKEFLAGS)) --target "$$(CARGO_TARGET_$(3))" --target-dir $$($(2)_OBJ$(3)) $$(CARGO_BUILD_ARG)
+ cargo update --offline --verbose
+ cd $$($(2)_SRC) && env $$($(2)_ENV$(3)) \
+ cargo build -j$$(SUBJOBS) --locked --offline --verbose --target "$$(CARGO_TARGET_$(3))" --target-dir $$($(2)_OBJ$(3)) $$(CARGO_BUILD_ARG)
touch $$@
endif
endef
diff --git a/make/rules-cmake.mk b/make/rules-cmake.mk
index 0e18df97..2150cba8 100644
--- a/make/rules-cmake.mk
+++ b/make/rules-cmake.mk
@@ -28,9 +28,9 @@ $$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/CMakeLists.txt
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
- $$(MAKE)
+ $$(MAKE) -j$$(SUBJOBS)
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
- $$(MAKE) install
+ $$(MAKE) -j$$(SUBJOBS) install
touch $$@
endif
endef
diff --git a/make/rules-common.mk b/make/rules-common.mk
index bc407604..c3a7dbeb 100644
--- a/make/rules-common.mk
+++ b/make/rules-common.mk
@@ -125,8 +125,12 @@ $(2)_LIBFLAGS$(3) = $$(foreach d,$$($(2)_DEPS$(3)),-L$$($$(d)_LIBDIR$(3))) \
# native version doesn't exist.
$(2)_ENV$(3) = \
+ WINEDEBUG="-all" \
+ WINEPREFIX="$$(OBJ)/pfx-wine$(3)" \
+ WINEDLLOVERRIDES="winemenubuilder=d;mscoree=d;mshtml=d" \
CARGO_HOME=$$(OBJ)/.cargo \
CARGO_TARGET_$$(call toupper,$$(CARGO_TARGET_$(3)))_LINKER="$$(TARGET_$(4)$(3))-gcc" \
+ CARGO_TARGET_$$(call toupper,$$(CARGO_TARGET_$(3)))_RUSTFLAGS="$$(RUSTFLAGS)" \
CCACHE_BASEDIR="$$(CCACHE_BASEDIR)" \
STRIP="$$(STRIP)" \
AR="$$(TARGET_$(4)$(3))-ar" \
@@ -140,7 +144,7 @@ $(2)_ENV$(3) = \
PATH="$$(call list-join,:,$$(foreach d,$$($(2)_DEPS$(3)),$$($$(d)_BINDIR$(3))),,:):$$(SRC)/glslang/bin:$$$$PATH" \
LD_LIBRARY_PATH="$$(call list-join,:,$$(foreach d,$$($(2)_DEPS$(3)),$$($$(d)_LIBDIR$(3))),,:)$$$$LD_LIBRARY_PATH" \
PKG_CONFIG_PATH="$$(call list-join,:,$$(foreach d,$$($(2)_DEPS$(3)),$$($$(d)_LIBDIR$(3))/pkgconfig))" \
- PKG_CONFIG_LIBDIR="/usr/lib/$$(PKG_CONFIG_TARGET_$(4)$(3))/pkgconfig:/usr/share/pkgconfig" \
+ PKG_CONFIG_LIBDIR="/usr/lib$(3)/pkgconfig:/usr/share/pkgconfig" \
CFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))" \
CPPFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))" \
CXXFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3)) -std=c++17" \
@@ -164,7 +168,7 @@ $(2)_ENV$(3) += \
CROSSCPPFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CPPFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3))" \
CROSSCXXFLAGS="$$($(2)_INCFLAGS$(3)) $$($(2)_CXXFLAGS) $$(COMMON_FLAGS) $$(COMMON_FLAGS$(3)) -std=c++17" \
CROSSLDFLAGS="$$($(2)_LIBFLAGS$(3)) $$($(2)_LDFLAGS$(3)) $$($(2)_LDFLAGS) $$(CROSSLDFLAGS)" \
- CROSSPKG_CONFIG_LIBDIR="/usr/lib/$$(PKG_CONFIG_TARGET_CROSS$(3))/pkgconfig:/usr/share/pkgconfig" \
+ CROSSPKG_CONFIG_LIBDIR="/usr/lib$(3)/pkgconfig:/usr/share/pkgconfig" \
endif
@@ -177,14 +181,14 @@ else
install-strip = objcopy --file-alignment=4096 --strip-debug $(1) $(2)/$(notdir $(1)) && rm -f $(2)/$(notdir $(1)).debug
endif
-TARGET_32 := i686-linux-gnu
-TARGET_64 := x86_64-linux-gnu
+TARGET_32 := i686-pc-linux-gnu
+TARGET_64 := x86_64-pc-linux-gnu
TARGET_CROSS32 := i686-w64-mingw32
TARGET_CROSS64 := x86_64-w64-mingw32
-PKG_CONFIG_TARGET_32 := i386-linux-gnu
-PKG_CONFIG_TARGET_64 := x86_64-linux-gnu
-PKG_CONFIG_TARGET_CROSS32 := i386-w64-mingw32
+PKG_CONFIG_TARGET_32 := i686-pc-linux-gnu
+PKG_CONFIG_TARGET_64 := x86_64-pc-linux-gnu
+PKG_CONFIG_TARGET_CROSS32 := i686-w64-mingw32
PKG_CONFIG_TARGET_CROSS64 := x86_64-w64-mingw32
$(OBJ)/.%-post-build32:
diff --git a/make/rules-meson.mk b/make/rules-meson.mk
index d603bfde..f798edfc 100644
--- a/make/rules-meson.mk
+++ b/make/rules-meson.mk
@@ -60,7 +60,7 @@ $$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/meson.build
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
env $$($(2)_ENV$(3)) \
- ninja $$(filter -j%,$$(MAKEFLAGS)) -C "$$($(2)_OBJ$(3))" install $(-v?)
+ ninja -j$$(SUBJOBS) -C "$$($(2)_OBJ$(3))" install $(-v?)
touch $$@
endif
endef
diff --git a/make/rules-winemaker.mk b/make/rules-winemaker.mk
index 25c4dd33..fb6ebc4d 100644
--- a/make/rules-winemaker.mk
+++ b/make/rules-winemaker.mk
@@ -29,7 +29,7 @@ $$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
rsync -arx "$$($(2)_SRC)/" "$$($(2)_OBJ$(3))/"
env $$($(2)_ENV$(3)) \
- $$(MAKE) -C "$$($(2)_OBJ$(3))" LIBRARIES="$$($(2)_LDFLAGS)"
+ $$(MAKE) -j$$(SUBJOBS) -C "$$($(2)_OBJ$(3))" LIBRARIES="$$($(2)_LDFLAGS)"
cd "$$($(2)_OBJ$(3))" && touch "$(basename $(4)).spec" && env $$($(2)_ENV$(3)) \
winebuild --dll --fake-module -E "$(basename $(4)).spec" -o "$(4).fake"
ifeq ($(3),32)

View file

@ -0,0 +1,20 @@
diff --git a/proton b/proton
index aed378c..c04fa15 100755
--- a/proton
+++ b/proton
@@ -1461,6 +1461,15 @@ if __name__ == "__main__":
log("No compat data path?")
sys.exit(1)
+ if "PROTON_USER_COMPAT_DATA" in os.environ:
+ if nonzero(os.environ["PROTON_USER_COMPAT_DATA"]):
+ compatpath = os.environ["STEAM_COMPAT_DATA_PATH"].split('/')
+ os.environ["STEAM_COMPAT_DATA_PATH"] = "{}/{}/{}/{}".format(
+ os.environ["STEAM_COMPAT_CLIENT_INSTALL_PATH"],
+ compatpath[-3], compatpath[-2], compatpath[-1])
+ if not os.path.exists(os.environ["STEAM_COMPAT_DATA_PATH"]):
+ os.makedirs(os.environ["STEAM_COMPAT_DATA_PATH"])
+
g_proton = Proton(os.path.dirname(sys.argv[0]))
g_proton.cleanup_legacy_dist()

View file

@ -0,0 +1,15 @@
diff --git a/dlls/winex11.drv/fs.c b/dlls/winex11.drv/fs.c
index c37899605e7..6470d2ffbb9 100644
--- a/dlls/winex11.drv/fs.c
+++ b/dlls/winex11.drv/fs.c
@@ -78,6 +78,10 @@ static struct fs_monitor_size fs_monitor_sizes[] =
{2880, 1620}, /* 16:9 */
{2954, 1662}, /* 16:9 - 'FSR 2160p Ultra Quality' */
{3200, 1800}, /* 16:9 */
+ {640, 400}, /* 8:5 */
+ {840, 525}, /* 8:5 */
+ {960, 600}, /* 8:5 */
+ {1280, 800}, /* 8:5 */
{1440, 900}, /* 8:5 */
{1680, 1050}, /* 8:5 */
{1920, 1200}, /* 8:5 */