Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Spanish
  • Search

Imposible compilar dxvk-1.10.3-r1 (resuelto)

Foro en español para los usuarios Hispanos de Gentoo.

Moderator: Stolz

Post Reply
  • Print view
Advanced search
6 posts • Page 1 of 1
Author
Message
cameta
Veteran
Veteran
User avatar
Posts: 1394
Joined: Wed Aug 04, 2004 9:51 am

Imposible compilar dxvk-1.10.3-r1 (resuelto)

  • Quote

Post by cameta » Fri Feb 07, 2025 10:59 pm

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: Select all

[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: Select all

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.
Last edited by cameta on Mon Feb 10, 2025 1:19 am, edited 1 time in total.
Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual.
Top
cameta
Veteran
Veteran
User avatar
Posts: 1394
Joined: Wed Aug 04, 2004 9:51 am

  • Quote

Post by cameta » Mon Feb 10, 2025 1:19 am

Lo he conseguido compilar
Al ver este mensaje de error

Code: Select all

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: Select all

app-emulation/dxvk -d3d10 

Code: Select all

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.
Top
quilosaq
Veteran
Veteran
Posts: 1596
Joined: Tue Dec 22, 2009 5:07 pm

  • Quote

Post by quilosaq » Mon Feb 10, 2025 4:39 pm

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: Select all

--- 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: Select all

/etc/portage/patches/app-emulation/dxvk-1.10.3-r1/
creando los directorios que no existan.
Top
cameta
Veteran
Veteran
User avatar
Posts: 1394
Joined: Wed Aug 04, 2004 9:51 am

  • Quote

Post by cameta » Mon Feb 10, 2025 6:53 pm

Pues lo probaré.
Gracias.
Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual.
Top
cameta
Veteran
Veteran
User avatar
Posts: 1394
Joined: Wed Aug 04, 2004 9:51 am

  • Quote

Post by cameta » Tue Feb 11, 2025 1:09 am

Pues ha funcionado
He creado un nuevo ebuild dxvk-1.10.3-r2

Code: Select all

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: Select all

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.
Top
cameta
Veteran
Veteran
User avatar
Posts: 1394
Joined: Wed Aug 04, 2004 9:51 am

  • Quote

Post by cameta » Tue Feb 11, 2025 9:22 am

El ebuild dxvk-1.10.3-r2.ebuild lo he puesto en

Code: Select all

/var/db/repos/local/app-emulation/dxvk/

Code: Select all

# 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: Select all

/var/db/repos/local/app-emulation/dxvk/files/dxvk-1.10.3-d3d10.patch

Code: Select all

--- 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. :wink:
Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual.
Top
Post Reply
  • Print view

6 posts • Page 1 of 1

Return to “Spanish”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic