doitsujin / dxvk

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

"Failed to query surface formats" followed by "Failed to create presenter or back buffer" errors on all games tested. #758

Closed VincentGuinaudeau closed 5 years ago

VincentGuinaudeau commented 5 years ago

I feel like this issue is not dxvk's fault, but after a day of installing additional packages, swapping between different version of wine, nvidia driver and dxvk, the only way I managed to launch a game was by turning off dxvk. And since google failed me on this one, posting the problem here seemed the best thing to do.

Also some context, I was able to run games throught DXVK on this very same hardware 6 monts ago. But since them I wiped the OS and bumped to the new version of Ubuntu, and that is only now that I tried to play some windows game again and hit this blocking point.

The issue

For every 3D game I tried with DXVK, I wasn't able to launch the launcher / game. Deactivating DXVK make the game run but obviously the performance isn't great. Going through the logs, I noticed every game had the same error in the dxgi.log file. Googling those error did turn up some advice from this repository but none worked (setting DXVK_FAKE_DX10_SUPPORT to 1 and VK_ICD_FILENAMES: to the vulkan file for the discrete card).

Also I can play some 2D games through proton on steam, mainly "Into the breach" and "Heat signature", which I guess don't use directX, so DXVK isn't loaded.

Software information

Games (again, this is all the 3D games I tried to run on this computer):

System information

Apitrace file(s)

Log files (from warframe lutris, but the errors are the same on the others games)

If you need additional information I'll be happy to oblige.

doitsujin commented 5 years ago

I'm not entirely sure but afaik the combination of Vulkan and PRIME might not work on Nvidia GPUs, so you're out of luck for now. The issue here is that Vulkan itself works on your Nvidia card, but it cannot render to a window.

VincentGuinaudeau commented 5 years ago

Thanks for the quick reaction. I wasn't expecting that on a week-end.

I don't use any software other than the nvidia driver if that is what you are thinking about. no bumblebee, bbswitch or prime-select.

When a was talking about prime, this was only to say that I made sure to switch to the dedicated card, and turn on the prime synchronization (vsync all the way between the dedicated card to the screen).

Also, as I mentioned above, I was able to play Overwatch and Titanfall on Ubuntu 16.04 six month prior with roughly the same configuration. I just can't pin-point what is different here.

VincentGuinaudeau commented 5 years ago

Also, would that mean that I can't use any vulkan application ? Event natively ?

I'm installing Dota 2 to make the test, but looking of a quicker way to do that.

Leopard1907 commented 5 years ago

I'm on Mint 18.3 with Gtx 1050 and Intel HD combo. DXVK and other Vulkan games ( RoTR , DOOM etc ) works for me.

Testing with Dota2 is a good start but i think you might be missing some Vulkan libs on your setup.

Try that ;

sudo apt-get install libvulkan1 sudo apt-get install libvulkan1:i386 sudo apt-get install vulkan-utils

VincentGuinaudeau commented 5 years ago

