Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Imposible compilar dxvk-1.10.3-r1 (resuelto)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
cameta
Veteran
Veteran


Joined: 04 Aug 2004
Posts: 1357

PostPosted: Fri Feb 07, 2025 10:59 pm    Post subject: Imposible compilar dxvk-1.10.3-r1 (resuelto) Reply with quote

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
View user's profile Send private message
cameta
Veteran
Veteran


Joined: 04 Aug 2004
Posts: 1357

PostPosted: Mon Feb 10, 2025 1:19 am    Post subject: Reply with quote

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
View user's profile Send private message
quilosaq
Veteran
Veteran


Joined: 22 Dec 2009
Posts: 1562

PostPosted: Mon Feb 10, 2025 4:39 pm    Post subject: Reply with quote

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
View user's profile Send private message
cameta
Veteran
Veteran


Joined: 04 Aug 2004
Posts: 1357

PostPosted: Mon Feb 10, 2025 6:53 pm    Post subject: Reply with quote

Pues lo probaré.
Gracias.
_________________
Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual.
Back to top
View user's profile Send private message
cameta
Veteran
Veteran


Joined: 04 Aug 2004
Posts: 1357

PostPosted: Tue Feb 11, 2025 1:09 am    Post subject: Reply with quote

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
View user's profile Send private message
cameta
Veteran
Veteran


Joined: 04 Aug 2004
Posts: 1357

PostPosted: Tue Feb 11, 2025 9:22 am    Post subject: Reply with quote

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. :wink:
_________________
Si algo falla LEE el jodido manual, Si sigue fallando LEE BIEN el jodido manual.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
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