%global debug_package %{nil} %{?mingw_package_header} %ifarch x86_64 %global winepedir x86_64-windows %global target_x86_type 64 %global mingw_sysroot %mingw64_sysroot %global mingw_build_win64 1 %global mingw_build_win32 0 %else %global winepedir i386-windows %global target_x86_type 32 %global mingw_sysroot %mingw32_sysroot %global mingw_build_win64 0 %global mingw_build_win32 1 %endif Name: wine-dxvk Version: 1.10.3 Release: %autorelease Summary: Vulkan-based D3D11 and D3D10 implementation for Linux / Wine License: zlib URL: https://github.com/doitsujin/dxvk Source0: %{url}/archive/v%{version}/dxvk-%{version}.tar.gz # Apply fixes from git/1.10.x released after 1.10.3 till 2nd of Aug 2023 Patch01: postrel_fixxes.patch # GCC 13 buildfixes # https://github.com/doitsujin/dxvk/pull/3308 Patch02: 3308.patch BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: glslang BuildRequires: meson BuildRequires: wine-devel %ifarch x86_64 BuildRequires: mingw64-filesystem BuildRequires: mingw64-binutils BuildRequires: mingw64-headers BuildRequires: mingw64-cpp BuildRequires: mingw64-gcc BuildRequires: mingw64-gcc-c++ BuildRequires: mingw64-winpthreads-static %else BuildRequires: mingw32-filesystem BuildRequires: mingw32-binutils BuildRequires: mingw32-headers BuildRequires: mingw32-cpp BuildRequires: mingw32-gcc BuildRequires: mingw32-gcc-c++ BuildRequires: mingw32-winpthreads-static %endif Requires(pre): vulkan-tools Requires: wine-core%{?_isa} >= 6.8 Recommends: wine-dxvk-dxgi%{?_isa} = %{version}-%{release} Requires: vulkan-loader%{?_isa} # We want x86_64 users to always have also 32 bit lib, it's the same what wine does %ifarch x86_64 Requires: wine-dxvk(x86-32) = %{version}-%{release} %endif # Recommend also the d3d9 (former D9VK) Recommends: wine-dxvk-d3d9%{?_isa} = %{version}-%{release} Requires(posttrans): %{_sbindir}/alternatives wine-core%{?_isa} >= 6.8 Requires(preun): %{_sbindir}/alternatives ExclusiveArch: %{ix86} x86_64 %description %{summary} %package dxgi Summary: DXVK DXGI implementation %ifarch x86_64 Requires: wine-dxvk-dxgi(x86-32) = %{version}-%{release} %endif %description dxgi %{summary} This package doesn't enable the use of this DXGI implementation, it should be installed and overridden per prefix. %package d3d9 Summary: DXVK D3D9 implementation Requires: wine-dxvk%{?_isa} = %{version}-%{release} # We want x86_64 users to always have also 32 bit lib, it's the same what wine does %ifarch x86_64 Requires: wine-dxvk-d3d9(x86-32) = %{version}-%{release} %endif %description d3d9 %{summary} %prep %autosetup -n dxvk-%{version} -p1 %build %mingw_meson --buildtype=plain --wrap-mode=nodownload --auto-features=enabled --cross-file ../build-win%{target_x86_type}.txt --buildtype release %mingw_ninja %install %mingw_ninja_install winebuild --builtin %buildroot%mingw_sysroot/mingw/bin/dxgi.dll winebuild --builtin %buildroot%mingw_sysroot/mingw/bin/d3d9.dll winebuild --builtin %buildroot%mingw_sysroot/mingw/bin/d3d10.dll winebuild --builtin %buildroot%mingw_sysroot/mingw/bin/d3d10core.dll winebuild --builtin %buildroot%mingw_sysroot/mingw/bin/d3d10_1.dll winebuild --builtin %buildroot%mingw_sysroot/mingw/bin/d3d11.dll mkdir -p %{buildroot}%{_libdir}/wine/%{winepedir}/ install -p -m 644 %buildroot%mingw_sysroot/mingw/bin/dxgi.dll %{buildroot}%{_libdir}/wine/%{winepedir}/dxvk-dxgi.dll install -p -m 644 %buildroot%mingw_sysroot/mingw/bin/d3d9.dll %{buildroot}%{_libdir}/wine/%{winepedir}/dxvk-d3d9.dll install -p -m 644 %buildroot%mingw_sysroot/mingw/bin/d3d10.dll %{buildroot}%{_libdir}/wine/%{winepedir}/dxvk-d3d10.dll install -p -m 644 %buildroot%mingw_sysroot/mingw/bin/d3d10core.dll %{buildroot}%{_libdir}/wine/%{winepedir}/dxvk-d3d10core.dll install -p -m 644 %buildroot%mingw_sysroot/mingw/bin/d3d10_1.dll %{buildroot}%{_libdir}/wine/%{winepedir}/dxvk-d3d10_1.dll install -p -m 644 %buildroot%mingw_sysroot/mingw/bin/d3d11.dll %{buildroot}%{_libdir}/wine/%{winepedir}/dxvk-d3d11.dll # Clean-up rm -rf %buildroot%mingw_sysroot/mingw %posttrans if vulkaninfo |& grep "ERROR_INITIALIZATION_FAILED\|ERROR_SURFACE_LOST_KHR\|Vulkan support is incomplete" > /dev/null; then %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/d3d10.dll 'wine-d3d10%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d10.dll 5 \ --slave %{_libdir}/wine/%{winepedir}/d3d10_1.dll 'wine-d3d10_1%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d10_1.dll \ --slave %{_libdir}/wine/%{winepedir}/d3d10core.dll 'wine-d3d10core%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d10core.dll %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/d3d11.dll 'wine-d3d11%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d11.dll 5 else %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/d3d10.dll 'wine-d3d10%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d10.dll 20 \ --slave %{_libdir}/wine/%{winepedir}/d3d10_1.dll 'wine-d3d10_1%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d10_1.dll \ --slave %{_libdir}/wine/%{winepedir}/d3d10core.dll 'wine-d3d10core%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d10core.dll %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/d3d11.dll 'wine-d3d11%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d11.dll 20 fi %posttrans dxgi if vulkaninfo |& grep "ERROR_INITIALIZATION_FAILED\|ERROR_SURFACE_LOST_KHR\|Vulkan support is incomplete" > /dev/null; then %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/dxgi.dll 'wine-dxgi%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-dxgi.dll 5 else %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/dxgi.dll 'wine-dxgi%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-dxgi.dll 5 fi %posttrans d3d9 if vulkaninfo |& grep "ERROR_INITIALIZATION_FAILED\|ERROR_SURFACE_LOST_KHR\|Vulkan support is incomplete" > /dev/null; then %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/d3d9.dll 'wine-d3d9%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d9.dll 5 else %{_sbindir}/alternatives --install %{_libdir}/wine/%{winepedir}/d3d9.dll 'wine-d3d9%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d9.dll 5 fi %postun %{_sbindir}/alternatives --remove 'wine-d3d10%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d10.dll %{_sbindir}/alternatives --remove 'wine-d3d11%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d11.dll %postun d3d9 %{_sbindir}/alternatives --remove 'wine-d3d9%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-d3d9.dll %postun dxgi %{_sbindir}/alternatives --remove 'wine-dxgi%{?_isa}' %{_libdir}/wine/%{winepedir}/dxvk-dxgi.dll %files %license LICENSE %doc README.md %{_libdir}/wine/%{winepedir}/dxvk-d3d10.dll %{_libdir}/wine/%{winepedir}/dxvk-d3d10_1.dll %{_libdir}/wine/%{winepedir}/dxvk-d3d10core.dll %{_libdir}/wine/%{winepedir}/dxvk-d3d11.dll %files d3d9 %license LICENSE %{_libdir}/wine/%{winepedir}/dxvk-d3d9.dll %files dxgi %license LICENSE %{_libdir}/wine/%{winepedir}/dxvk-dxgi.dll %changelog %autochangelog