felixdoerre / primus_vk

Vulkan GPU-offloading layer
BSD 2-Clause "Simplified" License
230 stars 18 forks source link

Doom 2016 under proton fails to start #44

Closed pikasalt closed 4 years ago

pikasalt commented 5 years ago

Running Manjaro. The game works under opengl, and other vulkan applications run fine. The game crashes after a black screen when running it under vulkan mode.

Game's crash log: https://pastebin.com/7AiTkeCb System log (running steam with primus-vk because lutris does that): https://pastebin.com/gS6aKxrG I've tried running steam without lutris running it under primus-vk and just setting ENABLE_PRIMUS_LAYER=1 primusrun %command% in the game's launch options, but it still gives the same result

I'm not too experienced with compiling and all that jazzy stuff, so everything I've done has just been installing primus_vk and lib32-primus_vk through pamac and setting the game to run primus-vk through lutris options.

felixdoerre commented 5 years ago

Does the game run with Vulkan on the integrated graphics alone?

pikasalt commented 5 years ago

Just tested it, and it does indeed launch when running on the igpu. Gives slightly better performance than running it with opengl on my nvidia gpu too.

Inixi commented 4 years ago

Just to acknowledge that the same happens to me, some system log:


PrimusVK: Searching for display GPU:
PrimusVK: 0x7f07c8295460: 
PrimusVK: 0x7f07c8294ec0: 
PrimusVK: 0x7f07c83a4f00: 
PrimusVK: Got integrated gpu!
PrimusVK: Device: Intel(R) HD Graphics 630 (Kaby Lake GT2)
PrimusVK:   Type: 1
PrimusVK: Searching for render GPU:
PrimusVK: 0x7f07c8295460.
PrimusVK: Got discrete gpu!
PrimusVK: Device: GeForce 940MX
PrimusVK:   Type: 2
Fossilize INFO: Overriding serialization path: "/home/ranger/.local/share/Steam/steamapps/shadercache/379720/fozpipelinesv4/steamapprun_pipeline_cache".
PrimusVK: fetching dispatch for 0x7f07c83a8430
PrimusVK: Creating display device finished!: 0
PrimusVK: fetching dispatch for 0x7f07c83a6ea0
PrimusVK: CreateDevice done
PrimusVK: Application requested 2 images.
PrimusVK: Creating Swapchain for size: 1920x1080
PrimusVK: MinImageCount: 3
PrimusVK: fetching device for: 0x7f07c83a6ea0
PrimusVK: FamilyIndexCount: 0
PrimusVK: Dev: 0x7f07c83a8430
PrimusVK: Swapchainfunc: 0x7f07c5e3c340
PrimusVK: >> Swapchain create done 0;0x7f07a4558120
PrimusVK: Image aquiring: 3
PrimusVK: Selected render mem: 9;7 display: 0
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating image: 1920x1080
PrimusVK: Creating a Swapchain thread.
PrimusVK: Count: 3
wine: Unhandled exception 0xe06d7363 in thread 40 at address 0x7b44af1c (thread 0040), starting debugger...
ERROR: ld.so: object '/home/ranger/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
>>> Adding process 113332 for game ID 379720
Unhandled exception: C++ exception(object = 0x8997390, type = 0x142ded990, base = 0x140000000) in 64-bit code (0x000000007b44af1c).
Register dump:
 rip:000000007b44af1c rsp:0000000008997200 rbp:00000000089972d0 eflags:00000206 (   - --  I   - -P- )
 rax:0000000008997220 rbx:0000000000000000 rcx:0000000008997220 rdx:0000000008997240
 rsi:0000000008997340 rdi:0000000008997260  r8:0000000000000004  r9:0000000008997320 r10:000000007bd37440
 r11:0000000146ddd990 r12:0000000000000000 r13:0000000000000001 r14:0000000008997390 r15:0000000000000007
