2020-09-05 17:47:16 +00:00
|
|
|
#
|
|
|
|
# spec file for package dxvk
|
|
|
|
#
|
2022-01-11 13:22:11 +00:00
|
|
|
# Copyright (c) 2022 SUSE LLC
|
2020-09-05 17:47:16 +00:00
|
|
|
#
|
|
|
|
# All modifications and additions to the file contributed by third parties
|
|
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
|
|
# upon. The license for this file, and modifications and additions to the
|
|
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
|
|
# license for the pristine package is not an Open Source License, in which
|
|
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
|
|
# published by the Open Source Initiative.
|
|
|
|
|
2020-09-06 08:08:59 +00:00
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
2020-09-05 17:47:16 +00:00
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
Name: dxvk
|
Accepting request 959619 from home:msmeissn:branches:Emulators:Wine
- updated to 1.10
## Performance improvements
- Reduced unnecessary worker thread synchronization around resource readbacks for both D3D11 and D3D9. This can significantly increase CPU-bound performance in games like **Assassin's Creed: Origins** and other titles built on the same engine, with smaller improvements seen in **Elex II**, **God of War**, **GTA IV** and others.
- When using [D3D11_MAP_WRITE](https://docs.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_map) on a staging resource that's currently being read by the GPU, DXVK will now attempt to create a copy of that resource in order to avoid GPU synchronization. This improves performance in **Quantum Break** and potentially other games. This behaviour can be tweaked using the `d3d11.maxImplicitDiscardSize` option.
- Optimized [UpdateSubresource](https://docs.microsoft.com/en-us/windows/win32/api/d3d11/nf-d3d11-id3d11devicecontext-updatesubresource) for small constant buffer updates. This further improves performance in **God of War** and potentially other games.
- Improved the way resource uploads and staging buffers are handled in D3D11. This may reduce memory usage and CPU overhead in some - Added more information to the HUD that can be useful for troubleshooting performance issues: GPU synchronizations per frame, worker thread synchronizations per frame, and pipeline barrier count.
- GPU synchronization, when necessary, no longer uses busy-waiting, which may reduce power consumption on portable devices in some games.
## Bug fixes and Improvements
- Added a `D3D11On12CreateDevice` stub so applications using this don't immediately crash (PR #2278).
**Note** that supporting D3D11on12 is currently not viable.
- Version numbers for Intel's Windows driver should now be reported properly.
**Note** that using DXVK on this driver is highly discouraged and will likely not work.
- **ArmA 2**: Fixed texture-related issues (PR #2477).
- **Black Mesa**: Fixed
- **Resident Evil 0**, **5**, **6**, **Resident Evil: Revelations 2**: Improved performance (PR #2466).
- **Total War: Warhammer III**: Significantly improved GPU-bound performance on setups with a dedicated GPU.
## Per-game workarounds
Replaced the previous `d3d11.apitraceMode` option with `d3d11.cachedDynamicResources`, which provides a more granular way to specify resource types to allocate in cached system memory. Refer to the example `dxvk.conf` for details. This change was not made for the equivalent D3D9 option yet.
Normally, [D3D11_USAGE_DYNAMIC](https://docs.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_usage) resources are expected to be write-only from the CPU and read-only from the GPU, but despite this, some games perform CPU-side reads on the mapped memory, which can cause severe performance degradation since those reads would have to go over PCI-E, or at least uncached write-combined memory. This is especially problematic on systems with Resizeable BAR and can cause issues even on Windows D3D11 drivers.
Games that will use this option by default include **Age of Empires 2: Definitive Edition** (#2491), **Anno 1800**, **Final Fantasy XIV**, **Nier Replicant**, **The Evil Within** (PR #2522), and all games that previously had `d3d11.apitraceMode` enabled by default.
- updated to 1.9.4
Bug fixes and Improvements:
- Fixed an issue that would cause VRAM to not be utilized on RBAR-enabled Nvidia GPUs if the `dxvk.shrinkNvidiaHvvHeap`option is enabled (#2438).
- Enabled strict D3D9 float emulation by default on future versions of RADV. This may improve both accuracy and GPU-bound performance (PR #2448)..
- Improved memory allocation behaviour. This may reduce memory usage especially in games that create multiple processes or D3D devices.
- Removed obsolete options to disable OpenVR support.
- **God of War**: Enabled performance optimizations and DLSS support. *Note that these changes are already included in Proton Experimental.*
OBS-URL: https://build.opensuse.org/request/show/959619
OBS-URL: https://build.opensuse.org/package/show/Emulators:Wine/dxvk?expand=0&rev=29
2022-03-05 14:27:27 +00:00
|
|
|
Version: 1.10
|
2020-09-05 17:47:16 +00:00
|
|
|
Release: 0
|
|
|
|
Summary: Vulkan-based D3D11 implementation for Linux / Wine
|
|
|
|
License: zlib-acknowledgement
|
|
|
|
Group: System/Emulators/PC
|
2020-09-06 08:08:59 +00:00
|
|
|
URL: https://github.com/doitsujin/dxvk
|
2020-09-05 18:39:07 +00:00
|
|
|
Source0: https://github.com/doitsujin/dxvk/archive/v%{version}.tar.gz
|
2020-09-06 08:08:59 +00:00
|
|
|
Source1: baselibs.conf
|
2020-09-05 17:47:16 +00:00
|
|
|
|
|
|
|
BuildRequires: gcc
|
|
|
|
BuildRequires: gcc-c++
|
|
|
|
BuildRequires: glslang-devel
|
2020-09-06 08:08:59 +00:00
|
|
|
BuildRequires: meson
|
|
|
|
BuildRequires: ninja
|
|
|
|
BuildRequires: wine
|
2020-09-05 17:47:16 +00:00
|
|
|
BuildRequires: xz
|
|
|
|
|
|
|
|
%ifarch x86_64
|
|
|
|
BuildRequires: mingw64-cross-cpp
|
|
|
|
BuildRequires: mingw64-cross-gcc
|
|
|
|
BuildRequires: mingw64-cross-gcc-c++
|
|
|
|
BuildRequires: mingw64-headers
|
|
|
|
|
|
|
|
#Require 32bit version
|
|
|
|
Requires: %{name}-32bit
|
|
|
|
%else
|
|
|
|
BuildRequires: mingw32-cross-cpp
|
|
|
|
BuildRequires: mingw32-cross-gcc
|
|
|
|
BuildRequires: mingw32-cross-gcc-c++
|
|
|
|
BuildRequires: mingw32-headers
|
|
|
|
%endif
|
|
|
|
|
2021-06-22 09:10:56 +00:00
|
|
|
ExclusiveArch: %{ix86} x86_64
|
|
|
|
|
2020-09-05 17:47:16 +00:00
|
|
|
%description
|
|
|
|
Provides a Vulkan-based implementation of DXGI and D3D11 in order to run 3D applications on Linux using Wine
|
|
|
|
|
|
|
|
%prep
|
|
|
|
%setup -q
|
|
|
|
|
|
|
|
%build
|
2021-06-19 13:42:51 +00:00
|
|
|
export CFLAGS="%optflags -DNDEBUG -fPIC -O2 -pthread -fno-strict-aliasing -fpredictive-commoning -fuse-linker-plugin -fno-stack-protector -fno-stack-clash-protection -fno-lto"
|
2020-09-05 17:47:16 +00:00
|
|
|
export CXXFLAGS="${CFLAGS} -fpermissive"
|
2021-06-19 13:42:51 +00:00
|
|
|
export LDFLAGS="-fPIC -Wl,--sort-common -Wl,--gc-sections -Wl,-O1 -fuse-linker-plugin -fno-lto"
|
2020-09-05 17:47:16 +00:00
|
|
|
|
|
|
|
mkdir ../build
|
|
|
|
|
|
|
|
meson \
|
|
|
|
--cross-file build-win$(arch | tail -c 3 | sed 's|86|32|g').txt \
|
|
|
|
--strip \
|
|
|
|
--buildtype "release" \
|
|
|
|
--unity off \
|
|
|
|
--prefix /%{name} \
|
|
|
|
../build
|
|
|
|
|
|
|
|
cd ../build
|
|
|
|
ninja
|
|
|
|
|
|
|
|
%install
|
|
|
|
|
|
|
|
#install wrapper scripts
|
|
|
|
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
|
|
|
|
ln -s %{_libexecdir}/%{name}/bin/setup_dxvk.sh %{buildroot}%{_bindir}/wine%{name}
|
|
|
|
|
|
|
|
#install dxvk proper
|
|
|
|
cd ../build
|
|
|
|
DESTDIR=%{buildroot}%{_libexecdir} ninja install
|
|
|
|
|
|
|
|
%ifarch x86_64
|
|
|
|
if [ -d %{buildroot}%{_libexecdir}/%{name}/lib ];then
|
|
|
|
mv %{buildroot}%{_libexecdir}/%{name}/lib %{buildroot}%{_libexecdir}/%{name}/%{_lib}
|
|
|
|
fi
|
|
|
|
%endif
|
|
|
|
rm %{buildroot}%{_libexecdir}/%{name}/%{_lib}/*.dll.a && \
|
|
|
|
mv %{buildroot}%{_libexecdir}/%{name}/bin/*.dll %{buildroot}%{_libexecdir}/%{name}/%{_lib}/
|
|
|
|
|
|
|
|
%files
|
|
|
|
%defattr(644,root,root)
|
|
|
|
%doc README.md
|
|
|
|
%license LICENSE
|
|
|
|
|
|
|
|
%{_bindir}/wine%{name}
|
|
|
|
%dir %{_libexecdir}/%{name}
|
|
|
|
%{_libexecdir}/%{name}/%{_lib}
|
|
|
|
%attr(755, root, root) %{_libexecdir}/%{name}/bin
|
|
|
|
|
|
|
|
%changelog
|