doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.36k stars 862 forks source link

Crysis 1 crashes first level #783

Closed Teuwu closed 4 years ago

Teuwu commented 5 years ago

I launch the game, get to the main menu, load the first level, after the first part in the cave after the ship opens, there is the first white screen, this is the point at with the game crashes. The game runs ok in dx9 mode. This is the GOG.com version of the game, I've also tried with the version from the original DVD and same deal. yes, I do have d3d_compiler43 as an override.

These are the commands I use to start the game: export DXVK_HUD=devinfo,fps,version export WINEPREFIX=~/.PlayOnLinux/wineprefix/crysis_warhead_gog/ cd ~/.PlayOnLinux/wineprefix/crysis_warhead_gog/drive_c/GOG\ Games/Crysis/Bin64 wine Crysis.exe -dx10

I'm just not sure what I'm doing wrong, as doitsujin showed it working with the version that introduced dx10 support.

Software information

Name of the game, settings used etc. Crysis 1, everything lowest

System information

Apitrace file(s)

Log files

Crysis64_d3d10.log Crysis64_d3d11.log Crysis64_dxgi.log Crysis_d3d11.log Crysis_dxgi.log

doitsujin commented 5 years ago

Put a link here

Please actually do that.

That said, the game did was working fine a while ago, please test if it works with an older DXVK version (such as 0.70).

Teuwu commented 5 years ago

I've never done am apitrace before, please be patient, I ran the "wine apitrace.exe trace -a dxgi Crysis.exe -dx10" command, it said no C:\windows\system32\apitrace.exe, I then followed the link to https://github.com/apitrace/apitrace, I then followed a link from there to this page http://apitrace.github.io/#download, but there are a lot of links I'm not sure which one I need.

I also tried the approach to get those three x64 files from the wiki, where it talks about, if you have trouble with an apitrace put these in the folder with the game.exe. When I did that, I get this output

with dxvk dlls as biltin: " apitrace: loaded into C:\GOG Games\Crysis\Bin64\Crysis64.exe wine: Call from 0x7bc7941c to unimplemented function dxgi.dll.DXGID3D10CreateDevice, aborting apitrace: warning: caught exception 0x80000100 " with dxvk dlls as native: " apitrace: loaded into C:\GOG Games\Crysis\Bin64\Crysis64.exe info: Game: Crysis64.exe info: DXVK: v0.93 warn: OpenVR: Failed to locate module info: Enabled instance extensions: info: VK_KHR_get_physical_device_properties2 info: VK_KHR_surface info: VK_KHR_win32_surface info: GeForce GTX 970: info: Driver: 396.54.9 info: Vulkan: 1.1.85 info: Memory Heap[0]: info: Size: 4096 MiB info: Flags: 0x1 info: Memory Type[7]: Property Flags = 0x1 info: Memory Type[8]: Property Flags = 0x1 info: Memory Heap[1]: info: Size: 12029 MiB info: Flags: 0x0 info: Memory Type[0]: Property Flags = 0x0 info: Memory Type[1]: Property Flags = 0x0 info: Memory Type[2]: Property Flags = 0x0 info: Memory Type[3]: Property Flags = 0x0 info: Memory Type[4]: Property Flags = 0x0 info: Memory Type[5]: Property Flags = 0x0 info: Memory Type[6]: Property Flags = 0x0 info: Memory Type[9]: Property Flags = 0x6 info: Memory Type[10]: Property Flags = 0xe info: DXGI: NvAPI workaround enabled, reporting AMD GPU wine: Call from 0x7bc7941c to unimplemented function D3D11.DLL.D3D11CoreCreateDevice, aborting apitrace: warning: caught exception 0x80000100 "

when it says "DO NOT use DXVK together with apitrace!" does that mean to set the dxvk dlls to builtin, in the winecfg window? is there a tutorial I could follow? I've tried with each release since 0.70, and no go, so I figured I'll make an issue of it.

doitsujin commented 5 years ago

Just tested this on my AMD rig and the game runs fine, so I don't think an apitrace would be particularly useful here. Have you tried running it in a clean wine prefix with just d3dcompiler and dxvk installed (i.e. without PlayOnLinux magic)?

For future reference, you'd need the msvc-latest build of apitrace in order to record D3D10 traces.

Teuwu commented 5 years ago

I did make a new wineprefix, just now actually. The playonlinux, is just the location of the wineprefix, I did not use the playonlinux program. I made a new wineprefix, win64, installed latest dxvk, and d3dcompiler with winetricks, copied over the game folder, from the old prefix. Tried running it, same stop point. I then used winetricks to install 0.70 dxvk, and same problem.