So Dota 2 do start, even with the -vulkan option (I didn't push further than the menu).

However, I seem to be missing the vulkan-utils package :

$ sudo apt install vulkan-utils
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 vulkan-utils : Depends: vulkan-tools but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

...

The following information may help to resolve the situation:

# grasshopper noise

Well, time for a deep dive in dependency hell...

Leopard1907 commented 5 years ago

Vulkan-utils is not essential afaik , you can skip that.

libvulkan parts were important.

VincentGuinaudeau commented 5 years ago

Ok. So this get use back to square one, since I already had those two packages.

I trying to get my hand on some Vulkan demos to be sure that Vulkan does run on my system.

Leopard1907 commented 5 years ago

I wonder about something , can you boot any DXVK using title on Intel GPU?

VincentGuinaudeau commented 5 years ago

Hummm... So apparently I talked too fast. In the Options, Dota 2 report running on OpenGl, despite the use of the -vulkan parameter.

screenshot from 2018-11-10 20-37-52

So this does point to a borked vulkan install. I'm gonna try to reinstall some packages, but if anyone as a better idea as to what could be the cause or what to target I'm listening.

VincentGuinaudeau commented 5 years ago

@Leopard1907 I turn off the nvidia card, rebooted and launched Warframe.

The game does launch, but DXVK report a failure to create the vulkan Instance.

DxvkInstance::createInstance: Failed to create Vulkan instance

So it definitly sound like a something is missing in my vulkan installation. I'll start digging.

PS : Fun fact, the nvidia settings refuse to start, because the driver didn't loaded. Gess I'll try reinstalling the driver.

doitsujin commented 5 years ago

Do you have the Vulkan driver for your Intel GPU installed? Not sure if that is needed for PRIME though.

Leopard1907 commented 5 years ago

Yep , it shows you are missing something.

Also Vulkan driver needed for Mesa package though.

Can you try to use Padoka Ppa for updating it. That will automatically install missing parts for Mesa.

VincentGuinaudeau commented 5 years ago

I didn't install any mesa drivers. Should I do that along the nvidia-drivers ?

Lutris's wiki mention instaling mesa-vulkan-drivers mesa-vulkan-drivers:i386. Will this be enough ?

doitsujin commented 5 years ago

Yeah, that should work. It may cause additional issues, but might be worth trying regardless.

Leopard1907 commented 5 years ago

That is not harmful, do that.

I also have Padoka PPA on my system with graphics driver ppa and development graphics ppa since i sometimes try lightweight games on Intel chip.

VincentGuinaudeau commented 5 years ago

So after switching to the intel card I was unable to switch back. I had to do a complete reinstall of the system.

I just finished installing everything, and the situation is the same. You can find below the list of packages related to vulkan that are installed (in green) and available (in white)

image

@Leopard1907 What does this ppa provide ? newer version of mesa ? Or some other packages I should install ?

I'm not interested in using only my Intel card, mainly because I don't need the extra battery, and also after seeing what happens after switching the PRIME profile.

Anti-Ultimate commented 5 years ago

@VincentGuinaudeau There's currently a bug on Ubuntu where Vulkan cannot grab the device with nvidia-drm.modeset=1 activated (which is the default on Ubuntu)

Usually running a Vulkan utility (such as vulkaninfo) as sudo solves this issue during the current session.

VincentGuinaudeau commented 5 years ago

@Anti-Ultimate well this is not activated by default on ubuntu (at least for me), because I had to do it in order to activate PRIME synchronization. I followed this post advice to activate it, but drop the driver number to make it work.

By commenting this config line, doing a sudo update-initramfs -u and rebooting, I was able to make vulkan work apparently.

Now this isn't a perfect solution for me, because this will cause tearing in game, and I will have to rebooting each time I want to change between a vulkan game and a non vulkan game if I want to turn on vsync on the others games. This is especially important for 2D games who don't have an internal framecap and will happily run at thousands of FPS without vsync.

So I'm interrested by your workaround, but as stated above I can't install vulkan-utils, which provide vulkaninfo.

If the important part is running a vulkan app as root, could I substitute vulkaninfo for something else ? Or do you have a solution for this package problem ?

Anti-Ultimate commented 5 years ago

Basically any application which uses Vulkan should work, but I wouldn't use anything that saves configs etc.

You might still wanna fix the broken vulkan-utils install though.

VincentGuinaudeau commented 5 years ago

Found it. The vulkan-tools package is marked as a replacement for vulkan-utils, explaining why apt won't let me install vulkan-utils, since it depends on vulkan-tools so there is a conflict.

So vulkan-tools is apparently the way to go when using the graphics-drivers/ppa ppa.

And your workaround seem to work !!! running vulkaninfo as a normal user fail (core dumped) when the program start to probe the nvidia card. Running as root work, and then running as a normal user then work too !!

And low and behold, games work too :tada: ! It only seem like the rest of the windows can't be focused without causing long and repeated freezes for the whole system (even with the simplest app such as vulkan-cube) but I'll take it.

Thank everyone for your patience and dedication. And @doitsujin, you may ear this regularly, but without what you do, AAA gaming on linux would be a joke right now. Your work give more freedom of choice to millions of gamers and you should be proud of that. Keep it up :+1:.

doitsujin commented 5 years ago

Closing then, and hopefully Ubuntu can fix whatever they screwed up.