SHA256
1
0
forked from pool/dxvk

Accepting request 1085932 from home:Thaodan:branches:Emulators:Wine

- Keep setup_dxvk.sh script that was deleted by upstream.
  For more context see:
  64cb1ad208
- Update to 2.1
  * HDR support
    On systems supporting HDR10 color spaces, HDR can now be
    enabled by setting the environment variable DXVK_HDR=1,
    or by setting the option dxgi.enableHDR = True in the configuration
    file. When using vkd3d-proton 2.8 or newer, this will allow D3D12
    games to detect and use the HDR10 color space if they support it.
    No major Linux desktop environment currently supports HDR. In order
    to use this on Linux, a Gamescope session with --hdr-enabled is required.
    This is currently only supported under AMDGPU and requires kernel patches
    from the josh-hdr-colorimetry branch.
  * Shader compilation improvements
    Use of pipeline libraries was extended to pipelines with tessellation or
    geometry shaders in order to further reduce stutter. Additionally, more features
    of the VK_EXT_extended_dynamic_state3 extension are leveraged to reduce stutter
    in some situations when MSAA is used, provided that the Vulkan driver supports them.
  * Sample rate shading
    For older games that support MSAA, the d3d9.forceSampleRateShading and
    d3d11.forceSampleRateShading options were added to let users enable
    sample rate shading for all shaders. This will have a very high
    impact on GPU-bound performance, but may increase overall image quality
    in certain games that suffer from specular aliasing or shimmering alpha-tested geometry.
  * Improved D3D11 command submission logic in order to make overall performance more consistent,
    and to bring DXVK's behaviour more in line with native D3D11 drivers.
  * Fixed D3D11 reference counting issues around 2D textures. ()
  * Fixed Vulkan validation errors when creating DXGI_FORMAT_A8_UNORM UAVs.
    Note that UAVs of this format may not work as expected.
  * Fixed Vulkan validation errors that would occur when allocating dedicated image memory
    on Nvidia GPUs in some situations.
  * Fixed Vulkan validation errors caused by broken timeline semaphores on 32-bit Proton.
  * Worked around an issue with the Uplay overlay being stuck on screen. ()
  * Worked around a bug in AMD's Windows driver as well as AMDVLK that would
    cause numerous games to crash since DXVK 2.0. ()
  * Fewer threads will be used to perform background optimization of graphics pipeines.
    This may result in a smoother gameplay experience on some systems.
  * Ashes of the Singularity: Fixed performance regression caused by suboptimal descriptor set allocation.
  * Battlefield: Bad Company 2: Fixed flickering (, PR )
  * Cardfight!! Vanguard: Fixed rendering (PR ).
  * Gujian 3: Fixed rendering issues on some GPUs. ()
  * Resident Evil 4 HD: Fixed invalid Vulkan usage causing a GPU hang on RADV. (PR )
  * Saints Row: The Third: Fixed a severe performance issue with rain when using the D3D9 renderer.
    (, PR )
  * Sekiro: Shadows Die Twice: Fixed stuttering issues on Nvidia GPUs. ()
  * Sonic Frontiers: Worked around a game bug that would cause shadows to flicker when GPU-bound.
  * Supreme Commander: Forged Alliance: Fixed a crash after loading (, PR )
  * Note: Due to changes to our DXGI implementation, older versions of vkd3d-proton (prior to 2.8)
    will no longer work with this version of DXVK.

I tried to cut down the changelog as much as possible to cover only the relevant sections.

OBS-URL: https://build.opensuse.org/request/show/1085932
OBS-URL: https://build.opensuse.org/package/show/Emulators:Wine/dxvk?expand=0&rev=36
This commit is contained in:
Marcus Meissner 2023-05-15 11:37:33 +00:00 committed by Git OBS Bridge
parent 5d904368f9
commit 0a56a282bb
5 changed files with 269 additions and 5 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e1877b9418d1e570a75ad0ca048ac766c67ca4376ba5dab26536d3759b58830c
size 3687917

3
dxvk-2.1.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1f04eca4c436fc795ed28ddb368d388e18d7b0b531885129bed363558eaae6dd
size 3802130

View File