Since it runs on AMD, is there a way I could make the game think I have an AMD system instead of Nvidia? I know there is the option in the dxvk config file I could setup, and I know I can set values in the registry to do that as well. I'll try fiddling with it.

jrugia commented 5 years ago

@Teuwu Can you please try a different Wine version with a clean prefix? Wine 3.21 fixed a possible 3.20 regression in Crysis Warhead and maybe Crysis 1 was also affected but wasn't reported.

doitsujin commented 5 years ago

Can confirm that this game hangs on my Nvidia rig with both the 396.54.09 and 415.something drivers. No idea why.

ImperatorS79 commented 5 years ago

@Teuwu Playonlinux wine builds do not have vulkan enabled. They are working on a new build system for that. So I hope you got your wine version from somewhere else (or maybe it has changed recently?).

Teuwu commented 5 years ago

@ImperatorS79 on my system setup ~/.PlayOnLinux is where I have a 1TB HDD mounted as game storage, its just LOCATION I get my wine builds from the official winehq repo, or build them myself, for crysis 1 + dxvk, I've only used the official winehq builds from their ubuntu 18.04 repo, normally staging builds.

changing the vender and device IDs in the dxvk.conf, file no change still crashes.

I tried using the winehq-devel 3.21, as I don't yet have winehq-staging-3.21 only 3.20 for staging so far with 3.21-dev, for some reason it refused to even load the 64bit binary (Could not launch main application), so I tried the 32bit version of the game it loaded to the main menu but still crashes as in my OP. I also want to say that from the then current version of wine when dxvk 0.70 was released to now, I have not yet had this game working with dxvk.

I also just tried the 390.89.0 Nvidia driver, and still no go, just crash as in OP.

The tests mentioned in this post were run from a clean wineprefix just dxvk 0.93 and d3dcompiler.

itaranto commented 5 years ago

I tested the GOG version (64 bit) with Proton 3.16-4, Proton 3.16-7 (Beta) and Wine-4.1 (Staging) + dxvk70. I also installed d3dcompiler_43 using winetricks.

It hangs in all three with dx10 mode when loading a game.

I'm using an AMD RX570 with Mesa 18.3.2

proton-3.16-4.log proton-3.16-7.log wine-4.1-staging.log

doitsujin commented 5 years ago

@itaranto your issue is that you don't have the d3dx libraries installed, use winetricks d3dx10_43 to fix that.

itaranto commented 5 years ago

@itaranto your issue is that you don't have the d3dx libraries installed, use winetricks d3dx10_43 to fix that.

That worked! Thanks!

One little detail, I first installed d3dx10_43 over the existing installation, that didn't worked. The map loaded correctly with the "Press any key to continue" button, but after I pressed that I got a black screen.

So, I re-created my prefix and installed the libraries in this order: winetricks d3dx10_43 d3dcompiler_43

And... that worked like a charm! I tested with everything at "Very High", really good FPS.

Thanks, you are awesome!

Cat-Lady commented 5 years ago

I've found that - repeatedly - installation of whole directx9 via winetricks, + manually setting up d3dcompiler_* up to version 47, is required for Crysis 1 expansions, Warhead, to work. It also affect the most popular mod on the engine, MechWarrior: Living Legends (but in the end, it works, awesomely!)

Hiradur commented 4 years ago

On my system Crysis (from GOG) hangs on startup but when I run a benchmark batch file or make it load a level directly from a batch file like so crysis.exe +map island, both the 32 bit and 64 bit binary work.

System information

EDIT: Problem was caused by calling Crysis64.exe rather than Crysis.exe. Game runs fine now.

misyltoad commented 4 years ago
  • Driver: Nvidia 430.50.0

No.

Hiradur commented 4 years ago

Not sure what you mean but that's the driver version reported by DXVK (ok, minus the "Nvidia" text). The Nvidia driver itself just says 430.50.

Teuwu commented 4 years ago

ok a lot has changed since my opening post. but I can now say that the game works. I'm currently running an RTX 2070, intel i7-9700 32gb ram system Ubuntu 19.10 NVIDIA driver version 440.36, from ubuntu nvidia driver ppa

