felixdoerre/primus_vk

vkGetPhysicalDeviceSurfaceFormats2KHR error in vulkaninfo

zimudec opened this issue · 7 comments

I have had problems starting vulkan with the latest versions of steam-manjaro, and I had to downgrade to previous versions to avoid the problem.

Something similar has happened to me with libglvnd, where I have also had to downgrade.

I saw that when I run pvkrun vulkaninfo, it throws me the following:

ERROR: [Loader Message] Code 0 : /usr/lib32/libvulkan_intel.so: wrong ELF class: ELFCLASS32 INTEL-MESA: warning: Ivy Bridge Vulkan support is incomplete ERROR at /build/vulkan-tools/src/Vulkan-Tools-1.2.151/vulkaninfo/vulkaninfo.h:245:vkGetPhysicalDeviceSurfaceFormats2KHR failed with ERROR_INITIALIZATION_FAILED

I think it may have to do with it. I have not found anything related on the web, and I need guidance.

On my system this error is caused by the following behavior.

  • primusrun/optirun powers on the dedicated graphics card
  • vulkaninfo explicitly requests vulkan api 1.2
  • The vulkan-info speficied in the primus_vk layer-json file is 1.1
  • The loader skips the primus_vk layer
  • Now the loader directly contacts the dedicated graphics card and asks for supported surface formats
  • The nvidia driver is confused, as it is asked to talk to the primary X-Server (which runs on intel graphics) which is didn't know about before.

For me, changing the vulkan version to 1.2 in the primus_vk.json solved the problem in vulkaninfo. I didn't experience any problems with a real-world application though, so I didn't check further.

Can you try, if changing the version to 1.2here helps you?

I also had this problem and changing the version to 1.2 in /usr/share/vulkan/implicit_layer.d/primus_vk.json worked for me. Without this change DXVK with WINE did not work.

Strange, I am running several wine/dxvk applications without problem. At least on master, dxvk currently only requests vulkan 1.1:
https://github.com/doitsujin/dxvk/blob/ea53923406e3bfe3a6bc1e2452254773855e7ed0/src/dxvk/dxvk_instance.cpp#L122

But whatever, version 1.2 is in any case the "correct" version for primus_vk.json

I effectively made the change and vulkaninfo no longer returns an error.

However, even though you have made that change, the latest version of steam-manjaro (1.0.0.66-1) still shows an error when trying to run vulkan:

PrimusVK: Searching for display GPU:
PrimusVK: 0x56731a60: 
PrimusVK: Got integrated gpu!
PrimusVK: Device: Intel(R) HD Graphics 4000 (IVB GT2)
PrimusVK:   Type: 1
PrimusVK: Searching for render GPU:
PrimusVK: 0x56731a60.
PrimusVK: No device for the rendering GPU found. Is the correct driver installed?
PrimusVK: VK_ICD_FILENAMES not set
vkCreateInstance failed with error -3
BInit - Unable to initialize Vulkan!
[0929/203723.960952:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
[0929/203724.054021:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
[0929/203724.172321:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
Installing breakpad exception handler for appid(steam)/version(1599174997)

I go back to the previous version (1.0.0.61-7) and pvkrun with vulkan, steam and optimus works without problems.

I'm going to open a new issue, as it seems to be a different error.

So this issue is solved then?

yes, the vulkaninfo command error is fixed!

On my system this error is caused by the following behavior.

  • primusrun/optirun powers on the dedicated graphics card
  • vulkaninfo explicitly requests vulkan api 1.2
  • The vulkan-info speficied in the primus_vk layer-json file is 1.1
  • The loader skips the primus_vk layer
  • Now the loader directly contacts the dedicated graphics card and asks for supported surface formats
  • The nvidia driver is confused, as it is asked to talk to the primary X-Server (which runs on intel graphics) which is didn't know about before.

For me, changing the vulkan version to 1.2 in the primus_vk.json solved the problem in vulkaninfo. I didn't experience any problems with a real-world application though, so I didn't check further.

Can you try, if changing the version to 1.2here helps you?

Thank you so much, this fixed it for me as well!!!