Hi All
My first post! Greetings! 1 week into Linux and I´m a mixture of “oh cool you can do that!!!” and “I´m in pain…”
the TL,DR version:
So my question is - How do I enable the automatic loading of a driver that supports software implementation (as opposed to GPU Implementation) of the Vulkan API for applications that need it?
The background:
Ultimately, I need to make a windows audio plugin work in Wine called Spitfire BBCSO Discover. Now, on Mint Cinnemon, it runs beautifully on my system. But to make it run I had to install, DXVK, a common requirement for windows plugins in Wine. But because I want a leaner setup, and want to take advantage of kernal optimisations with a locally built Wine-TKG staging package, I want to run it all in EndeavourOS.
My [https://0x0.st/Hha-.txt](https://inxi output is here. )
Running Wine TkG (staging) 8.21
The problem is that because my NVidia GPU (GeForce 210) is super old it doesn´t support Vulkan and so when running the plugin in wine it crashes out with
info: Game: Spitfire Audio.exe
info: DXVK: v1.7.3
info: Built-in extension providers:
info: Win32 WSI
info: OpenVR
warn: OpenVR: Failed to locate module
info: Required Vulkan extension VK_KHR_surface not supported
err: DxvkInstance: Failed to create instance
When I run vulkaninfo I get a message saying no supported device etc. To Be expected as I don´t have the hardware.
So how does it work in mint with the same hardware? Well I noticed that when run on my same hardware in Mint (not EndeavourOs) vulkaninfo outputs among other things:
Layers: count = 3
=================
VK_LAYER_INTEL_nullhw (INTEL NULL HW) Vulkan version 1.1.73, layer version 1:
Layer Extensions: count = 0
Devices: count = 1
GPU id = 0 (llvmpipe (LLVM 15.0.7, 128 bits))
Layer-Device Extensions: count = 0
VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.3.211, layer version 1:
Layer Extensions: count = 0
Devices: count = 1
GPU id = 0 (llvmpipe (LLVM 15.0.7, 128 bits))
Layer-Device Extensions: count = 0
VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.3.211, layer version 1:
Layer Extensions: count = 0
Devices: count = 1
GPU id = 0 (llvmpipe (LLVM 15.0.7, 128 bits))
Layer-Device Extensions: count = 0
Presentable Surfaces:
=====================
GPU id : 0 (llvmpipe (LLVM 15.0.7, 128 bits)):
Surface types: count = 2
VK_KHR_xcb_surface
VK_KHR_xlib_surface
Formats: count = 2
SurfaceFormat[0]:
format = FORMAT_B8G8R8A8_SRGB
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
SurfaceFormat[1]:
format = FORMAT_B8G8R8A8_UNORM
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
Present Modes: count = 4
PRESENT_MODE_IMMEDIATE_KHR
PRESENT_MODE_MAILBOX_KHR
PRESENT_MODE_FIFO_KHR
PRESENT_MODE_FIFO_RELAXED_KHR
VkSurfaceCapabilitiesKHR:
-------------------------
minImageCount = 3
maxImageCount = 0
currentExtent:
width = 256
height = 256
minImageExtent:
width = 256
height = 256
maxImageExtent:
width = 256
height = 256
maxImageArrayLayers = 1
supportedTransforms: count = 1
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
supportedCompositeAlpha: count = 2
COMPOSITE_ALPHA_OPAQUE_BIT_KHR
COMPOSITE_ALPHA_INHERIT_BIT_KHR
supportedUsageFlags: count = 6
IMAGE_USAGE_TRANSFER_SRC_BIT
IMAGE_USAGE_TRANSFER_DST_BIT
IMAGE_USAGE_SAMPLED_BIT
IMAGE_USAGE_STORAGE_BIT
IMAGE_USAGE_COLOR_ATTACHMENT_BIT
IMAGE_USAGE_INPUT_ATTACHMENT_BIT
VkSurfaceCapabilities2EXT:
--------------------------
supportedSurfaceCounters:
None
VkSurfaceProtectedCapabilitiesKHR:
----------------------------------
supportsProtected = false
I also notice that in Mint, nvidiafb is included as a driver for the Nvidia card as well as nouveau.
So whatever is configured in Mint is enabling a Vulkan capable driver to run on my system. LLVMPipe showing in the vulkaninfo suggests a software implementation as no GPU´s are listed. It would not be very performant, but I don´t care - it would allow a simple plugin to load which I rely on.
So my question is - How do I get the same result in EndeavourOs? How do I enable the automatic loading of a driver that supports software implementation (as opposed to GPU Implementation) of the Vulkan API for applications that need it?
This is a long post, I hope it´s OK.
Thank you