Stack dump:
0x0000000008997200:  0000000008997220 0000ffffff000000
0x0000000008997210:  0000000000000000 0000202020000000
0x0000000008997220:  00000001e06d7363 0000000000000000
0x0000000008997230:  000000007b44af1c 0000000000000004
0x0000000008997240:  0000000019930520 0000000008997390
0x0000000008997250:  0000000142ded990 0000000140000000
0x0000000008997260:  0000000000000000 0000000000000000
0x0000000008997270:  0000000008997360 00000001422442c0
0x0000000008997280:  00000000089972d0 000000007bc68436
0x0000000008997290:  0000000000000000 2020200020002020
0x00000000089972a0:  0000202020002000 0000000000000000
0x00000000089972b0:  0000ffffff000000 0000000000011870
Backtrace:
=>0 0x000000007b44af1c RaiseException+0x6c() in kernel32 (0x00000000089972d0)
0x000000007b44af1c RaiseException+0x6c in kernel32: leaq    0xfffffffffffffff0(%rbp),%rsp
Modules:
Module  Address                 Debug info  Name (169 modules)
PE          3b400000-        3b43f000   Deferred        steam_api64
ELF         7b400000-        7b811000   Export          kernel32<elf>
  \-PE          7b420000-        7b811000   \               kernel32
ELF         7bc00000-        7bd38000   Deferred        ntdll<elf>
  \-PE          7bc20000-        7bd38000   \               ntdll
ELF         7c000000-        7c003000   Deferred        <wine-loader>
PE         140000000-       153fe8000   Deferred        doomx64vk
PE         180000000-       180064000   Deferred        bink2w64
ELF     7f07c4b20000-    7f07c4d83000   Deferred        libnvidia-fatbinaryloader.so.440.44
ELF     7f07c4d83000-    7f07c4fe9000   Deferred        libnvidia-cbl.so.440.44
ELF     7f07c4fe9000-    7f07c5c8e000   Deferred        libnvidia-glvkspirv.so.440.44
ELF     7f07c5e33000-    7f07c6049000   Deferred        steamoverlayvulkanlayer.so
ELF     7f07c6049000-    7f07c628f000   Deferred        libvklayer_steam_fossilize.so
ELF     7f07c628f000-    7f07c8000000   Deferred        libnvidia-glcore.so.440.44
ELF     7f07cc133000-    7f07cc152000   Deferred        libprimus_vk.so
ELF     7f07cc152000-    7f07cc356000   Deferred        libnvidia-tls.so.440.44
ELF     7f07cc356000-    7f07cc668000   Deferred        libglx_nvidia.so.0
ELF     7f07cc668000-    7f07cc66d000   Deferred        libnv_vulkan_wrapper.so
ELF     7f07cc66d000-    7f07cc86f000   Deferred        libxshmfence.so.1
ELF     7f07cc86f000-    7f07cc879000   Deferred        libxcb-sync.so.1
ELF     7f07cc879000-    7f07cc87e000   Deferred        libxcb-present.so.0
ELF     7f07cc87e000-    7f07cc883000   Deferred        libx11-xcb.so.1
ELF     7f07cc883000-    7f07cc895000   Deferred        libxcb-randr.so.0
ELF     7f07cc895000-    7f07cc8a5000   Deferred        libwayland-client.so.0
ELF     7f07cc8a5000-    7f07cc8ab000   Deferred        libxcb-dri3.so.0
ELF     7f07cc8ab000-    7f07cc8c0000   Deferred        libdrm.so.2
ELF     7f07cc8c0000-    7f07cd0c5000   Deferred        libvulkan_intel.so
ELF     7f07cdad7000-    7f07cdd00000   Deferred        libpng12.so.0
ELF     7f07ce3a5000-    7f07d0052000   Deferred        steamclient.so
ELF     7f07d0052000-    7f07d0372000   Deferred        lsteamclient<elf>
  \-PE      7f07d0150000-    7f07d0372000   \               lsteamclient
ELF     7f07d0372000-    7f07d0387000   Deferred        api-ms-win-core-localization-l1-2-1<elf>
  \-PE      7f07d0380000-    7f07d0387000   \               api-ms-win-core-localization-l1-2-1
ELF     7f07d0387000-    7f07d039b000   Deferred        api-ms-win-core-fibers-l1-1-1<elf>
  \-PE      7f07d0390000-    7f07d039b000   \               api-ms-win-core-fibers-l1-1-1
ELF     7f07d039b000-    7f07d03b0000   Deferred        api-ms-win-core-synch-l1-2-0<elf>
  \-PE      7f07d03a0000-    7f07d03b0000   \               api-ms-win-core-synch-l1-2-0
ELF     7f07d03b0000-    7f07d0486000   Deferred        msvcrt<elf>
  \-PE      7f07d03d0000-    7f07d0486000   \               msvcrt
