View previous topic :: View next topic |
Author |
Message |
cameta Veteran


Joined: 04 Aug 2004 Posts: 1357
|
Posted: Fri Feb 07, 2025 10:59 pm Post subject: Imposible compilar dxvk-1.10.3-r1 (resuelto) |
|
|
Debido a unos recientes cambios en portage se elimino dxvk-1.10.3-r1, el cual es el único driver que soporta mi tarjeta gráfica
VGA compatible controller: Intel Corporation IvyBridge GT2 [HD Graphics 4000] (rev 09) por lo qhe he decidido hacer un localrepo para recuperar está funcionalidad
Code: | [ebuild UD ] app-emulation/dxvk-1.10.3-r1::localrepo [2.5.3::gentoo] USE="d3d9 d3d10 d3d11 dxgi -crossdev-mingw -debug% (-d3d8%*) (-strip%*)" ABI_X86="32 (64)" 0 KiB
Total: 1 package (1 downgrade), Size of downloads: 0 KiB
|
Por desgracia no compila.
Code: | FAILED: src/d3d10/d3d10_1.dll.p/d3d10_state_block.cpp.obj
x86_64-w64-mingw32-g++ -m32 -mfpmath=sse -Isrc/d3d10/d3d10_1.dll.p -Isrc/d3d10 -I../dxvk-1.10.3/src/d3d10 -I../dxvk-1.10.3/include -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c++17 -DNOMINMAX -D_WIN32_WINNT=0xa00 -msse -msse2 -msse3 -mfpmath=sse -Wimplicit-fallthrough -march=native -O2 -pipe -mno-avx -MD -MQ src/d3d10/d3d10_1.dll.p/d3d10_state_block.cpp.obj -MF src/d3d10/d3d10_1.dll.p/d3d10_state_block.cpp.obj.d -o src/d3d10/d3d10_1.dll.p/d3d10_state_block.cpp.obj -c ../dxvk-1.10.3/src/d3d10/d3d10_state_block.cpp
......
......
./dxvk-1.10.3/src/d3d10/d3d10_interfaces.h:8:1: error: redefinition of ‘struct __mingw_uuidof_s<ID3D10StateBlock>’
8 | __CRT_UUID_DECL(ID3D10StateBlock, 0x0803425a,0x57f5,0x4dd6,0x94,0x65,0xa8,0x75,0x70,0x83,0x4a,0x08);
| ^~~~~~~~~~~~~~~
/usr/lib/mingw64-toolchain/x86_64-w64-mingw32/include/d3d10effect.h:5266:1: note: previous definition of ‘struct __mingw_uuidof_s<ID3D10StateBlock>’
5266 | __CRT_UUID_DECL(ID3D10StateBlock, 0x0803425a, 0x57f5, 0x4dd6, 0x94,0x65, 0xa8,0x75,0x70,0x83,0x4a,0x08)
| ^~~~~~~~~~~~~~~
|
Antiguamente esto compilaba. ¿Alguna idea de lo que pueda estar provocando el problema?
he retrocedido las versiones de GCC, Meson y Ninja pero sin ningún resultado. _________________ Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual.
Last edited by cameta on Mon Feb 10, 2025 1:19 am; edited 1 time in total |
|
Back to top |
|
 |
cameta Veteran


Joined: 04 Aug 2004 Posts: 1357
|
Posted: Mon Feb 10, 2025 1:19 am Post subject: |
|
|
Lo he conseguido compilar
Al ver este mensaje de error
Code: | FAILED: src/d3d10/d3d10_1.dll.p/d3d10_state_block.cpp.obj |
he supuesto que pasaba algo con d3d10 y he decidido eliminar la use d3d10 con package.use
Code: | app-emulation/dxvk -d3d10 |
Code: | emerge -pv dxvk
app-emulation/dxvk-1.10.3-r1::localrepo USE="d3d9 d3d11 dxgi -crossdev-mingw -d3d10 -debug" ABI_X86="32 (64)" 0 KiB |
Con esto ya consigo que los juegos ya me sean operativos.
Aunque desconozco que es lo que ha provocado que ya no funcione d3d10. _________________ Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual. |
|
Back to top |
|
 |
quilosaq Veteran

Joined: 22 Dec 2009 Posts: 1562
|
Posted: Mon Feb 10, 2025 4:39 pm Post subject: |
|
|
cameta wrote: | ...
he decidido eliminar la use d3d10 con package.use
... |
Por si quisieras activar la use d3d10 -soporte para DirectX 10 (d3d10.dll)- aquí tienes un parche para el código fuente:
Code: | --- dxvk-1.10.3/src/d3d10/d3d10_interfaces.h 2022-08-02 14:52:09.000000000 +0200
+++ dxvk-1.10.3/src/d3d10/d3d10_interfaces.h.mod 2025-02-10 16:42:45.388576588 +0100
@@ -4,6 +4,4 @@
#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
|
Lo puedes guardar en un archivo .patch (por ejemplo redefinition-error.patch) y ubicarlo en:
Code: | /etc/portage/patches/app-emulation/dxvk-1.10.3-r1/ | creando los directorios que no existan. |
|
Back to top |
|
 |
