diff --git a/app-emulation/dxvk/Manifest b/app-emulation/dxvk/Manifest index 3662940..fbf1951 100644 --- a/app-emulation/dxvk/Manifest +++ b/app-emulation/dxvk/Manifest @@ -1,6 +1,8 @@ +AUX 1.5.4-fix_compilation_with_wine-5.2.patch 9870 BLAKE2B 8ca66ed96bc2a62a28c9dc1dc3539363904521a052c9f5ea9aa0682537a289baef48eeba8780affa9e8f3fff6e79fa591adcbbfdebdb6aa0528e7b79865638ef SHA512 d65b2379731635bd2265556b6a02fc8f0bb94b94d4746e8a402d3cdfc5c88c97af5d427b19e4de2046b34e4849b84c0045f0422f8d8f63403dd47ddb0fdb62ab DIST dxvk-1.5.3.tar.gz 885490 BLAKE2B dcdb7d763fab65b5d038ef440d2b934086abaf53f2f4991c9c68cce16ba3452ff8b64b127b030396925f4b3db18a0aad5392b5bc3c14608e96ef29fbb409a3bd SHA512 41ac7f31b2c4925c30be2849b5fbca1df696b6df63978030cd9bca1c02fbdeec4523cbfe654fdb88b07df5ec42fd64294c87f07578cf7393bc5ed21b126f5bde DIST dxvk-1.5.4.tar.gz 885827 BLAKE2B c42bcd3720593159336acc9999791e6c9772bc3ef6dd97353ccd249dea6c23ef8830c80d4552a75b5d9d93b19c62cf61f9a4601a552c30454621bc60c07f2727 SHA512 3c870e906228d400c476c44e98d4f2a00fa2acbd660f23e6ae05ba323839452755c7650127630b381c73dddbb7900bf338165a1fd5da45cddb8072d2f2e20598 EBUILD dxvk-1.5.3.ebuild 2294 BLAKE2B 1233671bd8b41fb47b150b92dcfd482222d20a61a37df4bc729b5696532ad35c250ab69387034a554184c9d19fe8fcc55640817dbc1501a2c0e8d3ad863f0d77 SHA512 9a877d40167da1fd6e3f5313282658b120dbd7010cd6f2e9bcae08fd38d5b23fdf946f9f76f09ff4f674e5538e5d5491182ba8b1e346de917204fe8ffdb80454 +EBUILD dxvk-1.5.4-r1.ebuild 2364 BLAKE2B 1d84be5718f76e88f8ce458dc39c44e26a9099b731acfaa7669302ee2ecf553d1dfb1f3c68d82c0948d82ac20ef6446a7a3c9b4e657efa5ca64242d729bf8fe2 SHA512 1216016e3c5cd1ce2c342da248053f2e891c39961f5c509bf7f4b89afdcec6e6a4a0dfb6182ea8e0d2182124639a2ca71b1e792399b32ccbb1fc7c329e6926c6 EBUILD dxvk-1.5.4.ebuild 2294 BLAKE2B 1233671bd8b41fb47b150b92dcfd482222d20a61a37df4bc729b5696532ad35c250ab69387034a554184c9d19fe8fcc55640817dbc1501a2c0e8d3ad863f0d77 SHA512 9a877d40167da1fd6e3f5313282658b120dbd7010cd6f2e9bcae08fd38d5b23fdf946f9f76f09ff4f674e5538e5d5491182ba8b1e346de917204fe8ffdb80454 EBUILD dxvk-9999-r2.ebuild 2327 BLAKE2B d664fdafd5dc9987ec640c98602fe5a466d23245626d98fc8ead7ff16bbab363dfb60160c549477fcc52d2dd80db0eb682a6efc8bc9d719faf7d7c1188a5ebe1 SHA512 298b1b82b04e4f5060356f93607bab7a766cf8dbf3ba215a35722a08ca7d9ea083e15d0a53d682366cac0193a45fee84d098fcc9b271e0bff474d34739807e1b MISC metadata.xml 339 BLAKE2B 2c3c82d9b14bca7f4b3b2d01aadad24d534c74201952505d3d579d636c6053cb8fdc3a91c269d500876af972015d48756c7ea4b5cec089c4a7c5c4fbfdc63d70 SHA512 f2694f77e348ae5cc9053b7380b0efe41dc4a82a4fd100e2a8c87a15c11452400581145938ed80816a2c9ec86e5cd4444b99b713c2404efa7225a0e39025c7be diff --git a/app-emulation/dxvk/dxvk-1.5.4-r1.ebuild b/app-emulation/dxvk/dxvk-1.5.4-r1.ebuild new file mode 100644 index 0000000..cb55d46 --- /dev/null +++ b/app-emulation/dxvk/dxvk-1.5.4-r1.ebuild @@ -0,0 +1,102 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +MULTILIB_COMPAT=( abi_x86_{32,64} ) +inherit meson multilib-minimal ninja-utils +if [[ "${PV}" == "9999" ]]; then + inherit git-r3 +fi + +DESCRIPTION="Vulkan-based D3D11 and D3D10 implementation for Linux / Wine" +HOMEPAGE="https://github.com/doitsujin/dxvk" +if [[ "${PV}" == "9999" ]]; then + EGIT_REPO_URI="https://github.com/doitsujin/dxvk.git" +else + SRC_URI="https://github.com/doitsujin/dxvk/archive/v${PV}.tar.gz -> ${P}.tar.gz" +fi + +LICENSE="ZLIB" +SLOT="0" +if [[ "${PV}" == "9999" ]]; then + KEYWORDS="" +else + KEYWORDS="~amd64 ~x86" +fi +IUSE="video_cards_nvidia" + +DEPEND=" + dev-util/vulkan-headers + dev-util/glslang +" +BDEPEND=" + || ( + >=app-emulation/wine-staging-4.5[${MULTILIB_USEDEP}] + >=app-emulation/wine-vanilla-4.5[${MULTILIB_USEDEP}] + ) +" +RDEPEND=" + media-libs/vulkan-loader[${MULTILIB_USEDEP}] + || ( + video_cards_nvidia? ( >=x11-drivers/nvidia-drivers-440.31 ) + >=media-libs/mesa-19.2 + ) +" + +PATCHES=( + "${FILESDIR}/1.5.4-fix_compilation_with_wine-5.2.patch" +) + +pkg_pretend () { + if ! use abi_x86_64 && ! use abi_x86_32; then + eerror "You need to enable at least one of abi_x86_32 and abi_x86_64." + die + fi +} + +src_prepare() { + default + sed -i "s|^basedir=.*$|basedir=\"${EPREFIX}\"|" setup_dxvk.sh || die + sed -i "s|\"x64\"|\"usr/${LIBDIR_amd64}/dxvk\"|" setup_dxvk.sh || die + sed -i "s|\"x32\"|\"usr/${LIBDIR_x86}/dxvk\"|" setup_dxvk.sh || die + + if ! use abi_x86_64; then + sed -i '/installFile "$win64_sys_path"/d' setup_dxvk.sh || die + fi + + if ! use abi_x86_32; then + sed -i '/installFile "$win32_sys_path"/d' setup_dxvk.sh || die + fi +} + +multilib_src_configure() { + local bit="${MULTILIB_ABI_FLAG:8:2}" + + local emesonargs=( + --libdir=$(get_libdir)/dxvk + --bindir=$(get_libdir)/dxvk/bin + --cross-file=../${P}/build-wine${bit}.txt + ) + meson_src_configure +} + +multilib_src_compile() { + EMESON_SOURCE="${S}" + meson_src_compile +} + +multilib_src_install() { + meson_src_install +} + +multilib_src_install_all() { + dobin setup_dxvk.sh +} + +pkg_postinst() { + elog "dxvk is installed, but not activated. You have to create DLL overrides" + elog "in order to make use of it. To do so, set WINEPREFIX and execute" + elog "setup_dxvk.sh install --symlink." + + elog "D9VK is part of DXVK since 1.5. If use symlinks, don't forget to link the new libraries." +} diff --git a/app-emulation/dxvk/files/1.5.4-fix_compilation_with_wine-5.2.patch b/app-emulation/dxvk/files/1.5.4-fix_compilation_with_wine-5.2.patch new file mode 100644 index 0000000..f085118 --- /dev/null +++ b/app-emulation/dxvk/files/1.5.4-fix_compilation_with_wine-5.2.patch @@ -0,0 +1,246 @@ +From 74d23c22dea0445d33345de36a1cc7ee531f94d5 Mon Sep 17 00:00:00 2001 +From: Joshua Ashton +Date: Tue, 18 Feb 2020 19:03:18 +0000 +Subject: [PATCH] [build] Use __CRT_UUID_DECL for uuid definitions + +Closes #1463 +--- + src/d3d10/d3d10_interfaces.h | 9 +++++++++ + src/d3d10/d3d10_state_block.cpp | 5 +---- + src/d3d10/d3d10_state_block.h | 3 +-- + src/d3d11/d3d11_interfaces.h | 8 ++------ + src/dxgi/dxgi_interfaces.h | 32 ++++++++------------------------ + src/util/com/com_guid.cpp | 11 ----------- + src/util/com/com_guid.h | 10 ---------- + 7 files changed, 21 insertions(+), 57 deletions(-) + create mode 100644 src/d3d10/d3d10_interfaces.h + +diff --git a/src/d3d10/d3d10_interfaces.h b/src/d3d10/d3d10_interfaces.h +new file mode 100644 +index 000000000..aa028ab57 +--- /dev/null ++++ b/src/d3d10/d3d10_interfaces.h +@@ -0,0 +1,9 @@ ++#pragma once ++ ++#include "d3d10_include.h" ++ ++#ifdef _MSC_VER ++struct __declspec(uuid("0803425a-57f5-4dd6-9465-a87570834a08")) ID3D10StateBlock; ++#else ++__CRT_UUID_DECL(ID3D10StateBlock, 0x0803425a,0x57f5,0x4dd6,0x94,0x65,0xa8,0x75,0x70,0x83,0x4a,0x08); ++#endif +diff --git a/src/d3d10/d3d10_state_block.cpp b/src/d3d10/d3d10_state_block.cpp +index 028d4e0fb..af628eb46 100644 +--- a/src/d3d10/d3d10_state_block.cpp ++++ b/src/d3d10/d3d10_state_block.cpp +@@ -31,9 +31,6 @@ namespace dxvk { + MAKE_STATE_TYPE(Predication, 1), + }}; + +- // MinGW fails on __uuidof(ID3D10StateBlock), winelib builds fail to link +- const GUID D3D10StateBlock::guid = {0x0803425a,0x57f5,0x4dd6,{0x94,0x65,0xa8,0x75,0x70,0x83,0x4a,0x08}}; +- + + D3D10StateBlock::D3D10StateBlock( + ID3D10Device* pDevice, +@@ -57,7 +54,7 @@ namespace dxvk { + *ppvObject = nullptr; + + if (riid == __uuidof(IUnknown) +- || riid == D3D10StateBlock::guid) { ++ || riid == __uuidof(ID3D10StateBlock)) { + *ppvObject = ref(this); + return S_OK; + } +diff --git a/src/d3d10/d3d10_state_block.h b/src/d3d10/d3d10_state_block.h +index 4f99165e4..b899034d5 100644 +--- a/src/d3d10/d3d10_state_block.h ++++ b/src/d3d10/d3d10_state_block.h +@@ -1,6 +1,7 @@ + #pragma once + + #include "d3d10_include.h" ++#include "d3d10_interfaces.h" + + namespace dxvk { + +@@ -47,8 +48,6 @@ namespace dxvk { + class D3D10StateBlock : public ComObject { + + public: +- static const GUID guid; +- + D3D10StateBlock( + ID3D10Device* pDevice, + const D3D10_STATE_BLOCK_MASK* pMask); +diff --git a/src/d3d11/d3d11_interfaces.h b/src/d3d11/d3d11_interfaces.h +index ba870d160..42b319a78 100644 +--- a/src/d3d11/d3d11_interfaces.h ++++ b/src/d3d11/d3d11_interfaces.h +@@ -32,8 +32,6 @@ enum D3D11_VK_BARRIER_CONTROL : uint32_t { + */ + MIDL_INTERFACE("8a6e3c42-f74c-45b7-8265-a231b677ca17") + ID3D11VkExtDevice : public IUnknown { +- static const GUID guid; +- + /** + * \brief Checks whether an extension is supported + * +@@ -54,8 +52,6 @@ ID3D11VkExtDevice : public IUnknown { + */ + MIDL_INTERFACE("fd0bca13-5cb6-4c3a-987e-4750de2ca791") + ID3D11VkExtContext : public IUnknown { +- static const GUID guid; +- + virtual void STDMETHODCALLTYPE MultiDrawIndirect( + UINT DrawCount, + ID3D11Buffer* pBufferForArgs, +@@ -98,6 +94,6 @@ ID3D11VkExtContext : public IUnknown { + struct __declspec(uuid("8a6e3c42-f74c-45b7-8265-a231b677ca17")) ID3D11VkExtDevice; + struct __declspec(uuid("fd0bca13-5cb6-4c3a-987e-4750de2ca791")) ID3D11VkExtContext; + #else +-DXVK_DEFINE_GUID(ID3D11VkExtDevice); +-DXVK_DEFINE_GUID(ID3D11VkExtContext); ++__CRT_UUID_DECL(ID3D11VkExtDevice, 0x8a6e3c42,0xf74c,0x45b7,0x82,0x65,0xa2,0x31,0xb6,0x77,0xca,0x17); ++__CRT_UUID_DECL(ID3D11VkExtContext, 0xfd0bca13,0x5cb6,0x4c3a,0x98,0x7e,0x47,0x50,0xde,0x2c,0xa7,0x91); + #endif +diff --git a/src/dxgi/dxgi_interfaces.h b/src/dxgi/dxgi_interfaces.h +index 06c969574..02cec1fea 100644 +--- a/src/dxgi/dxgi_interfaces.h ++++ b/src/dxgi/dxgi_interfaces.h +@@ -36,8 +36,6 @@ struct DXGI_VK_MONITOR_DATA { + */ + MIDL_INTERFACE("104001a6-7f36-4957-b932-86ade9567d91") + IDXGIVkSwapChain : public IUnknown { +- static const GUID guid; +- + virtual HRESULT STDMETHODCALLTYPE GetDesc( + DXGI_SWAP_CHAIN_DESC1* pDesc) = 0; + +@@ -89,8 +87,6 @@ IDXGIVkSwapChain : public IUnknown { + */ + MIDL_INTERFACE("907bf281-ea3c-43b4-a8e4-9f231107b4ff") + IDXGIDXVKAdapter : public IDXGIAdapter3 { +- static const GUID guid; +- + virtual dxvk::Rc STDMETHODCALLTYPE GetDXVKAdapter() = 0; + + virtual dxvk::Rc STDMETHODCALLTYPE GetDXVKInstance() = 0; +@@ -103,8 +99,6 @@ IDXGIDXVKAdapter : public IDXGIAdapter3 { + */ + MIDL_INTERFACE("92a5d77b-b6e1-420a-b260-fdd701272827") + IDXGIDXVKDevice : public IUnknown { +- static const GUID guid; +- + virtual void STDMETHODCALLTYPE SetAPIVersion( + UINT Version) = 0; + +@@ -122,8 +116,6 @@ IDXGIDXVKDevice : public IUnknown { + */ + MIDL_INTERFACE("c06a236f-5be3-448a-8943-89c611c0c2c1") + IDXGIVkMonitorInfo : public IUnknown { +- static const GUID guid; +- + /** + * \brief Initializes monitor data + * +@@ -167,8 +159,6 @@ IDXGIVkMonitorInfo : public IUnknown { + */ + MIDL_INTERFACE("5546cf8c-77e7-4341-b05d-8d4d5000e77d") + IDXGIVkInteropSurface : public IUnknown { +- static const GUID guid; +- + /** + * \brief Retrieves device interop interfaceSlots + * +@@ -225,8 +215,6 @@ IDXGIVkInteropSurface : public IUnknown { + */ + MIDL_INTERFACE("e2ef5fa5-dc21-4af7-90c4-f67ef6a09323") + IDXGIVkInteropDevice : public IUnknown { +- static const GUID guid; +- + /** + * \brief Queries Vulkan handles used by DXVK + * +@@ -308,8 +296,6 @@ IDXGIVkInteropDevice : public IUnknown { + */ + MIDL_INTERFACE("3a6d8f2c-b0e8-4ab4-b4dc-4fd24891bfa5") + IDXGIVkInteropAdapter : public IUnknown { +- static const GUID guid; +- + /** + * \brief Queries Vulkan handles used by DXVK + * +@@ -330,8 +316,6 @@ IDXGIVkInteropAdapter : public IUnknown { + */ + MIDL_INTERFACE("53cb4ff0-c25a-4164-a891-0e83db0a7aac") + IWineDXGISwapChainFactory : public IUnknown { +- static const GUID guid; +- + virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd( + IDXGIFactory* pFactory, + HWND hWnd, +@@ -352,12 +336,12 @@ struct __declspec(uuid("5546cf8c-77e7-4341-b05d-8d4d5000e77d")) IDXGIVkInteropSu + struct __declspec(uuid("104001a6-7f36-4957-b932-86ade9567d91")) IDXGIVkSwapChain; + struct __declspec(uuid("53cb4ff0-c25a-4164-a891-0e83db0a7aac")) IWineDXGISwapChainFactory; + #else +-DXVK_DEFINE_GUID(IDXGIDXVKAdapter); +-DXVK_DEFINE_GUID(IDXGIDXVKDevice); +-DXVK_DEFINE_GUID(IDXGIVkMonitorInfo); +-DXVK_DEFINE_GUID(IDXGIVkInteropAdapter); +-DXVK_DEFINE_GUID(IDXGIVkInteropDevice); +-DXVK_DEFINE_GUID(IDXGIVkInteropSurface); +-DXVK_DEFINE_GUID(IDXGIVkSwapChain); +-DXVK_DEFINE_GUID(IWineDXGISwapChainFactory); ++__CRT_UUID_DECL(IDXGIDXVKAdapter, 0x907bf281,0xea3c,0x43b4,0xa8,0xe4,0x9f,0x23,0x11,0x07,0xb4,0xff); ++__CRT_UUID_DECL(IDXGIDXVKDevice, 0x92a5d77b,0xb6e1,0x420a,0xb2,0x60,0xfd,0xf7,0x01,0x27,0x28,0x27); ++__CRT_UUID_DECL(IDXGIVkMonitorInfo, 0xc06a236f,0x5be3,0x448a,0x89,0x43,0x89,0xc6,0x11,0xc0,0xc2,0xc1); ++__CRT_UUID_DECL(IDXGIVkInteropAdapter, 0x3a6d8f2c,0xb0e8,0x4ab4,0xb4,0xdc,0x4f,0xd2,0x48,0x91,0xbf,0xa5); ++__CRT_UUID_DECL(IDXGIVkInteropDevice, 0xe2ef5fa5,0xdc21,0x4af7,0x90,0xc4,0xf6,0x7e,0xf6,0xa0,0x93,0x23); ++__CRT_UUID_DECL(IDXGIVkInteropSurface, 0x5546cf8c,0x77e7,0x4341,0xb0,0x5d,0x8d,0x4d,0x50,0x00,0xe7,0x7d); ++__CRT_UUID_DECL(IDXGIVkSwapChain, 0x104001a6,0x7f36,0x4957,0xb9,0x32,0x86,0xad,0xe9,0x56,0x7d,0x91); ++__CRT_UUID_DECL(IWineDXGISwapChainFactory, 0x53cb4ff0,0xc25a,0x4164,0xa8,0x91,0x0e,0x83,0xdb,0x0a,0x7a,0xac); + #endif +\ No newline at end of file +diff --git a/src/util/com/com_guid.cpp b/src/util/com/com_guid.cpp +index 0410c4ad5..329d18488 100644 +--- a/src/util/com/com_guid.cpp ++++ b/src/util/com/com_guid.cpp +@@ -4,17 +4,6 @@ + + #include "../../dxgi/dxgi_interfaces.h" + +-const GUID ID3D11VkExtDevice::guid = {0x8a6e3c42,0xf74c,0x45b7,{0x82,0x65,0xa2,0x31,0xb6,0x77,0xca,0x17}}; +-const GUID ID3D11VkExtContext::guid = {0xfd0bca13,0x5cb6,0x4c3a,{0x98,0x7e,0x47,0x50,0xde,0x2c,0xa7,0x91}}; +-const GUID IDXGIDXVKAdapter::guid = {0x907bf281,0xea3c,0x43b4,{0xa8,0xe4,0x9f,0x23,0x11,0x07,0xb4,0xff}}; +-const GUID IDXGIDXVKDevice::guid = {0x92a5d77b,0xb6e1,0x420a,{0xb2,0x60,0xfd,0xf7,0x01,0x27,0x28,0x27}}; +-const GUID IDXGIVkMonitorInfo::guid = {0xc06a236f,0x5be3,0x448a,{0x89,0x43,0x89,0xc6,0x11,0xc0,0xc2,0xc1}}; +-const GUID IDXGIVkInteropAdapter::guid = {0x3a6d8f2c,0xb0e8,0x4ab4,{0xb4,0xdc,0x4f,0xd2,0x48,0x91,0xbf,0xa5}}; +-const GUID IDXGIVkInteropDevice::guid = {0xe2ef5fa5,0xdc21,0x4af7,{0x90,0xc4,0xf6,0x7e,0xf6,0xa0,0x93,0x23}}; +-const GUID IDXGIVkInteropSurface::guid = {0x5546cf8c,0x77e7,0x4341,{0xb0,0x5d,0x8d,0x4d,0x50,0x00,0xe7,0x7d}}; +-const GUID IDXGIVkSwapChain::guid = {0x104001a6,0x7f36,0x4957,{0xb9,0x32,0x86,0xad,0xe9,0x56,0x7d,0x91}}; +-const GUID IWineDXGISwapChainFactory::guid = {0x53cb4ff0,0xc25a,0x4164,{0xa8,0x91,0x0e,0x83,0xdb,0x0a,0x7a,0xac}}; +- + std::ostream& operator << (std::ostream& os, REFIID guid) { + os << std::hex << std::setfill('0') + << std::setw(8) << guid.Data1 << '-'; +diff --git a/src/util/com/com_guid.h b/src/util/com/com_guid.h +index d1f6b01d1..9a69fc932 100644 +--- a/src/util/com/com_guid.h ++++ b/src/util/com/com_guid.h +@@ -5,14 +5,4 @@ + + #include "com_include.h" + +-#ifndef _MSC_VER +-# ifdef __WINE__ +-# define DXVK_DEFINE_GUID(iface) \ +- template<> inline GUID const& __wine_uuidof () { return iface::guid; } +-# else +-# define DXVK_DEFINE_GUID(iface) \ +- template<> inline GUID const& __mingw_uuidof () { return iface::guid; } +-# endif +-#endif +- + std::ostream& operator << (std::ostream& os, REFIID guid);