ELF     7f07d0486000-    7f07d04a9000   Deferred        libgpg-error.so.0
ELF     7f07d04a9000-    7f07d05c7000   Deferred        libgcrypt.so.20
ELF     7f07d05c7000-    7f07d05e9000   Deferred        liblz4.so.1
ELF     7f07d05e9000-    7f07d0611000   Deferred        liblzma.so.5
ELF     7f07d0611000-    7f07d06b8000   Deferred        libsystemd.so.0
ELF     7f07d06b8000-    7f07d0702000   Deferred        libdbus-1.so.3
ELF     7f07d0702000-    7f07d071b000   Deferred        libresolv.so.2
ELF     7f07d071b000-    7f07d0722000   Deferred        libkeyutils.so.1
ELF     7f07d0722000-    7f07d0731000   Deferred        libkrb5support.so.0
ELF     7f07d0731000-    7f07d076b000   Deferred        libcrypt.so.1
ELF     7f07d076b000-    7f07d077f000   Deferred        libavahi-client.so.3
ELF     7f07d077f000-    7f07d078d000   Deferred        libavahi-common.so.3
ELF     7f07d078d000-    7f07d0793000   Deferred        libcom_err.so.2
ELF     7f07d0793000-    7f07d07c7000   Deferred        libk5crypto.so.3
ELF     7f07d07c7000-    7f07d08b4000   Deferred        libkrb5.so.3
ELF     7f07d08b4000-    7f07d0904000   Deferred        libgssapi_krb5.so.2
ELF     7f07d0904000-    7f07d09a0000   Deferred        libcups.so.2
ELF     7f07d09a0000-    7f07d09fb000   Deferred        libvulkan.so.1
ELF     7f07d09fb000-    7f07d0a06000   Deferred        libffi.so.6
ELF     7f07d0a06000-    7f07d0a99000   Deferred        libgmp.so.10
ELF     7f07d0a99000-    7f07d0ad2000   Deferred        libhogweed.so.5
ELF     7f07d0ad2000-    7f07d0b0c000   Deferred        libnettle.so.7
ELF     7f07d0b0c000-    7f07d0b22000   Deferred        libtasn1.so.6
ELF     7f07d0b22000-    7f07d0ca4000   Deferred        libunistring.so.2
ELF     7f07d0ca4000-    7f07d0cc5000   Deferred        libidn2.so.0
ELF     7f07d0cc5000-    7f07d0de7000   Deferred        libp11-kit.so.0
ELF     7f07d0de7000-    7f07d0fb1000   Deferred        libgnutls.so.30
ELF     7f07d0fb3000-    7f07d0fbc000   Deferred        libxfixes.so.3
ELF     7f07d0fbc000-    7f07d0fc8000   Deferred        libxcursor.so.1
ELF     7f07d0fc8000-    7f07d0fd5000   Deferred        libxrender.so.1
ELF     7f07d0fd5000-    7f07d0fe8000   Deferred        libxi.so.6
ELF     7f07d0fe8000-    7f07d0fed000   Deferred        libxcomposite.so.1
ELF     7f07d0fed000-    7f07d0ff4000   Deferred        libxxf86vm.so.1
ELF     7f07d0ff4000-    7f07d0ff9000   Deferred        libxinerama.so.1
ELF     7f07d0ff9000-    7f07d100e000   Deferred        libxext.so.6
ELF     7f07d100e000-    7f07d10b7000   Deferred        winex11<elf>
  \-PE      7f07d1020000-    7f07d10b7000   \               winex11
ELF     7f07d1147000-    7f07d1177000   Deferred        libexpat.so.1
ELF     7f07d1177000-    7f07d11bf000   Deferred        libfontconfig.so.1
ELF     7f07d11bf000-    7f07d1232000   Deferred        libpcre.so.1
ELF     7f07d1232000-    7f07d1257000   Deferred        libgraphite2.so.3
ELF     7f07d1257000-    7f07d137c000   Deferred        libglib-2.0.so.0
ELF     7f07d137c000-    7f07d1480000   Deferred        libharfbuzz.so.0
ELF     7f07d1480000-    7f07d149a000   Deferred        libz.so.1
ELF     7f07d149a000-    7f07d14d2000   Deferred        libpng16.so.16
ELF     7f07d14d2000-    7f07d14e5000   Deferred        libbz2.so.1.0
ELF     7f07d14e5000-    7f07d15b3000   Deferred        libfreetype.so.6
ELF     7f07d15b3000-    7f07d15fd000   Deferred        winspool<elf>
  \-PE      7f07d15c0000-    7f07d15fd000   \               winspool