cameta Veteran


Joined: 04 Aug 2004 Posts: 1357
|
Posted: Mon Feb 10, 2025 6:53 pm Post subject: |
|
|
Pues lo probaré.
Gracias. _________________ Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual. |
|
Back to top |
|
 |
cameta Veteran


Joined: 04 Aug 2004 Posts: 1357
|
Posted: Tue Feb 11, 2025 1:09 am Post subject: |
|
|
Pues ha funcionado
He creado un nuevo ebuild dxvk-1.10.3-r2
Code: | equery uses dxvk
[ Legend : U - final flag setting for installation]
[ : I - package is installed with flag ]
[ Colors : set, unset ]
* Found these USE flags for app-emulation/dxvk-1.10.3-r2:
U I
+ + abi_x86_32 : 32-bit (x86) libraries
- - crossdev-mingw : Use sys-devel/crossdev for the toolchain rather than dev-util/mingw64-toolchain (requires manual setting up)
+ + d3d10 : Enable support for DirectX 10 (d3d10.dll)
+ + d3d11 : Enable support for DirectX 11 (d3d11.dll)
+ + d3d9 : Enable support for DirectX 9 (d3d9.dll)
- - debug : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
+ + dxgi : Enable support for the DirectX Graphics Infrastructure (dxgi.dll)
|
Code: | WINEPREFIX=/home/mestres/.wine setup_dxvk.sh install --symlink
MESA-INTEL: warning: Ivy Bridge Vulkan support is incomplete
MESA-INTEL: warning: Ivy Bridge Vulkan support is incomplete
removed '/home/mestres/.wine/dosdevices/c:/windows/system32/dxgi.dll'
'/home/mestres/.wine/dosdevices/c:/windows/system32/dxgi.dll' -> '/usr/lib/dxvk/x32/dxgi.dll'
removed '/home/mestres/.wine/dosdevices/c:/windows/system32/d3d9.dll'
'/home/mestres/.wine/dosdevices/c:/windows/system32/d3d9.dll' -> '/usr/lib/dxvk/x32/d3d9.dll'
removed '/home/mestres/.wine/dosdevices/c:/windows/system32/d3d10core.dll'
'/home/mestres/.wine/dosdevices/c:/windows/system32/d3d10core.dll' -> '/usr/lib/dxvk/x32/d3d10core.dll'
removed '/home/mestres/.wine/dosdevices/c:/windows/system32/d3d11.dll'
'/home/mestres/.wine/dosdevices/c:/windows/system32/d3d11.dll' -> '/usr/lib/dxvk/x32/d3d11.dll'
|
Mañana explico como lo he hecho. _________________ Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual. |
|
Back to top |
|
 |
cameta Veteran


