Неисправный драйвер vulkan аварийно завершает работу программы при запросе возможностей устройства

#c #linux #graphics #driver #vulkan

Вопрос:

Кажется, у меня установлено два драйвера.

     driverID           = DRIVER_ID_MESA_RADV
    driverID           = DRIVER_ID_MESA_LLVMPIPE
 

В состоянии по умолчанию, в котором находится моя машина при загрузке, моя программа переходит в следующую операцию:

physical_device.getQueueFamilyProperties(); (Я использую заголовок hpp)

Однако, если перед запуском моей программы я выполняю свою export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json программу без проблем.

Похоже, что реализация lavapipe приводит к сбою программы, тем более что vulkaninfo показывает это предупреждение:

 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
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
 

Однако vkcube работает нормально во всех случаях. Есть ли способ выбрать драйвер/загрузчик в самой программе? т. е. не нужно менять параметр env?

Комментарии:

1. Лавапайп, по-видимому, не работает. Почему бы просто не использовать VkPhysicalDevice то, что вы хотите использовать. Это программный способ сделать это…

2. Технически я это делаю. Однако я делаю это так, чтобы запрашивать у устройств возможности (например, сколько очередей он поддерживает)… Я назначаю оценку и выбираю ту, у которой лучший результат. Проблема в том, что lavapipe выходит из строя, когда я пытаюсь вызвать любое устройство, запрашивающее возможности.

3. Вы также можете просто установить переменную env программно, как и раньше vkCreateInstance .

4. Хотя, возможно, вы захотите просто исправить свою установку. Почему у вас 32-разрядные драйверы на 64-разрядной ОС.

5. @krOoze Я не уверен, что это пограничная нетронутая установка Ubuntu hirsute. Я установил только несколько программ, таких как vs code. Не устанавливал новые драйверы или что-то в этом роде.