ELF     7f07d15fd000-    7f07d167a000   Deferred        setupapi<elf>
  \-PE      7f07d1610000-    7f07d167a000   \               setupapi
ELF     7f07d167a000-    7f07d1731000   Deferred        gdiplus<elf>
  \-PE      7f07d1690000-    7f07d1731000   \               gdiplus
ELF     7f07d1731000-    7f07d1799000   Deferred        oleacc<elf>
  \-PE      7f07d1740000-    7f07d1799000   \               oleacc
ELF     7f07d1799000-    7f07d17d7000   Deferred        uxtheme<elf>
  \-PE      7f07d17a0000-    7f07d17d7000   \               uxtheme
ELF     7f07d17d7000-    7f07d17eb000   Deferred        msimg32<elf>
  \-PE      7f07d17e0000-    7f07d17eb000   \               msimg32
ELF     7f07d17eb000-    7f07d1838000   Deferred        winevulkan<elf>
  \-PE      7f07d1800000-    7f07d1838000   \               winevulkan
ELF     7f07d1838000-    7f07d1851000   Deferred        vulkan-1<elf>
  \-PE      7f07d1840000-    7f07d1851000   \               vulkan-1
ELF     7f07d1851000-    7f07d1874000   Deferred        bcrypt<elf>
  \-PE      7f07d1860000-    7f07d1874000   \               bcrypt
ELF     7f07d1874000-    7f07d1892000   Deferred        jsproxy<elf>
  \-PE      7f07d1880000-    7f07d1892000   \               jsproxy
ELF     7f07d1892000-    7f07d18d6000   Deferred        winhttp<elf>
  \-PE      7f07d18a0000-    7f07d18d6000   \               winhttp
ELF     7f07d18d6000-    7f07d1900000   Deferred        imm32<elf>
  \-PE      7f07d18e0000-    7f07d1900000   \               imm32
ELF     7f07d1900000-    7f07d194e000   Deferred        usp10<elf>
  \-PE      7f07d1910000-    7f07d194e000   \               usp10
ELF     7f07d194e000-    7f07d1aa5000   Deferred        comctl32<elf>
  \-PE      7f07d1960000-    7f07d1aa5000   \               comctl32
ELF     7f07d1aa5000-    7f07d1bfa000   Deferred        libsdl2-2.0.so.0
ELF     7f07d1bfa000-    7f07d1c57000   Deferred        dinput8<elf>
  \-PE      7f07d1c10000-    7f07d1c57000   \               dinput8
ELF     7f07d1c57000-    7f07d1c70000   Deferred        xinput1_3<elf>
  \-PE      7f07d1c60000-    7f07d1c70000   \               xinput1_3
ELF     7f07d1c70000-    7f07d1cd6000   Deferred        dbghelp<elf>
  \-PE      7f07d1c80000-    7f07d1cd6000   \               dbghelp
ELF     7f07d1cd6000-    7f07d1e4e000   Deferred        oleaut32<elf>
  \-PE      7f07d1d00000-    7f07d1e4e000   \               oleaut32
ELF     7f07d1e4e000-    7f07d1edf000   Deferred        shlwapi<elf>
  \-PE      7f07d1e60000-    7f07d1edf000   \               shlwapi
ELF     7f07d1edf000-    7f07d28e6000   Deferred        shell32<elf>
  \-PE      7f07d1f00000-    7f07d28e6000   \               shell32
ELF     7f07d28e6000-    7f07d28fa000   Deferred        psapi<elf>
  \-PE      7f07d28f0000-    7f07d28fa000   \               psapi
ELF     7f07d28fa000-    7f07d292b000   Deferred        iphlpapi<elf>
  \-PE      7f07d2900000-    7f07d292b000   \               iphlpapi
ELF     7f07d292b000-    7f07d296e000   Deferred        ws2_32<elf>
  \-PE      7f07d2930000-    7f07d296e000   \               ws2_32
ELF     7f07d296e000-    7f07d298b000   Deferred        wsock32<elf>
  \-PE      7f07d2970000-    7f07d298b000   \               wsock32