Joined: 04 Aug 2004 Posts: 1357
|
Posted: Tue Feb 11, 2025 9:22 am Post subject: |
|
|
El ebuild dxvk-1.10.3-r2.ebuild lo he puesto en
Code: | /var/db/repos/local/app-emulation/dxvk/ |
Code: | # Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# note: version <2.0 should be kept for longer given it's the
# last version to support <wine-7.1 and <nvidia-drivers-510
MULTILIB_ABIS="amd64 x86" # allow usage on /no-multilib/
MULTILIB_COMPAT=( abi_x86_{32,64} )
inherit flag-o-matic meson-multilib
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/doitsujin/dxvk.git"
else
SRC_URI="https://github.com/doitsujin/dxvk/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="-* amd64 x86"
fi
DESCRIPTION="Vulkan-based implementation of D3D9, D3D10 and D3D11 for Linux / Wine"
HOMEPAGE="https://github.com/doitsujin/dxvk/"
LICENSE="ZLIB"
SLOT="0"
IUSE="+abi_x86_32 crossdev-mingw +d3d9 +d3d10 +d3d11 debug +dxgi"
REQUIRED_USE="
|| ( d3d9 d3d10 d3d11 dxgi )
d3d10? ( d3d11 )
dxgi? ( d3d11 )"
BDEPEND="
dev-util/glslang
!crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )"
PATCHES=(
"${FILESDIR}"/${PN}-1.10.3-gcc13.patch
"${FILESDIR}"/${PN}-1.10.3-wow64-setup.patch
"${FILESDIR}"/${PN}-1.10.3-d3d10.patch
)
pkg_pretend() {
[[ ${MERGE_TYPE} == binary ]] && return
if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then
local tool=-w64-mingw32-g++
for tool in $(usev abi_x86_64 x86_64${tool}) $(usev abi_x86_32 i686${tool}); do
if ! type -P ${tool} >/dev/null; then
eerror "With USE=crossdev-mingw, it is necessary to setup the mingw toolchain."
eerror "For instructions, please see: https://wiki.gentoo.org/wiki/Mingw"
use abi_x86_32 && use abi_x86_64 &&
eerror "Also, with USE=abi_x86_32, will need both i686 and x86_64 toolchains."
die "USE=crossdev-mingw is set but ${tool} was not found"
elif [[ ! $(LC_ALL=C ${tool} -v 2>&1) =~ "Thread model: posix" ]]; then
eerror "${PN} requires GCC to be built with --enable-threads=posix"
eerror "Please see: https://wiki.gentoo.org/wiki/Mingw#POSIX_threads_for_Windows"
die "USE=crossdev-mingw is set but ${tool} does not use POSIX threads"
fi
done
fi
}
src_prepare() {
default
sed -i "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" setup_dxvk.sh || die
}
src_configure() {
use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH}
# random segfaults been reported with LTO in some games, filter as
# a safety (note that optimizing this further won't really help
# performance, GPU does the actual work)
filter-lto
# -mavx with mingw-gcc has a history of obscure issues and
# disabling is seen as safer, e.g. `WINEARCH=win32 winecfg`
# crashes with -march=skylake >=wine-8.10, similar issues with
# znver4: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110273
append-flags -mno-avx
if [[ ${CHOST} != *-mingw* ]]; then
if [[ ! -v MINGW_BYPASS ]]; then
unset AR CC CXX RC STRIP
filter-flags '-fuse-ld=*'
filter-flags '-mfunction-return=thunk*' #878849
# some bashrc-mv users tend to do CFLAGS="${LDFLAGS}" and then
# strip-unsupported-flags miss these during compile-only tests
# (primarily done for 23.0 profiles' -z, not full coverage)
filter-flags '-Wl,-z,*' #928038
fi
CHOST_amd64=x86_64-w64-mingw32
CHOST_x86=i686-w64-mingw32
CHOST=$(usex x86 ${CHOST_x86} ${CHOST_amd64})
strip-unsupported-flags
fi
multilib-minimal_src_configure
}
multilib_src_configure() {
# multilib's ${CHOST_amd64}-gcc -m32 is unusable with crossdev,
# unset again so meson eclass will set ${CHOST}-gcc + others
use crossdev-mingw && [[ ! -v MINGW_BYPASS ]] && unset AR CC CXX RC STRIP
local emesonargs=(
--prefix="${EPREFIX}"/usr/lib/${PN}
--{bin,lib}dir=x${MULTILIB_ABI_FLAG: -2}
$(meson_use {,enable_}d3d9)
$(meson_use {,enable_}d3d10)
$(meson_use {,enable_}d3d11)
$(meson_use {,enable_}dxgi)
$(usev !debug --strip) # portage won't strip .dll, so allow it here
-Denable_tests=false # needs wine/vulkan and is intended for manual use
)
meson_src_configure
}
multilib_src_install_all() {
dobin setup_dxvk.sh
dodoc README.md dxvk.conf
find "${ED}" -type f -name '*.a' -delete || die
}
pkg_preinst() {
[[ -e ${EROOT}/usr/$(get_libdir)/dxvk/d3d11.dll ]] && DXVK_HAD_OVERLAY=
}
pkg_postinst() {
if [[ ! ${REPLACING_VERSIONS} ]]; then
elog "To enable ${PN} on a wine prefix, you can run the following command:"
elog
elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink"
elog
elog "See ${EROOT}/usr/share/doc/${PF}/README.md* for details."
elif [[ -v DXVK_HAD_OVERLAY ]]; then
# temporary warning until this version is more widely used
elog "Gentoo's main repo ebuild for ${PN} uses different paths than most overlays."
elog "If you were using symbolic links in wine prefixes it may be necessary to"
elog "refresh them by re-running the command:"
elog
elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink"
elog
elog "Also, if you were using /etc/${PN}.conf, ${PN} is no longer patched to load"
elog "it. See ${EROOT}/usr/share/doc/${PF}/README.md* for handling configs."
fi
}
|
Y al patch en
Code: | /var/db/repos/local/app-emulation/dxvk/files/dxvk-1.10.3-d3d10.patch |
Code: | --- dxvk-1.10.3/src/d3d10/d3d10_interfaces.h 2022-08-02 14:52:09.000000000 +0200
+++ dxvk-1.10.3/src/d3d10/d3d10_interfaces.h.mod 2025-02-10 16:42:45.388576588 +0100
@@ -4,6 +4,4 @@
#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
|
Si alguien conoce alguna manera más elegante de estructurarlo que me lo diga.  _________________ Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|