KyleMayes / vulkanalia

Vulkan bindings for Rust.
Apache License 2.0
267 stars 30 forks source link

Ubuntu 24.04: validation layer installation issue and solution #292

Open shampoofactory opened 1 month ago

shampoofactory commented 1 month ago

OS: Ubuntu 24.04 LTS

vin@zen:~$ uname --all
Linux zen 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

GPU:

vin@zen:~$ vkcube
Selected GPU 0: AMD Radeon RX 6650 XT (RADV NAVI23), type: DiscreteGpu

'vkcube' is working.

Problem:

Unable to install validation layers using the tutorial instructions: Development Environment > Vulkan SDK > Linux.

vin@zen:~$ sudo apt install vulkan-validationlayers-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package vulkan-validationlayers-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  vulkan-utility-libraries-dev

E: Package 'vulkan-validationlayers-dev' has no installation candidate

Installing the replacement package 'vulkan-utility-libraries-dev' does not help:

vin@zen:~$ sudo apt install vulkan-utility-libraries-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  vulkan-utility-libraries-dev
0 upgraded, 1 newly installed, 0 to remove and 193 not upgraded.
Need to get 159 kB of archives.
After this operation, 1,398 kB of additional disk space will be used.
Get:1 http://gb.archive.ubuntu.com/ubuntu noble/universe amd64 vulkan-utility-libraries-dev amd64 1.3.275.0-1 [159 kB]
Fetched 159 kB in 0s (934 kB/s)                      
Selecting previously unselected package vulkan-utility-libraries-dev.
(Reading database ... 225185 files and directories currently installed.)
Preparing to unpack .../vulkan-utility-libraries-dev_1.3.275.0-1_amd64.deb ...
Unpacking vulkan-utility-libraries-dev (1.3.275.0-1) ...
Setting up vulkan-utility-libraries-dev (1.3.275.0-1) ...

No validation layers:

vin@zen:~$ vulkaninfo | grep LAYER
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -3 from call to vkCreateInstance in ICD /usr/lib/x86_64-linux-gnu/libvulkan_virtio.so. Skipping this driver.
VK_LAYER_INTEL_nullhw (INTEL NULL HW) Vulkan version 1.1.73, layer version 1:
VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.3.211, layer version 1:
VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.3.211, layer version 1:

A solution:

There may be a better way to do this but I managed to get it all working by using the LunarG VulkanSDK.

Step 1 (as with tutorial):

sudo apt install vulkan-tools

Step 2: Site: https://vulkan.lunarg.com/sdk/home Navigate to: Linux > Ubuntu Packages > Latest Supported Release > Ubuntu 24.04 (Noble Numbat) Read the instructions carefully and execute the given commands.

The commands at present (although they may have changed, so please check the website) are:

wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-noble.list https://packages.lunarg.com/vulkan/lunarg-vulkan-noble.list
sudo apt update
sudo apt install vulkan-sdk

We now have the necessary validation layers:

vin@zen:~$ vulkaninfo | grep LAYER
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Received return code -3 from call to vkCreateInstance in ICD /usr/lib/x86_64-linux-gnu/libvulkan_virtio.so. Skipping this driver.
VK_LAYER_INTEL_nullhw (INTEL NULL HW) Vulkan version 1.1.73, layer version 1:
VK_LAYER_KHRONOS_profiles (Khronos Profiles layer) Vulkan version 1.3.290, layer version 1:
VK_LAYER_KHRONOS_shader_object (Khronos Shader object layer) Vulkan version 1.3.290, layer version 1:
VK_LAYER_KHRONOS_synchronization2 (Khronos Synchronization2 layer) Vulkan version 1.3.290, layer version 1:
VK_LAYER_KHRONOS_validation (Khronos Validation Layer) Vulkan version 1.3.290, layer version 1:
VK_LAYER_LUNARG_api_dump (LunarG API dump layer) Vulkan version 1.3.290, layer version 2:
VK_LAYER_LUNARG_crash_diagnostic (Crash Diagnostic Layer is a crash/hang debugging tool that helps determines GPU progress in a Vulkan application.) Vulkan version 1.3.290, layer version 1:
VK_LAYER_LUNARG_gfxreconstruct (GFXReconstruct Capture Layer Version 1.0.5-unknown) Vulkan version 1.3.290, layer version 4194309:
VK_LAYER_LUNARG_monitor (Execution Monitoring Layer) Vulkan version 1.3.290, layer version 1:
VK_LAYER_LUNARG_screenshot (LunarG image capture layer) Vulkan version 1.3.290, layer version 1:
VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.3.211, layer version 1:
VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.3.211, layer version 1:

I hope this can be of some use to others.

Thank you.