ELF     7f07d298b000-    7f07d29b9000   Deferred        msacm32<elf>
  \-PE      7f07d2990000-    7f07d29b9000   \               msacm32
ELF     7f07d29b9000-    7f07d2a52000   Deferred        rpcrt4<elf>
  \-PE      7f07d29d0000-    7f07d2a52000   \               rpcrt4
ELF     7f07d2a52000-    7f07d2bf5000   Deferred        ole32<elf>
  \-PE      7f07d2a80000-    7f07d2bf5000   \               ole32
ELF     7f07d2bf5000-    7f07d2c10000   Deferred        version<elf>
  \-PE      7f07d2c00000-    7f07d2c10000   \               version
ELF     7f07d2c10000-    7f07d2ca2000   Deferred        advapi32<elf>
  \-PE      7f07d2c20000-    7f07d2ca2000   \               advapi32
ELF     7f07d2ca2000-    7f07d2e20000   Deferred        gdi32<elf>
  \-PE      7f07d2cc0000-    7f07d2e20000   \               gdi32
ELF     7f07d2e20000-    7f07d3083000   Deferred        user32<elf>
  \-PE      7f07d2e40000-    7f07d3083000   \               user32
ELF     7f07d3183000-    7f07d3249000   Deferred        winmm<elf>
  \-PE      7f07d3190000-    7f07d3249000   \               winmm
ELF     7f07d362f000-    7f07d3643000   Deferred        libnss_files.so.2
ELF     7f07d4d1d000-    7f07d4d50000   Deferred        libglx.so.0
ELF     7f07d4d50000-    7f07d4e07000   Deferred        libgldispatch.so.0
ELF     7f07d4e8d000-    7f07d4ec5000   Deferred        libglapi.so.0
ELF     7f07d4eca000-    7f07d4ed2000   Deferred        libxdmcp.so.6
ELF     7f07d4ed2000-    7f07d4ed7000   Deferred        libxau.so.6
ELF     7f07d4ed7000-    7f07d4f01000   Deferred        libxcb.so.1
ELF     7f07d4f01000-    7f07d4f1b000   Deferred        libgcc_s.so.1
ELF     7f07d4f1b000-    7f07d505b000   Deferred        libx11.so.6
ELF     7f07d505d000-    7f07d51a3000   Deferred        libm.so.6
ELF     7f07d538d000-    7f07d5392000   Deferred        libdl.so.2
ELF     7f07d5392000-    7f07d539d000   Deferred        librt.so.1
ELF     7f07d539d000-    7f07d53e1000   Deferred        libgl.so.1
ELF     7f07d53e1000-    7f07d55a8000   Deferred        libc.so.6
ELF     7f07d55aa000-    7f07d55cc000   Deferred        libpthread.so.0
ELF     7f07d55cc000-    7f07d5972000   Export          libwine.so.1
ELF     7f07d5972000-    7f07d5baf000   Deferred        gameoverlayrenderer.so
ELF     7f07d5bb1000-    7f07d5bde000   Deferred        ld-linux-x86-64.so.2
felixdoerre commented 4 years ago

Thanks for the report. I would like to help you debug this issue, however the traces don't really provide enough useful information. The backtrace looks unrealistically short:

Backtrace:
=>0 0x000000007b44af1c RaiseException+0x6c() in kernel32 (0x00000000089972d0)
0x000000007b44af1c RaiseException+0x6c in kernel32: leaq    0xfffffffffffffff0(%rbp),%rsp

and as I don't own this game I can't debug this myself. Also it would be good to get the exception text and/or stacktrace of the thrown c++ exception that is mentioned:

Unhandled exception: C++ exception(object = 0x8997390, type = 0x142ded990, base = 0x140000000) in 64-bit code (0x000000007b44af1c).

but I can't really give detailed instructions on how to do that.

felixdoerre commented 4 years ago

I've added a fix in primus_vk version 1.4 which could theoretically also solve this issue. Could you please re-test with that version? The commit that fixes the issue is 00b7c574e. @Inixi from the stack trace it seems that you really use a 440-nvidia driver, so I believe your problem could be solved. Can you please re-test as well?

felixdoerre commented 4 years ago

So as no-one responds, I assume this issue is resolved. Please open a new issue if we need to understand this further.