You are not logged in.
I recently came across some Vulkan errors that seemed to be caused by variations in ICD file naming schemes.
And while my "fix" got the errors to go away, I'm not 100% sure I actually set things right.
So, I wanted to clarify the proper naming schemes for the ICD files and try to understand why mine were set incorrectly.
When I ran vulkaninfo, I received errors regarding intel, lvp, and radeon. There were no nvidia issues.
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_intel.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_lvp.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_radeon.so: wrong ELF class: ELFCLASS32
I took a look at the ICD config files in /usr/share/vulkan/icd.d/ and found that intel, lvp, and radeon (Errored) had two files each, with the 32/64 bit type specified in the file name. However, nvidia (No Errors) had only one file, with a simpler file name, just nvidia_icd.json.
Output of ls /usr/share/vulkan/icd.d/:
intel_icd.i686.json
intel_icd.x86_64.json
lvp_icd.i686.json
lvp_icd.x86_64.json
nvidia_icd.json
radeon_icd.i686.json
radeon_icd.x86_64.json
The contents of the json files were almost the same, the only difference being the value of the library_path field.
The simply named nvidia_icd.json file just had a file name for that field, such as FILE.so.
But the files with .i686 or .x86_64 in their names contained full paths to the corresponding .so file.
The .i686 ones had library_path set to /usr/lib/i386-linux-gnu/FILE.so
The .x86_64 ones had library_path set to /usr/lib/x86_64-linux-gnu/FILE.so
If I changed the working nvidia_icd.json file to all match the .i686/.x86_64 naming format, with absolute paths for the library_path field, then vulkaninfo would give an error for that ICD too.
And if I updated a json file to have the simple naming scheme, and just a file name for library_path, then there would be no errors for that ICD.
I tried changing the file names and format for each of the ICD files, and they all behaved in the same manner.
I'm interested in finding out what the correct naming scheme for these files is, and also why they were not consistent on my machine.
Thanks!
Offline
Welcome to archlinux forums.
No idea what the correct format for those json files is , but the library paths you mention are non-standard for archlinux.
They should be /usr/lib/libvulkan_{intel, lvp, radeon}.so for x86_64 and /usr/lib32/libvulkan_{intel, lvp, radeon}.so for multilib (32bit) .
Where did you get your mesa package from ?
Last edited by Lone_Wolf (2022-02-16 21:23:56)
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
clean chroot building not flexible enough ?
Try clean chroot manager by graysky
Offline
As soon as you mentioned
non-standard for archlinux
a possible reason came to mind.
Back when I first set up my computer with wine, lutris etc, I was very new to linux, and didn't really know what I was doing.
I was trying to get the latest and greatest graphics stuff, so I basically downloaded any graphics package I could find, including many through unofficial sources.
There were a great number of issues with the installation, and I managed to forcefully install some things that I should not have, including multiple version of vulkan and mesa packages.
I thought I had cleared all the old data out after I fixed my setup, but I must have missed some things.
I had forgotten about that installation nightmare since it was so long ago, but it seems like a pretty obvious culprit now.
Offline