diff options
author | Stelios Tsampas | 2022-06-30 12:12:44 +0300 |
---|---|---|
committer | Stelios Tsampas | 2022-06-30 13:06:12 +0300 |
commit | ffdee6919df5e872f4078fde289b854254b5e8ab (patch) | |
tree | 6da8684f9997652deca9134547587662e4878460 | |
parent | 15fd7b9795d668fa63bfda0503c43d21ff20e3d5 (diff) | |
download | aur-ffdee6919df5e872f4078fde289b854254b5e8ab.tar.gz |
Version GE-Proton7-24
Also add a disabled by default patch that removes WINE_FULLSCREEN_FSR_MODE option
and instead autogenerates FSR resolutions based on display resolution
-rw-r--r-- | .SRCINFO | 28 | ||||
-rw-r--r-- | 0001-AUR-pkgbuild-changes.patch | 151 | ||||
-rw-r--r-- | 0001-Add-PROTON_USER_COMPAT_DATA-environment-variable.patch (renamed from proton-user_compat_data.patch) | 17 | ||||
-rw-r--r-- | PKGBUILD | 34 | ||||
-rw-r--r-- | wine-autogen_fsr_res.patch | 411 | ||||
-rw-r--r-- | wine-more_8x5_res.patch | 15 |
6 files changed, 541 insertions, 115 deletions
@@ -1,6 +1,6 @@ pkgbase = proton-ge-custom pkgdesc = Compatibility tool for Steam Play based on Wine and additional components, GloriousEggroll's custom build - pkgver = GE.Proton7.20 + pkgver = GE.Proton7.24 pkgrel = 1 epoch = 2 url = https://github.com/GloriousEggroll/proton-ge-custom @@ -21,8 +21,8 @@ pkgbase = proton-ge-custom makedepends = nasm makedepends = meson makedepends = cmake - makedepends = python-virtualenv - makedepends = python-pip + makedepends = afdko + makedepends = python-pefile makedepends = glslang makedepends = vulkan-headers makedepends = clang @@ -115,6 +115,8 @@ pkgbase = proton-ge-custom makedepends = lib32-libvpx makedepends = sdl2>=2.0.16 makedepends = lib32-sdl2>=2.0.16 + makedepends = libsoup3 + makedepends = lib32-libsoup3 makedepends = desktop-file-utils makedepends = python makedepends = steam-native-runtime @@ -157,6 +159,8 @@ pkgbase = proton-ge-custom depends = lib32-libvpx depends = sdl2>=2.0.16 depends = lib32-sdl2>=2.0.16 + depends = libsoup3 + depends = lib32-libsoup3 depends = desktop-file-utils depends = python depends = steam-native-runtime @@ -205,11 +209,11 @@ pkgbase = proton-ge-custom 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.2.0-x86.tar.xz + noextract = wine-mono-7.3.0-x86.tar.xz options = !staticlibs options = !lto options = emptydirs - source = proton-ge-custom::git+https://github.com/gloriouseggroll/proton-ge-custom.git#tag=GE-Proton7-20 + source = proton-ge-custom::git+https://github.com/gloriouseggroll/proton-ge-custom.git#tag=GE-Proton7-24 source = wine-valve::git+https://github.com/ValveSoftware/wine.git source = dxvk::git+https://github.com/doitsujin/dxvk.git source = openvr::git+https://github.com/ValveSoftware/openvr.git @@ -236,10 +240,10 @@ pkgbase = proton-ge-custom 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.2.0/wine-mono-7.2.0-x86.tar.xz - source = wine-more_8x5_res.patch + source = https://github.com/madewokherd/wine-mono/releases/download/wine-mono-7.3.0/wine-mono-7.3.0-x86.tar.xz + source = wine-autogen_fsr_res.patch source = 0001-AUR-pkgbuild-changes.patch - source = proton-user_compat_data.patch + source = 0001-Add-PROTON_USER_COMPAT_DATA-environment-variable.patch sha256sums = SKIP sha256sums = SKIP sha256sums = SKIP @@ -267,9 +271,9 @@ pkgbase = proton-ge-custom sha256sums = SKIP sha256sums = 8fab46ea2110b2b0beed414e3ebb4e038a3da04900e7a28492ca3c3ccf9fea94 sha256sums = b4476706a4c3f23461da98bed34f355ff623c5d2bb2da1e2fa0c6a310bc33014 - sha256sums = 25a4d08fee9197be83307e65553da450b6d4446cc9188d0a85212cc2cee2660d - sha256sums = 9005d8169266ba0b93be30e1475fe9a3697464796f553886c155ec1d77d71215 - sha256sums = 011396ea6cb09cbf2b0cc28520a4d2d43b9ac77b1c9d7190ecc7839b3670f74e - sha256sums = 242566c092f83a71ba06c3aefe0400af65a6fa564dd63196af54403c2c4d09e2 + sha256sums = 60314f255031b2f4dc49f22eacfcd2b3b8b2b491120d703b4b62cc1fef0f9bdd + sha256sums = SKIP + sha256sums = fb7d1990822a3fffb7caed3d2eee0a92d2053f5f737f8ea2ad8ed21ae7458400 + sha256sums = a23a31c2879699129c86ab9a768e7ba657496d22e27d7609709802c2821e9822 pkgname = proton-ge-custom diff --git a/0001-AUR-pkgbuild-changes.patch b/0001-AUR-pkgbuild-changes.patch index 354ccc4e504b..deacc3f6268e 100644 --- a/0001-AUR-pkgbuild-changes.patch +++ b/0001-AUR-pkgbuild-changes.patch @@ -1,23 +1,23 @@ -From cd339694d6d0322e9dee81898b71634da185e59e Mon Sep 17 00:00:00 2001 +From 9749a3aa2dc9ad381345dc6cc75181232c608491 Mon Sep 17 00:00:00 2001 From: Stelios Tsampas <loathingkernel@gmail.com> -Date: Mon, 18 Oct 2021 22:21:12 +0300 -Subject: [PATCH 1/2] AUR pkgbuild changes +Date: Mon, 27 Jun 2022 01:26:56 +0300 +Subject: [PATCH] AUR pkgbuild changes --- - Makefile.in | 56 +++++++++++++++++++++++++++++++---------- + Makefile.in | 69 ++++++++++++++++++++++++++++++++++------- configure.sh | 2 ++ make/rules-autoconf.mk | 4 +-- make/rules-cargo.mk | 4 ++- make/rules-cmake.mk | 4 +-- - make/rules-common.mk | 18 +++++++------ + make/rules-common.mk | 18 ++++++----- make/rules-configure.mk | 4 +-- make/rules-meson.mk | 2 +- make/rules-winemaker.mk | 2 +- - proton | 6 ++--- - 10 files changed, 69 insertions(+), 33 deletions(-) + proton | 6 ++-- + 10 files changed, 84 insertions(+), 31 deletions(-) diff --git a/Makefile.in b/Makefile.in -index b5385130..0addf39b 100644 +index 14ccc673..f3b2138e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -63,7 +63,6 @@ ifeq ($(ENABLE_CCACHE),1) @@ -63,49 +63,56 @@ index b5385130..0addf39b 100644 rm -rf $(abspath $(DIST_PREFIX)) python3 $(SRCDIR)/default_pfx.py $(abspath $(DIST_PREFIX)) $(abspath $(DST_DIR)) $(STEAM_RUNTIME_RUNSH) -@@ -441,11 +441,15 @@ $(eval $(call rules-meson,dav1d,64)) - ## +@@ -442,6 +442,8 @@ $(eval $(call rules-meson,dav1d,64)) + - GST_COMMON_MESON_ARGS := \ + GST_ORC_MESON_ARGS := \ + -Db_lto=true \ + -Db_pie=true \ -+ -Ddoc=disabled \ + -Dorc-test=disabled \ -Dexamples=disabled \ -Dtests=disabled \ - -Dgtk_doc=disabled \ - -Dintrospection=disabled \ - -Dgobject-cast-checks=disabled \ -+ -Dorc=enabled \ - -Dglib-asserts=disabled \ - -Dglib-checks=disabled \ - -Dnls=disabled \ -@@ -469,6 +473,8 @@ GSTREAMER_MESON_ARGS := \ +@@ -458,10 +460,16 @@ $(eval $(call rules-meson,gst_orc,64)) + ## + + GSTREAMER_MESON_ARGS := \ ++ -Db_lto=true \ ++ -Db_pie=true \ ++ -Ddoc=disabled \ ++ -Dtools=disabled \ + -Dgst_parse=false \ -Dbenchmarks=disabled \ -Dtools=disabled \ -Dbash-completion=disabled \ + -Dptp-helper-permissions=capabilities \ + -Ddbghelp=disabled \ - $(GST_COMMON_MESON_ARGS) + -Dexamples=disabled \ + -Dtests=disabled \ + -Dgtk_doc=disabled \ +@@ -484,6 +492,11 @@ $(eval $(call rules-meson,gstreamer,64)) + ## - GSTREAMER_DEPENDS = gst_orc -@@ -505,6 +511,7 @@ GST_BASE_MESON_ARGS := \ - -Dx11=disabled \ - -Dxshm=disabled \ - -Dxvideo=disabled \ -+ -Dtools=disabled \ - $(GST_COMMON_MESON_ARGS) - - GST_BASE_DEPENDS = gst_orc gstreamer -@@ -569,7 +576,7 @@ GST_GOOD_MESON_ARGS := \ - -Dwavenc=disabled \ - -Dximagesrc=disabled \ - -Dy4m=enabled \ -- -Ddoc='disabled' \ + GST_BASE_MESON_ARGS := \ ++ -Db_lto=true \ ++ -Db_pie=true \ ++ -Ddoc=disabled \ ++ -Dorc=enabled \ + -Dtools=disabled \ - $(GST_COMMON_MESON_ARGS) + -Dalsa=disabled \ + -Daudiomixer=disabled \ + -Daudiorate=disabled \ +@@ -525,6 +538,10 @@ $(eval $(call rules-meson,gst_base,64)) + ## - GST_GOOD_DEPENDS = gst_orc gstreamer gst_base -@@ -584,6 +591,8 @@ $(eval $(call rules-meson,gst_good,64)) + GST_GOOD_MESON_ARGS := \ ++ -Db_lto=true \ ++ -Db_pie=true \ ++ -Ddoc=disabled \ ++ -Dorc=enabled \ + -Daalib=disabled \ + -Dalpha=disabled \ + -Dapetag=disabled \ +@@ -597,6 +614,8 @@ $(eval $(call rules-meson,gst_good,64)) FFMPEG_CONFIGURE_ARGS := \ --enable-shared \ @@ -114,9 +121,9 @@ index b5385130..0addf39b 100644 --disable-static \ --disable-everything \ --disable-programs \ -@@ -599,6 +608,9 @@ FFMPEG_CONFIGURE_ARGS := \ - --enable-decoder=h264 \ - --enable-decoder=aac +@@ -620,6 +639,9 @@ FFMPEG_CONFIGURE_ARGS := \ + --enable-decoder=aac \ + --enable-demuxer=xwma +FFMPEG_CONFIGURE_ARGS64 = --optflags="$(COMMON_FLAGS) $(COMMON_FLAGS64)" +FFMPEG_CONFIGURE_ARGS32 = --optflags="$(COMMON_FLAGS) $(COMMON_FLAGS32)" --disable-inline-asm @@ -124,24 +131,39 @@ index b5385130..0addf39b 100644 $(eval $(call rules-source,ffmpeg,$(SRCDIR)/FFmpeg)) $(eval $(call rules-configure,ffmpeg,32)) $(eval $(call rules-configure,ffmpeg,64)) -@@ -664,6 +676,8 @@ GST_BAD_MESON_ARGS := \ +@@ -664,6 +686,10 @@ $(OBJ)/.gst_plugins_rs-post-build32: + ## + + GST_BAD_MESON_ARGS := \ ++ -Db_lto=true \ ++ -Db_pie=true \ ++ -Ddoc=disabled \ ++ -Dorc=enabled \ + -Dfbdev=disabled \ + -Ddecklink=disabled \ + -Dcurl=disabled \ +@@ -683,7 +709,9 @@ GST_BAD_MESON_ARGS := \ -Dvoamrwbenc=disabled \ -Dnvcodec=disabled \ -Dx265=disabled \ + -Dopenexr=disabled \ -+ -Dtools=disabled \ - $(GST_COMMON_MESON_ARGS) - - GST_BAD_DEPENDS = gst_orc gstreamer gst_base -@@ -678,6 +692,7 @@ $(eval $(call rules-meson,gst_bad,64)) + -Dtests=disabled \ ++ -Dintrospection=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ +@@ -700,7 +728,10 @@ $(eval $(call rules-meson,gst_bad,64)) + ## GST_UGLY_MESON_ARGS := \ ++ -Db_lto=true \ ++ -Db_pie=true \ -Ddoc='disabled' \ -+ -Dtools='disabled' \ - $(GST_COMMON_MESON_ARGS) - - GST_UGLY_DEPENDS = gst_orc gstreamer gst_base -@@ -809,7 +824,13 @@ WINE_SOURCE_ARGS = \ ++ -Dorc=enabled \ + -Dtests=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ +@@ -836,7 +867,13 @@ WINE_SOURCE_ARGS = \ --exclude include/config.h.in \ WINE_CONFIGURE_ARGS = \ @@ -155,7 +177,7 @@ index b5385130..0addf39b 100644 --disable-tests WINE_CONFIGURE_ARGS64 = --enable-win64 -@@ -872,6 +893,9 @@ $(OBJ)/.vrclient-post-source: +@@ -899,6 +936,9 @@ $(OBJ)/.vrclient-post-source: DXVK_MESON_ARGS32 = --bindir=$(DXVK_DST32)/lib/wine/dxvk DXVK_MESON_ARGS64 = --bindir=$(DXVK_DST64)/lib64/wine/dxvk @@ -165,7 +187,7 @@ index b5385130..0addf39b 100644 $(eval $(call rules-source,dxvk,$(SRCDIR)/dxvk)) $(eval $(call rules-meson,dxvk,32,CROSS)) $(eval $(call rules-meson,dxvk,64,CROSS)) -@@ -894,6 +918,9 @@ $(OBJ)/.dxvk-post-build32: +@@ -921,6 +961,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 @@ -175,11 +197,10 @@ index b5385130..0addf39b 100644 $(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)) -@@ -957,10 +984,13 @@ VKD3D_PROTON_SOURCE_ARGS = \ +@@ -984,9 +1027,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 @@ -190,7 +211,7 @@ index b5385130..0addf39b 100644 $(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)) -@@ -1198,14 +1228,14 @@ $(FONTS_OBJ)/source-han/%.ttf: $$(%.ttf_CIDFONT) $$(%.ttf_FEATURES) $$(%.ttf_SEQ +@@ -1224,14 +1271,14 @@ $(FONTS_OBJ)/source-han/%.ttf: $$(%.ttf_CIDFONT) $$(%.ttf_FEATURES) $$(%.ttf_SEQ mkdir -p $(FONTS_OBJ)/source-han # Do not immediately create the target file, so that make is interrupted # it will restart again @@ -208,7 +229,7 @@ index b5385130..0addf39b 100644 mv $@.tmp $@ $(FONTS_OBJ)/ume-gothic/%.ttf: $$(%.ttf_FONT) $$(%.ttf_NAMETABLE_PATCH) -@@ -1215,10 +1245,10 @@ $(FONTS_OBJ)/ume-gothic/%.ttf: $$(%.ttf_FONT) $$(%.ttf_NAMETABLE_PATCH) +@@ -1241,10 +1288,10 @@ $(FONTS_OBJ)/ume-gothic/%.ttf: $$(%.ttf_FONT) $$(%.ttf_NAMETABLE_PATCH) ttx -o $@ -m $($(notdir $@)_FONT) $(FONTS_OBJ)/ume-gothic/$(notdir $(basename $($(notdir $@)_NAMETABLE_PATCH))).ttx $(simsun.ttc): $(simsun.ttf) $(nsimsun.ttf) @@ -222,7 +243,7 @@ index b5385130..0addf39b 100644 $(micross.ttf): $(noto_sans.ttf) $(noto_sans_arabic.ttf) $(noto_sans_armenian.ttf) $(noto_sans_bengali.ttf) $(noto_sans_coptic.ttf) \ $(noto_sans_georgian.ttf) $(noto_sans_gujarati.ttf) $(noto_sans_hebrew.ttf) $(noto_sans_khmer.ttf) $(noto_sans_tamil.ttf) \ diff --git a/configure.sh b/configure.sh -index fba2df9b..06460b0b 100755 +index 68168bff..09cd2b7f 100755 --- a/configure.sh +++ b/configure.sh @@ -126,6 +126,7 @@ function configure() { @@ -386,10 +407,10 @@ index 69688a03..1c0d1d3b 100644 winebuild --$(lastword $(subst ., ,$(4))) --fake-module -E "$(basename $(4)).spec" -o "$(4).fake" mkdir -p $$($(2)_LIBDIR$(3))/$(LIBDIR_WINE_$(3)) diff --git a/proton b/proton -index fd9c27eb..371fd931 100755 +index 1eef11a3..0fb1d73d 100755 --- a/proton +++ b/proton -@@ -356,7 +356,6 @@ class Proton: +@@ -417,7 +417,6 @@ class Proton: self.wine_bin = self.bin_dir + "wine" self.wine64_bin = self.bin_dir + "wine64" self.wineserver_bin = self.bin_dir + "wineserver" @@ -397,7 +418,7 @@ index fd9c27eb..371fd931 100755 def path(self, d): return self.base_dir + d -@@ -1591,8 +1590,6 @@ if __name__ == "__main__": +@@ -1670,8 +1669,6 @@ if __name__ == "__main__": g_proton = Proton(os.path.dirname(sys.argv[0])) @@ -406,7 +427,7 @@ index fd9c27eb..371fd931 100755 g_compatdata = CompatData(os.environ["STEAM_COMPAT_DATA_PATH"]) -@@ -1601,7 +1598,8 @@ if __name__ == "__main__": +@@ -1680,7 +1677,8 @@ if __name__ == "__main__": g_session.init_wine() if g_proton.missing_default_prefix(): @@ -414,8 +435,8 @@ index fd9c27eb..371fd931 100755 + log("Default prefix is missing, something is very wrong.") + sys.exit(1) - import protonfixes + g_session.init_session(sys.argv[1] != "runinprefix") -- -2.36.1 +2.37.0 diff --git a/proton-user_compat_data.patch b/0001-Add-PROTON_USER_COMPAT_DATA-environment-variable.patch index f557a6867b6e..0002165a5933 100644 --- a/proton-user_compat_data.patch +++ b/0001-Add-PROTON_USER_COMPAT_DATA-environment-variable.patch @@ -1,8 +1,18 @@ +From e56f57e0f9bc87dd0df668c4372495b837f07f4b Mon Sep 17 00:00:00 2001 +From: Stelios Tsampas <loathingkernel@gmail.com> +Date: Mon, 27 Jun 2022 01:20:04 +0300 +Subject: [PATCH] Add PROTON_USER_COMPAT_DATA environment variable + +If set, stores proton prefixes in the Steam Library located in the HOME directory +--- + proton | 9 +++++++++ + 1 file changed, 9 insertions(+) + diff --git a/proton b/proton -index aed378c..c04fa15 100755 +index 30e9ed7e..1bb49341 100755 --- a/proton +++ b/proton -@@ -1461,6 +1461,15 @@ if __name__ == "__main__": +@@ -1625,6 +1625,15 @@ if __name__ == "__main__": log("No compat data path?") sys.exit(1) @@ -18,3 +28,6 @@ index aed378c..c04fa15 100755 g_proton = Proton(os.path.dirname(sys.argv[0])) g_proton.cleanup_legacy_dist() +-- +2.36.1 + @@ -1,11 +1,11 @@ # Maintainer: loathingkernel <loathingkernel _a_ gmail _d_ com> pkgname=proton-ge-custom -_srctag=GE-Proton7-20 +_srctag=GE-Proton7-24 _commit= pkgver=${_srctag//-/.} _geckover=2.47.2 -_monover=7.2.0 +_monover=7.3.0 pkgrel=1 epoch=2 pkgdesc="Compatibility tool for Steam Play based on Wine and additional components, GloriousEggroll's custom build" @@ -34,6 +34,7 @@ depends=( faudio lib32-faudio libvpx lib32-libvpx 'sdl2>=2.0.16' 'lib32-sdl2>=2.0.16' + libsoup3 lib32-libsoup3 desktop-file-utils python steam-native-runtime @@ -41,7 +42,7 @@ depends=( ) makedepends=(autoconf bison perl fontforge flex mingw-w64-gcc - git wget rsync mingw-w64-tools lld nasm meson cmake python-virtualenv python-pip + git wget rsync mingw-w64-tools lld nasm meson cmake afdko python-pefile glslang vulkan-headers clang giflib lib32-giflib @@ -129,9 +130,9 @@ source=( 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 - wine-more_8x5_res.patch + wine-autogen_fsr_res.patch 0001-AUR-pkgbuild-changes.patch - proton-user_compat_data.patch + 0001-Add-PROTON_USER_COMPAT_DATA-environment-variable.patch ) noextract=( wine-gecko-${_geckover}-{x86,x86_64}.tar.xz @@ -170,15 +171,6 @@ EOF } 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 @@ -264,11 +256,12 @@ prepare() { # 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 + # Do not report bugs to GE if you enable this, this is still being tested + #patch -p1 -i "$srcdir"/wine-autogen_fsr_res.patch popd patch -p1 -i "$srcdir"/0001-AUR-pkgbuild-changes.patch - patch -p1 -i "$srcdir"/proton-user_compat_data.patch + patch -p1 -i "$srcdir"/0001-Add-PROTON_USER_COMPAT_DATA-environment-variable.patch # Remove repos from srcdir to save space for submodule in "${_submodules[@]}"; do @@ -280,7 +273,6 @@ prepare() { } build() { - source build_venv/bin/activate export PATH="$(pwd)/wrappers:$PATH" cd build @@ -402,7 +394,7 @@ sha256sums=('SKIP' 'SKIP' '8fab46ea2110b2b0beed414e3ebb4e038a3da04900e7a28492ca3c3ccf9fea94' 'b4476706a4c3f23461da98bed34f355ff623c5d2bb2da1e2fa0c6a310bc33014' - '25a4d08fee9197be83307e65553da450b6d4446cc9188d0a85212cc2cee2660d' - '9005d8169266ba0b93be30e1475fe9a3697464796f553886c155ec1d77d71215' - '011396ea6cb09cbf2b0cc28520a4d2d43b9ac77b1c9d7190ecc7839b3670f74e' - '242566c092f83a71ba06c3aefe0400af65a6fa564dd63196af54403c2c4d09e2') + '60314f255031b2f4dc49f22eacfcd2b3b8b2b491120d703b4b62cc1fef0f9bdd' + 'SKIP' + 'fb7d1990822a3fffb7caed3d2eee0a92d2053f5f737f8ea2ad8ed21ae7458400' + 'a23a31c2879699129c86ab9a768e7ba657496d22e27d7609709802c2821e9822') diff --git a/wine-autogen_fsr_res.patch b/wine-autogen_fsr_res.patch new file mode 100644 index 000000000000..8984303fdd39 --- /dev/null +++ b/wine-autogen_fsr_res.patch @@ -0,0 +1,411 @@ +From c4c25c56fd167fc6353162ff68539162757dcc20 Mon Sep 17 00:00:00 2001 +From: Stelios Tsampas <loathingkernel@gmail.com> +Date: Wed, 29 Jun 2022 14:33:07 +0300 +Subject: [PATCH] fshack - Generate FSR resolutions based on native aspect + ratio + +The base list of resolutions remains unchanged. +If FSR is enabled it adds FSR resolutions for that. +If the user specifed a custom resolution, adds that to the list too. +--- + dlls/winex11.drv/fs.c | 293 +++++++++++++----------------------------- + 1 file changed, 87 insertions(+), 206 deletions(-) + +diff --git a/dlls/winex11.drv/fs.c b/dlls/winex11.drv/fs.c +index 70e6b84ffad..b8943b946ef 100644 +--- a/dlls/winex11.drv/fs.c ++++ b/dlls/winex11.drv/fs.c +@@ -83,18 +83,18 @@ resolution list: + {2560, 720}, // 32:9 - 'FSR 32:9 Performance' + {3012, 847}, // 32:9 - 'FSR 32:9 Balanced' + {3413, 960}, // 32:9 - 'FSR 32:9 Quality' +- {3938, 1108}, // 32:9 - 'FSR 32:9 Ultra Quality' ++ {3938, 1108}, // 32:9 - 'FSR 32:9 Ultra Quality' + + 4K: +- {1920, 1080}, // 16:9 - 'FSR 2160p Performance' ++ {1920, 1080}, // 16:9 - 'FSR 2160p Performance' + {2259, 1270}, // 16:9 - 'FSR 2160p Balanced' +- {2560, 1440}, // 16:9 - 'FSR 2160p Quality' ++ {2560, 1440}, // 16:9 - 'FSR 2160p Quality' + {2954, 1662}, // 16:9 - 'FSR 2160p Ultra Quality' + + Ultra-wide: +- {1720, 720}, // 21:9 - 'FSR ultra-wide Performance' +- {2024, 847}, // 21:9 - 'FSR ultra-wide Balanced' +- {2293, 960}, // 21:9 - 'FSR ultra-wide Quality' ++ {1720, 720}, // 21:9 - 'FSR ultra-wide Performance' ++ {2024, 847}, // 21:9 - 'FSR ultra-wide Balanced' ++ {2293, 960}, // 21:9 - 'FSR ultra-wide Quality' + {2646, 1108}, // 21:9 - 'FSR ultra-wide Ultra Quality' + + 2K: +@@ -104,7 +104,7 @@ resolution list: + {1970, 1108}, // 16:9 - 'FSR 1440p Ultra Quality' + + 1080p: +- {960, 640}, // 16:9 - 'FSR 1080p Performance' ++ {960, 640}, // 16:9 - 'FSR 1080p Performance' + {1129, 635}, // 16:9 - 'FSR 1080p Balanced' + {1280, 720}, // 16:9 - 'FSR 1080p Quality' + {1477, 831}, // 16:9 - 'FSR 1080p Ultra Quality' +@@ -119,7 +119,7 @@ The formula for FSR resolutions is as follows: + */ + + /* A table of resolutions some games expect but host system may not report */ +-static struct fs_monitor_size fs_monitor_sizes[] = ++static struct fs_monitor_size fs_monitor_sizes_base[] = + { + {640, 480}, /* 4:3 */ + {800, 600}, /* 4:3 */ +@@ -141,117 +141,30 @@ static struct fs_monitor_size fs_monitor_sizes[] = + {1280, 1024}, /* 5:4 */ + }; + +-/* Ultra FSR */ +-static struct fs_monitor_size fsr1080_ultra[] = ++/* Dynamically assigned FSR resolutions */ ++static struct fs_monitor_size fs_monitor_sizes_fsr[] = + { +- {1477, 831}, /* 16:9 - 'FSR 1080p Ultra Quality' */ ++ {0, 0}, /* FSR Performance */ ++ {0, 0}, /* FSR Balanced */ ++ {0, 0}, /* FSR Quality */ ++ {0, 0}, /* FSR Ultra Quality */ + }; + +-static struct fs_monitor_size fsr2k_ultra[] = +-{ +- {1970, 1108}, /* 16:9 - 'FSR 1440p Ultra Quality' */ +-}; +- +-static struct fs_monitor_size fsruw_ultra[] = +-{ +- {2646, 1108}, /* 21:9 - 'FSR ultra-wide Ultra Quality' */ +-}; +- +-static struct fs_monitor_size fsr4k_ultra[] = +-{ +- {2954, 1662}, /* 16:9 - 'FSR 2160p Ultra Quality' */ +-}; +- +-static struct fs_monitor_size fsr329_ultra[] = +-{ +- {3938, 1108}, // 32:9 - 'FSR 32:9 Ultra Quality' +-}; +- +-/* Quality FSR */ +-static struct fs_monitor_size fsr1080_quality[] = +-{ +- {1280, 720}, /* 16:9 - 'FSR 1080p Quality' */ +-}; +- +-static struct fs_monitor_size fsr2k_quality[] = +-{ +- {1706, 960}, /* 16:9 - 'FSR 1440p Quality' */ +-}; +- +-static struct fs_monitor_size fsruw_quality[] = +-{ +- {2293, 960}, /* 21:9 - 'FSR ultra-wide Quality' */ +-}; +- +-static struct fs_monitor_size fsr4k_quality[] = +-{ +- {2560, 1440}, /* 16:9 - 'FSR 2160p Quality' */ +-}; +- +-static struct fs_monitor_size fsr329_quality[] = +-{ +- {3413, 960}, // 32:9 - 'FSR 32:9 Quality' +-}; +- +-/* Balanced FSR */ +-static struct fs_monitor_size fsr1080_balanced[] = +-{ +- {1129, 635}, /* 16:9 - 'FSR 1080p Balanced' */ +-}; +- +-static struct fs_monitor_size fsr2k_balanced[] = +-{ +- {1506, 847}, /* 16:9 - 'FSR 1440p Balanced' */ +-}; +- +-static struct fs_monitor_size fsruw_balanced[] = +-{ +- {2024, 847}, /* 21:9 - 'FSR ultra-wide Balanced' */ +-}; +- +-static struct fs_monitor_size fsr4k_balanced[] = +-{ +- {2259, 1270}, /* 16:9 - 'FSR 2160p Balanced' */ +-}; +- +-static struct fs_monitor_size fsr329_balanced[] = +-{ +- {3012, 847}, // 32:9 - 'FSR 32:9 Balanced' +-}; +- +-/* Performance FSR */ +-static struct fs_monitor_size fsr1080_performance[] = +-{ +- {960, 640}, /* 16:9 - 'FSR 1080p Performance' */ +-}; +- +-static struct fs_monitor_size fsr2k_performance[] = +-{ +- {1280, 720}, /* 16:9 - 'FSR 1440p Performance' */ +-}; +- +-static struct fs_monitor_size fsruw_performance[] = +-{ +- {1720, 720}, /* 21:9 - 'FSR ultra-wide Performance' */ +-}; +- +-static struct fs_monitor_size fsr4k_performance[] = +-{ +- {1920, 1080}, /* 16:9 - 'FSR 2160p Performance' */ +-}; +- +-static struct fs_monitor_size fsr329_performance[] = +-{ +- {2560, 720}, // 32:9 - 'FSR 32:9 Performance' ++static float fsr_ratios[] = { ++ 2.0f, 1.7f, 1.5f, 1.3f, + }; + + static struct fs_monitor_size fsr_fake_res[] = + { +- {1920, 1080}, /* Custom resolution, replaced by WINE_FULLSCREEN_FSR_CUSTOM_MODE */ ++ {0, 0}, + }; + + static struct fs_monitor_size fake_current_resolution; + ++struct fs_monitor_size *fs_monitor_sizes = NULL; ++INT fs_monitor_sizes_offset = 0; ++ ++ + /* A fake monitor for the fullscreen hack */ + struct fs_monitor + { +@@ -266,6 +179,9 @@ struct fs_monitor + UINT unique_resolutions; /* Number of unique resolutions in terms of WxH */ + }; + ++BOOL fs_hack_is_fsr(float *sharpness); ++BOOL fs_hack_is_fake_current_res(struct fs_monitor_size*); ++ + static void add_fs_mode(struct fs_monitor *fs_monitor, DWORD depth, DWORD width, DWORD height, + DWORD frequency, DWORD orientation) + { +@@ -330,13 +246,15 @@ static void add_fs_mode(struct fs_monitor *fs_monitor, DWORD depth, DWORD width, + static BOOL fs_monitor_add_modes(struct fs_monitor *fs_monitor) + { + DEVMODEW *real_modes, *real_mode, current_mode; +- const char *fsr_flag, *fsr_mode; + UINT real_mode_count; + DWORD width, height; + ULONG_PTR real_id; + ULONG offset; + UINT i, j; + ++ INT h_factor; ++ float sharpness, real_w_ratio, h_ratio; ++ + if (!real_settings_handler.get_id(fs_monitor->user_mode.dmDeviceName, &real_id)) + return FALSE; + +@@ -347,105 +265,66 @@ static BOOL fs_monitor_add_modes(struct fs_monitor *fs_monitor) + if (!real_settings_handler.get_modes(real_id, 0, &real_modes, &real_mode_count)) + return FALSE; + +- if (fsr_flag = getenv("WINE_FULLSCREEN_FSR")) +- { +- if (fs_hack_is_fake_current_res(&fake_current_resolution)) +- { +- /* Custom Resolution */ +- memcpy(fs_monitor_sizes+sizeof(fsr_fake_res),fsr_fake_res,sizeof(fsr_fake_res)); +- } +- else if (fsr_mode = getenv("WINE_FULLSCREEN_FSR_MODE")) { +- if (!strcmp(fsr_mode, "ultra")) { +- if (current_mode.dmPelsWidth >= 1129 && current_mode.dmPelsWidth <= 1920) { +- /* 1080p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr1080_ultra),fsr1080_ultra,sizeof(fsr1080_ultra)); +- } else if (current_mode.dmPelsWidth <= 2560) { +- /* 1440p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr2k_ultra),fsr2k_ultra,sizeof(fsr2k_ultra)); +- } else if (current_mode.dmPelsWidth <= 3440) { +- /* ultrawide FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsruw_ultra),fsruw_ultra,sizeof(fsruw_ultra)); +- } else if (current_mode.dmPelsWidth <= 3840) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr4k_ultra),fsr4k_ultra,sizeof(fsr4k_ultra)); +- } else if (current_mode.dmPelsWidth <= 5120) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr329_ultra),fsr329_ultra,sizeof(fsr329_ultra)); +- } +- } else if (!strcmp(fsr_mode, "quality")) { +- if (current_mode.dmPelsWidth >= 1129 && current_mode.dmPelsWidth <= 1920) { +- /* 1080p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr1080_quality),fsr1080_quality,sizeof(fsr1080_quality)); +- } else if (current_mode.dmPelsWidth <= 2560) { +- /* 1440p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr2k_quality),fsr2k_quality,sizeof(fsr2k_quality)); +- } else if (current_mode.dmPelsWidth <= 3440) { +- /* ultrawide FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsruw_quality),fsruw_quality,sizeof(fsruw_quality)); +- } else if (current_mode.dmPelsWidth <= 3840) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr4k_quality),fsr4k_quality,sizeof(fsr4k_quality)); +- } else if (current_mode.dmPelsWidth <= 5120) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr329_quality),fsr329_quality,sizeof(fsr329_quality)); +- } +- } else if (!strcmp(fsr_mode, "balanced")) { +- if (current_mode.dmPelsWidth >= 1129 && current_mode.dmPelsWidth <= 1920) { +- /* 1080p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr1080_balanced),fsr1080_balanced,sizeof(fsr1080_balanced)); +- } else if (current_mode.dmPelsWidth <= 2560) { +- /* 1440p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr2k_balanced),fsr2k_balanced,sizeof(fsr2k_balanced)); +- } else if (current_mode.dmPelsWidth <= 3440) { +- /* ultrawide FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsruw_balanced),fsruw_balanced,sizeof(fsruw_balanced)); +- } else if (current_mode.dmPelsWidth <= 3840) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr4k_balanced),fsr4k_balanced,sizeof(fsr4k_balanced)); +- } else if (current_mode.dmPelsWidth <= 5120) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr329_balanced),fsr329_balanced,sizeof(fsr329_balanced)); +- } +- } else if (!strcmp(fsr_mode, "performance")) { +- if (current_mode.dmPelsWidth >= 1129 && current_mode.dmPelsWidth <= 1920) { +- /* 1080p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr1080_performance),fsr1080_performance,sizeof(fsr1080_performance)); +- } else if (current_mode.dmPelsWidth <= 2560) { +- /* 1440p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr2k_performance),fsr2k_performance,sizeof(fsr2k_performance)); +- } else if (current_mode.dmPelsWidth <= 3440) { +- /* ultrawide FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsruw_performance),fsruw_performance,sizeof(fsruw_performance)); +- } else if (current_mode.dmPelsWidth <= 3840) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr4k_performance),fsr4k_performance,sizeof(fsr4k_performance)); +- } else if (current_mode.dmPelsWidth <= 5120) { +- /* 32:9 FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr329_performance),fsr329_performance,sizeof(fsr329_performance)); +- } +- } +- /* If no mode specified, default to balanced */ +- } +- else { +- if (current_mode.dmPelsWidth >= 1129 && current_mode.dmPelsWidth <= 1920) { +- /* 1080p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr1080_balanced),fsr1080_balanced,sizeof(fsr1080_balanced)); +- } else if (current_mode.dmPelsWidth <= 2560) { +- /* 1440p FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr2k_balanced),fsr2k_balanced,sizeof(fsr2k_balanced)); +- } else if (current_mode.dmPelsWidth <= 3440) { +- /* ultrawide FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsruw_balanced),fsruw_balanced,sizeof(fsruw_balanced)); +- } else if (current_mode.dmPelsWidth <= 3840) { +- /* 4k FSR resolutions */ +- memcpy(fs_monitor_sizes+sizeof(fsr4k_balanced),fsr4k_balanced,sizeof(fsr4k_balanced)); ++ if (fs_monitor_sizes) ++ heap_free(fs_monitor_sizes); ++ fs_monitor_sizes = NULL; ++ fs_monitor_sizes_offset = 0; ++ fs_monitor_sizes = heap_alloc(sizeof(fs_monitor_sizes_base) ++ + sizeof(fs_monitor_sizes_fsr) ++ + sizeof(fsr_fake_res)); ++ ++ /* Copy the default list */ ++ memcpy(fs_monitor_sizes+fs_monitor_sizes_offset, fs_monitor_sizes_base, sizeof(fs_monitor_sizes_base)); ++ fs_monitor_sizes_offset += ARRAY_SIZE(fs_monitor_sizes_base); ++ ++ /* If FSR is enabled, generate and add FSR resolutions */ ++ if (fs_hack_is_fsr(&sharpness)) { ++ if (current_mode.dmPelsWidth / 16.0f == current_mode.dmPelsHeight / 9.0f) { ++ /* 16:9 resolutions */ ++ h_ratio = 9.0f; ++ } else if ((INT)(current_mode.dmPelsWidth / 210.0f) == (INT)(current_mode.dmPelsHeight / 90.0f)) { ++ /* 21:9 ultra-wide FSR resolutions */ ++ h_ratio = 9.0f; ++ } else if (current_mode.dmPelsWidth / 32.0f == current_mode.dmPelsHeight / 9.0f) { ++ /* 32:9 "duper-ultra-wide" resolutions - Also adds the base resolutions from 16:9 and 21:9 */ ++ h_ratio = 9.0f; ++ } else if (current_mode.dmPelsWidth / 8.0f == current_mode.dmPelsHeight / 5.0f) { ++ /* 16:10 resolutions */ ++ h_ratio = 10.0f; ++ } else if (current_mode.dmPelsWidth / 12.0f == current_mode.dmPelsHeight / 5.0f) { ++ /* 24:10 resolutions - Also adds the base resolutions from 16:10*/ ++ h_ratio = 10.0f; ++ } else { ++ /* In case of unknown ratio, naively create FSR resolutions */ ++ h_ratio = 1.0f; ++ } ++ ++ real_w_ratio = current_mode.dmPelsWidth/(current_mode.dmPelsHeight / h_ratio); ++ for (i = 0; i < ARRAY_SIZE(fs_monitor_sizes_fsr); ++i) { ++ if (h_ratio == 1.0f) { ++ /* naive generation and hope for the best */ ++ fs_monitor_sizes_fsr[i].width = (INT)(current_mode.dmPelsWidth / fsr_ratios[i] + 0.5f); ++ fs_monitor_sizes_fsr[i].height = (INT)(current_mode.dmPelsHeight / fsr_ratios[i] + 0.5f); ++ } else { ++ h_factor = (INT)(current_mode.dmPelsHeight/h_ratio / fsr_ratios[i] + 0.5f); ++ fs_monitor_sizes_fsr[i].width = (INT)(real_w_ratio * h_factor + 0.5f); ++ fs_monitor_sizes_fsr[i].height = (INT)(h_ratio * h_factor + 0.5f); + } ++ TRACE("created fsr res: %dx%d\n", fs_monitor_sizes_fsr[i].width, fs_monitor_sizes_fsr[i].height); ++ } ++ memcpy(fs_monitor_sizes+fs_monitor_sizes_offset, fs_monitor_sizes_fsr, sizeof(fs_monitor_sizes_fsr)); ++ fs_monitor_sizes_offset += ARRAY_SIZE(fs_monitor_sizes_fsr); ++ ++ /* Add the custom resolution to the list */ ++ if (fs_hack_is_fake_current_res(&fake_current_resolution)) { ++ memcpy(fs_monitor_sizes+fs_monitor_sizes_offset, fsr_fake_res, sizeof(fsr_fake_res)); ++ fs_monitor_sizes_offset += ARRAY_SIZE(fsr_fake_res); + } + } +- ++ + fs_monitor->mode_count = 0; + fs_monitor->unique_resolutions = 0; +- fs_monitor->modes = heap_calloc(ARRAY_SIZE(fs_monitor_sizes) * DEPTH_COUNT + real_mode_count, ++ fs_monitor->modes = heap_calloc(fs_monitor_sizes_offset * DEPTH_COUNT + real_mode_count, + sizeof(*fs_monitor->modes)); + if (!fs_monitor->modes) + { +@@ -459,7 +338,7 @@ static BOOL fs_monitor_add_modes(struct fs_monitor *fs_monitor) + current_mode.u1.s2.dmDisplayOrientation); + + /* Linux reports far fewer resolutions than Windows. Add modes that some games may expect. */ +- for (i = 0; i < ARRAY_SIZE(fs_monitor_sizes); ++i) ++ for (i = 0; i < fs_monitor_sizes_offset; ++i) + { + if (current_mode.u1.s2.dmDisplayOrientation == DMDO_DEFAULT || + current_mode.u1.s2.dmDisplayOrientation == DMDO_180) +@@ -505,15 +384,17 @@ static BOOL fs_monitor_add_modes(struct fs_monitor *fs_monitor) + + BOOL fs_hack_is_fake_current_res(struct fs_monitor_size* fixed_size) + { ++ const char *e; ++ + fixed_size->width = 0; + fixed_size->height = 0; +- const char *e = getenv("WINE_FULLSCREEN_FSR_CUSTOM_MODE"); ++ e = getenv("WINE_FULLSCREEN_FSR_CUSTOM_MODE"); + if (e) + { + const int n = sscanf(e,"%dx%d",&(fixed_size->width),&(fixed_size->height)); + if (n==2) + { +- memcpy(fsr_fake_res+sizeof(fixed_size),fixed_size,sizeof(fixed_size)); ++ memcpy(fsr_fake_res, fixed_size, sizeof(*fixed_size)); + return TRUE; + } + } +-- +2.37.0 + diff --git a/wine-more_8x5_res.patch b/wine-more_8x5_res.patch deleted file mode 100644 index acc09936ffd3..000000000000 --- a/wine-more_8x5_res.patch +++ /dev/null @@ -1,15 +0,0 @@ -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 */ |