Dxvk: Error Building DXVK 1.6

Created on 20 Mar 2020  Â·  17Comments  Â·  Source: doitsujin/dxvk

FAILED: src/d3d11/bca5607@@d3d11.dll@sha/d3d11_interop.cpp.o 
wineg++ -Isrc/d3d11/bca5607@@d3d11.dll@sha -Isrc/d3d11 -I../dxvk-1.6/src/d3d11 -I../dxvk-1.6/./include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -std=c++17 -DNOMINMAX --no-gnu-unique -O3 -m32 -msse -msse2 -fvisibility=hidden -fvisibility-inlines-hidden -D__WIDL_objidl_generated_name_0000000C= -fPIC -MD -MQ 'src/d3d11/bca5607@@d3d11.dll@sha/d3d11_interop.cpp.o' -MF 'src/d3d11/bca5607@@d3d11.dll@sha/d3d11_interop.cpp.o.d' -o 'src/d3d11/bca5607@@d3d11.dll@sha/d3d11_interop.cpp.o' -c ../dxvk-1.6/src/d3d11/d3d11_interop.cpp
In file included from ../dxvk-1.6/src/d3d11/d3d11_context_imm.h:5,
                 from ../dxvk-1.6/src/d3d11/d3d11_interop.cpp:1:
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:77:19: error: ‘HANDLE’ has not been declared
   77 |     void setEvent(HANDLE event, uint64_t value) {
      |                   ^~~~~~
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:92:25: error: ‘HANDLE’ was not declared in this scope; did you mean ‘E_HANDLE’?
   92 |     std::list<std::pair<HANDLE, uint64_t>> m_events;
      |                         ^~~~~~
      |                         E_HANDLE
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:92:33: error: template argument 1 is invalid
   92 |     std::list<std::pair<HANDLE, uint64_t>> m_events;
      |                                 ^~~~~~~~
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:92:41: error: template argument 1 is invalid
   92 |     std::list<std::pair<HANDLE, uint64_t>> m_events;
      |                                         ^~
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:92:41: error: template argument 2 is invalid
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h: In member function ‘virtual void dxvk::sync::Win32Fence::signal(uint64_t)’:
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:46:30: error: request for member ‘begin’ in ‘((dxvk::sync::Win32Fence*)this)->dxvk::sync::Win32Fence::m_events’, which is of non-class type ‘int’
   46 |       for (auto i = m_events.begin(); i != m_events.end(); ) {
      |                              ^~~~~
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:46:53: error: request for member ‘end’ in ‘((dxvk::sync::Win32Fence*)this)->dxvk::sync::Win32Fence::m_events’, which is of non-class type ‘int’
   46 |       for (auto i = m_events.begin(); i != m_events.end(); ) {
      |                                                     ^~~
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:48:11: error: ‘SetEvent’ was not declared in this scope; did you mean ‘setEvent’?
   48 |           SetEvent(i->first);
      |           ^~~~~~~~
      |           setEvent
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:49:24: error: request for member ‘erase’ in ‘((dxvk::sync::Win32Fence*)this)->dxvk::sync::Win32Fence::m_events’, which is of non-class type ‘int’
   49 |           i = m_events.erase(i);
      |                        ^~~~~
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h: In member function ‘void dxvk::sync::Win32Fence::setEvent(int, uint64_t)’:
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:81:18: error: request for member ‘push_back’ in ‘((dxvk::sync::Win32Fence*)this)->dxvk::sync::Win32Fence::m_events’, which is of non-class type ‘int’
   81 |         m_events.push_back({ event, value });
      |                  ^~~~~~~~~
../dxvk-1.6/src/d3d11/../util/sync/sync_signal_win32.h:83:9: error: ‘SetEvent’ was not declared in this scope; did you mean ‘setEvent’?
   83 |         SetEvent(event);
      |         ^~~~~~~~
      |         setEvent
winegcc: /usr/bin/x86_64-pc-linux-gnu-g++ failed

Most helpful comment

I added the missing include, but note that I'll probably drop winelib support with the next release (-ish).

All 17 comments

Works for me. Please give more details on what you are doing.

Is there any particular reason you are using winelib builds? I no longer test those and it's getting really annoying to support those.

I've been using that since I started with dxvk

What's the prefered method?

Building via mingw as detailed in the readme.

I added the missing include, but note that I'll probably drop winelib support with the next release (-ish).

Ah pants, was trying to avoid having another toolchain just for this

Now I know it isn't supported I'll look into it, but I'll try and keep winelib working myself for now

Thanks, that's it building fine now

I added the missing include, but note that I'll probably drop winelib support with the next release

That is very unfortunate, mingw is a really heavy dependency.

Hi @FireBurn, I had been using DXVK-winelib too, but after using DWARF2 + LTO to compile on Mingw, my performance was better on Mingw vesus Winelib.

Not to mention that it's even better with the new GCC 9.3.0 update.

@orbea
mingw is a really heavy dependency

Yes, it gets a little heavy, around 976.5 Mb only Mingw:
oie_HN6WhzEbVxh4

But, you can use Philip's compilations:

https://git.froggi.es/doitsujin/dxvk/-/jobs

Precompiled binaries and / or binaries compiled on different distros often are not acceptable or usable.

They are Windows builds, so they are always acceptable.

They are Windows builds, so they are always acceptable.

I don't understand what you mean? Normally distros don't ship windows binaries.

I mean they are Windows DLLs.

@ViNi-Arco do you think you could post some information on how you managed to get better performance of dxvk with dwarf2 and lto enabled? Since I couldn't see any difference in performance when building with winelib/gcc wrappers to the binaries provided here!?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

SergeyLatyshev picture SergeyLatyshev  Â·  57Comments

shmerl picture shmerl  Â·  90Comments

doitsujin picture doitsujin  Â·  65Comments

FurretUber picture FurretUber  Â·  51Comments

doitsujin picture doitsujin  Â·  89Comments