@ -1,3 +1,60 @@
-------------------------------------------------------------------
Fri May 5 22:16:37 UTC 2023 - Björn Bidar <bjorn.bidar@thaodan.de>
- Keep setup_dxvk.sh script that was deleted by upstream.
For more context see:
https://github.com/doitsujin/dxvk/commit/64cb1ad208f80b11400eef779e99fec223754098
- Update to 2.1
* HDR support
On systems supporting HDR10 color spaces, HDR can now be
enabled by setting the environment variable DXVK_HDR=1,
or by setting the option dxgi.enableHDR = True in the configuration
file. When using vkd3d-proton 2.8 or newer, this will allow D3D12
games to detect and use the HDR10 color space if they support it.
No major Linux desktop environment currently supports HDR. In order
to use this on Linux, a Gamescope session with --hdr-enabled is required.
This is currently only supported under AMDGPU and requires kernel patches
from the josh-hdr-colorimetry branch.
* Shader compilation improvements
Use of pipeline libraries was extended to pipelines with tessellation or
geometry shaders in order to further reduce stutter. Additionally, more features
of the VK_EXT_extended_dynamic_state3 extension are leveraged to reduce stutter
in some situations when MSAA is used, provided that the Vulkan driver supports them.
* Sample rate shading
For older games that support MSAA, the d3d9.forceSampleRateShading and
d3d11.forceSampleRateShading options were added to let users enable
sample rate shading for all shaders. This will have a very high
impact on GPU-bound performance, but may increase overall image quality
in certain games that suffer from specular aliasing or shimmering alpha-tested geometry.
* Improved D3D11 command submission logic in order to make overall performance more consistent,
and to bring DXVK's behaviour more in line with native D3D11 drivers.
* Fixed D3D11 reference counting issues around 2D textures. (#3169)
* Fixed Vulkan validation errors when creating DXGI_FORMAT_A8_UNORM UAVs.
Note that UAVs of this format may not work as expected.
* Fixed Vulkan validation errors that would occur when allocating dedicated image memory
on Nvidia GPUs in some situations.
* Fixed Vulkan validation errors caused by broken timeline semaphores on 32-bit Proton.
* Worked around an issue with the Uplay overlay being stuck on screen. (#3146)
* Worked around a bug in AMD's Windows driver as well as AMDVLK that would
cause numerous games to crash since DXVK 2.0. (#3172)
* Fewer threads will be used to perform background optimization of graphics pipeines.
This may result in a smoother gameplay experience on some systems.
* Ashes of the Singularity: Fixed performance regression caused by suboptimal descriptor set allocation.
* Battlefield: Bad Company 2: Fixed flickering (#3078, PR #3079)
* Cardfight!! Vanguard: Fixed rendering (PR #3068).
* Gujian 3: Fixed rendering issues on some GPUs. (#1784)
* Resident Evil 4 HD: Fixed invalid Vulkan usage causing a GPU hang on RADV. (PR #3089)
* Saints Row: The Third: Fixed a severe performance issue with rain when using the D3D9 renderer.
(#2473, PR #3158)
* Sekiro: Shadows Die Twice: Fixed stuttering issues on Nvidia GPUs. (#3179)
* Sonic Frontiers: Worked around a game bug that would cause shadows to flicker when GPU-bound.
* Supreme Commander: Forged Alliance: Fixed a crash after loading (#3058, PR #3060)
* Note: Due to changes to our DXGI implementation, older versions of vkd3d-proton (prior to 2.8)
will no longer work with this version of DXVK.
-------------------------------------------------------------------
Fri May 5 12:55:46 UTC 2023 - Björn Bidar <bjorn.bidar@thaodan.de>

View File

@ -17,7 +17,7 @@
Name: dxvk
Version: 2.0
Version: 2.1
Release: 0
Summary: Vulkan-based D3D11 implementation for Linux / Wine
License: zlib-acknowledgement
@ -25,6 +25,7 @@ Group: System/Emulators/PC
URL: https://github.com/doitsujin/dxvk
Source0: %{name}-%{version}.tar.gz
Source1: baselibs.conf
Source2: setup_dxvk.sh
BuildRequires: gcc
BuildRequires: gcc-c++
@ -82,7 +83,7 @@ mkdir -p %{buildroot}%{_bindir} %{buildroot}%{_libexecdir}/%{name}/bin
sed \
-e 's|basedir=.*|basedir="%{_libexecdir}/%{name}"|g' \
-e 's|x32|lib|g' -e 's|x64|lib64|g' \
setup_dxvk.sh > %{buildroot}%{_libexecdir}/%{name}/bin/setup_dxvk.sh
%{SOURCE2}> %{buildroot}%{_libexecdir}/%{name}/bin/setup_dxvk.sh
ln -s %{_libexecdir}/%{name}/bin/setup_dxvk.sh %{buildroot}%{_bindir}/wine%{name}
#install dxvk proper

206
setup_dxvk.sh Normal file
View File

@ -0,0 +1,206 @@
#!/bin/bash
# default directories
dxvk_lib32=${dxvk_lib32:-"x32"}
dxvk_lib64=${dxvk_lib64:-"x64"}
# figure out where we are
basedir="$(dirname "$(readlink -f "$0")")"
# figure out which action to perform
action="$1"
case "$action" in
install)
;;
uninstall)
;;
*)
echo "Unrecognized action: $action"
echo "Usage: $0 [install|uninstall] [--without-dxgi] [--symlink]"
exit 1
esac
# process arguments
shift
with_dxgi=true
file_cmd="cp -v --reflink=auto"
while (($# > 0)); do
case "$1" in
"--without-dxgi")
with_dxgi=false
;;
"--symlink")
file_cmd="ln -s -v"
;;
esac
shift
done
# check wine prefix before invoking wine, so that we
# don't accidentally create one if the user screws up
if [ -n "$WINEPREFIX" ] && ! [ -f "$WINEPREFIX/system.reg" ]; then
echo "$WINEPREFIX:"' Not a valid wine prefix.' >&2
exit 1
fi
# find wine executable
export WINEDEBUG=-all
# disable mscoree and mshtml to avoid downloading
# wine gecko and mono
export WINEDLLOVERRIDES="mscoree,mshtml="
wine="wine"
wine64="wine64"
wineboot="wineboot"
# $PATH is the way for user to control where wine is located (including custom Wine versions).
# Pure 64-bit Wine (non Wow64) requries skipping 32-bit steps.
# In such case, wine64 and winebooot will be present, but wine binary will be missing,
# however it can be present in other PATHs, so it shouldn't be used, to avoid versions mixing.
wine_path=$(dirname "$(which $wineboot)")
wow64=true
if ! [ -f "$wine_path/$wine" ]; then
wine=$wine64
wow64=false
fi
# resolve 32-bit and 64-bit system32 path
winever=$($wine --version | grep wine)
if [ -z "$winever" ]; then
echo "$wine:"' Not a wine executable. Check your $wine.' >&2
exit 1
fi
# ensure wine placeholder dlls are recreated
# if they are missing
$wineboot -u
win64_sys_path=$($wine64 winepath -u 'C:\windows\system32' 2> /dev/null)
win64_sys_path="${win64_sys_path/$'\r'/}"
if $wow64; then
win32_sys_path=$($wine winepath -u 'C:\windows\system32' 2> /dev/null)
win32_sys_path="${win32_sys_path/$'\r'/}"
fi
if [ -z "$win32_sys_path" ] && [ -z "$win64_sys_path" ]; then
echo 'Failed to resolve C:\windows\system32.' >&2
exit 1
fi
# create native dll override
overrideDll() {
$wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /d native /f >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "Failed to add override for $1"
exit 1
fi
}
# remove dll override
restoreDll() {
$wine reg delete 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v $1 /f > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Failed to remove override for $1"
fi
}
# copy or link dxvk dll, back up original file
installFile() {
dstfile="${1}/${3}.dll"
srcfile="${basedir}/${2}/${3}.dll"
if [ -f "${srcfile}.so" ]; then
srcfile="${srcfile}.so"
fi
if ! [ -f "${srcfile}" ]; then
echo "${srcfile}: File not found. Skipping." >&2
return 1
fi
if [ -n "$1" ]; then
if [ -f "${dstfile}" ] || [ -h "${dstfile}" ]; then
if ! [ -f "${dstfile}.old" ]; then
mv -v "${dstfile}" "${dstfile}.old"
else
rm -v "${dstfile}"
fi
$file_cmd "${srcfile}" "${dstfile}"
else
echo "${dstfile}: File not found in wine prefix" >&2
return 1
fi
fi
return 0
}
# remove dxvk dll, restore original file
uninstallFile() {
dstfile="${1}/${3}.dll"
srcfile="${basedir}/${2}/${3}.dll"
if [ -f "${srcfile}.so" ]; then
srcfile="${srcfile}.so"
fi
if ! [ -f "${srcfile}" ]; then
echo "${srcfile}: File not found. Skipping." >&2
return 1
fi
if ! [ -f "${dstfile}" ] && ! [ -h "${dstfile}" ]; then
echo "${dstfile}: File not found. Skipping." >&2
return 1
fi
if [ -f "${dstfile}.old" ]; then
rm -v "${dstfile}"
mv -v "${dstfile}.old" "${dstfile}"
return 0
else
return 1
fi
}
install() {
installFile "$win64_sys_path" "$dxvk_lib64" "$1"
inst64_ret="$?"
inst32_ret=-1
if $wow64; then
installFile "$win32_sys_path" "$dxvk_lib32" "$1"
inst32_ret="$?"
fi
if (( ($inst32_ret == 0) || ($inst64_ret == 0) )); then
overrideDll "$1"
fi
}
uninstall() {
uninstallFile "$win64_sys_path" "$dxvk_lib64" "$1"
uninst64_ret="$?"
uninst32_ret=-1
if $wow64; then
uninstallFile "$win32_sys_path" "$dxvk_lib32" "$1"
uninst32_ret="$?"
fi
if (( ($uninst32_ret == 0) || ($uninst64_ret == 0) )); then
restoreDll "$1"
fi
}
# skip dxgi during install if not explicitly
# enabled, but always try to uninstall it
if $with_dxgi || [ "$action" == "uninstall" ]; then
$action dxgi
fi
$action d3d9
$action d3d10core
$action d3d11