I copied all the data from my last system to start crysis, the wineprefix reports to have DXVK version 0.93 so really old! the wine version I have setup to launch wine with is 4.12.1 (I'm assuming from winehq) also obviously old.

my libraries override from winecfg are:

d3d10 (native) d3d10_1 (native) d3d10core (native) d3d11 (native) d3dcompiler_43 (native) d3dx10_43 (native) *dxgi (native)

so I'm thinking that the addition of d3dcompiler_43 is what makes makes this game work. will follow up with more testing

i'm also running the GoG 32bit version.

Teuwu commented 4 years ago

so I started with a clean wineprefix (wine 4.21 staging) used winetricks to install dxvk and d3d10_43 used winecfg to enable virtual desktop to fix that I couldn't set the resolution right I also used the winetricks sandbox, before 1st launch copied over the game folder setting all graphical options to max and res to 1920x1080 I tried to start a new game WITHOUT d3dcompiler_43 game would load to "press any key" and then crash

I then used winetricks to install d3dcompiler_43, and the game would load fine, I quit at the scene where the people are in the airplane, before the skydive.

to test again created a clean a prefix, installed dxvk d3dx10_43 tried loading the first level, got a crash few seconds in tried 32 & 64, then I installed d3dcompiler_43

conclusion d3dcompiler_43 and d3dx10_43 are required. Closing.

AlexanderWKoenig commented 4 years ago

Hi, this issue is still present for me. Crysis.exe crashes when a level loaded and you press the key to start. The game runs fine with -dx9 argument.

I've created a clean wineprefix, executed setup_dxvk.sh install --symlink and winetricks d3dx10_43 d3dcompiler_43 But the Issue is still there.

Here are some logs: Crysis_d3d11.log Crysis_dxgi.log Game.log

Here is the terminal output: 0009:fixme:d3dcompiler:d3d10_shader_reflection_GetDesc iface 04CA8C64, desc 0032DBDC partial stub! 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 4 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x6a9cd7f0 0009:fixme:d3dcompiler:skip_dword_unknown 0x52639a1b 0009:fixme:d3dcompiler:skip_dword_unknown 0xf0a36782 0009:fixme:d3dcompiler:skip_dword_unknown 0xdf7dbb4d 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 1 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000001 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 1 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000008 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 1 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000008 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 1 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000000 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 1 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000000 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 1 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000000 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 1 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000000 0009:fixme:d3dcompiler:skip_dword_unknown Skipping 2 unknown DWORDs: 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000000 0009:fixme:d3dcompiler:skip_dword_unknown 0x00000000 0009:fixme:d3dcompiler:d3d10_shader_reflection_GetDesc iface 04CA8C64, desc 0032DAC0 partial stub! 0009:fixme:faultrep:ReportFault 0032DCE8 0x0 stub

K0bin commented 4 years ago

winetricks d3dx10_43 d3dcompiler_43

It's still using the Wine implementation of d3dcompiler so that didnt work.

AlexanderWKoenig commented 4 years ago

winetricks d3dx10_43 d3dcompiler_43

It's still using the Wine implementation of d3dcompiler so that didnt work.

What do you mean? Should i download the d3dcompiler_43.dll and put it into game dir? My wine overrides are the following: Bildschirmfoto_2020-09-22_20-42-19

K0bin commented 4 years ago

And you are sure thats the correct prefix thats also getting used for the game?

0009:fixme:d3dcompiler:skip_dword_unknown Skipping 4 unknown DWORDs: is produced by Wine's d3dcompiler.

AlexanderWKoenig commented 4 years ago

yes, im sure that i did use the correct wineprefix. Executed all in a terminal and every command had the same WINEPREFIX=/home/alex/.wine_clean prefix added

Edited: I've tested with a downloaded d3dcompiler_43.dll and it will crash while loading now, not even showing "press key to play"

TheGreatMcPain commented 4 years ago

@AlexanderWKoenig Are you using the GOG version, or the Steam version?

I had this problem with the GOG version (I think it only affected the 64bit binary), but I got it on Steam and it seems to work fine.

AlexanderWKoenig commented 4 years ago

@AlexanderWKoenig Are you using the GOG version, or the Steam version?

I had this problem with the GOG version (I think it only affected the 64bit binary), but I got it on Steam and it seems to work fine.

I've just tested the 32bit binary, and I dont know which version of the game it its. It just happened to be on my hard drive ;-)

TheGreatMcPain commented 4 years ago

I believe the Steam version only has the 32bit binary.

The GOG version has both 32bit and 64bit.

I Haven't noticed any performance differences between the two, but I think DXVK still has issues with 32bit games.

Not sure about the original physical version, or the Origin version.