Для работы Vulkan API на проприетарных драйверах NVIDIA требуется упаковать файл nvidia_icd.json из установщика драйверов по пути /usr/share/vulkan/icd.d Наверное логичнее всего упаковать файл в пакет nvidia_glx_common
(В ответ на комментарий №0) > Наверное логичнее всего упаковать файл в пакет nvidia_glx_common В нем не бывает ничего из NVIDIA. Меня больше интересует, можно ли nvidia_icd.json переименовать.
(В ответ на комментарий №1) > Меня больше интересует, можно ли nvidia_icd.json переименовать. Да, можно. Главное, что бы расширение было .json
Ну, я уже. http://webery.altlinux.org/task/181884
nvidia_glx_src_375.39-375.39-alt169 -> sisyphus: * Tue Apr 18 2017 Sergey V Turchin <zerg@altlinux> 375.39-alt169 - package nvidia_icd.json (ALT#33387)
К сожалению файл должен быть в единственном экземпляре. Сейчас при обновлении драйверов создаётся ещё 1 файл. При этом всё перестаёт работать с ошибкой инициализации (как в игрушках, например в Dota 2, так и при проверке через консольный vulkaninfo). Проблема точно в нескольких версиях этого файла, т.к. если удалить все предыдущие драйвера и создать копию файла с другим именем - точно такая же ошибка инициализации... Может стоит сделать по примеру файла libGL.so как в самих драйверах? Т.е. хранить где-то в отдельной папке для каждой версии драйвера (где он есть), а /usr/share/vulkan/icd.d/nvidia_icd.json будет тупо симлинком на нужную версию?
(В ответ на комментарий №5) > Может стоит сделать по примеру файла libGL.so как в самих драйверах? По возможности избегаю этого. Только в крайнем случае, если вариантов не будет.
Ну тогда может стоит либо: 1) при установке нового драйвера проверять, что если файл есть, то удалять, а новый будет уже из пакета. Хотя наверное способ очень костыльный 2) перенести его всё же в nvidia_glx_common (он же всегда в единственном экземпляре). Чёт больше ничего в голову не приходит даже.
(В ответ на комментарий №5) > К сожалению файл должен быть в единственном экземпляре. Сейчас при обновлении > драйверов создаётся ещё 1 файл. При этом всё перестаёт работать с ошибкой > инициализации (как в игрушках, например в Dota 2, так и при проверке через > консольный vulkaninfo Как увидеть? $ rpm -qf `which vulkaninfo` vulkan-1.0.37-alt0.3.x86_64
(В ответ на комментарий №7) > 1) при установке нового драйвера проверять, что если файл есть, то удалять, а > новый будет уже из пакета. Хотя наверное способ очень костыльный Добавлять новые виды костылей нет смысла. > 2) перенести его всё же в nvidia_glx_common (он же всегда в единственном > экземпляре). Уже отвечал в #1
> Как увидеть? > $ rpm -qf `which vulkaninfo` > vulkan-1.0.37-alt0.3.x86_64 Установить пакет vulkan, nvidia_glx_375.39 и nvidia_glx_375.66 Далее в консоли vulkaninfo Ну или в стиме поставить Dota 2 (она бесплатная) и в параметрах запуска написать "-Vulkan" (без кавычек)
Хотя 2 драйвера можно и не ставить, достаточно только последнего скажем, затем в /usr/share/vulkan/icd.d создать копию 375.66_nvidia_icd.json с другим именем.
(В ответ на комментарий №10) > Установить пакет vulkan, nvidia_glx_375.39 и nvidia_glx_375.66 $ rpm -qf /usr/share/vulkan/icd.d/* nvidia_glx_375.39-375.39-alt169.x86_64 nvidia_glx_375.66-375.66-alt170.x86_64 $ > Далее в консоли vulkaninfo Что плохого искать в портянке, которую он выдает?
> Что плохого искать в портянке, которую он выдает? Странно. Должен вместо портянки после указания списка всех найденных .json выдавать VK_ERROR_INITIALIZATION_FAILED
Если выдаёт портянку - значит всё работает. Может только для GTX 1070 такой прикол...
(В ответ на комментарий №14) > Если выдаёт портянку - значит всё работает. Может только для GTX 1070 такой > прикол... Или vulkan другой.
(В ответ на комментарий №15) > Или vulkan другой. Точно, у меня же из своего (уже удалённого) пакета. Тогда поэкспериментирую (благо есть ещё 2-й комп, там правда тоже 1070, но всё же).
Не, не работает: [nenderus@nenderus-pc ~]$ vulkaninfo =========== VULKAN INFO =========== Vulkan API Version: 1.0.37 INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_core_validation.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_threading.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_object_tracker.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_parameter_validation.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_swapchain.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_unique_objects.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_image.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_core_validation.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_threading.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_object_tracker.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_parameter_validation.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_swapchain.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_unique_objects.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_image.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /home/nenderus/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /home/nenderus/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/icd.d/375.66_nvidia_icd.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/icd.d/375.39_nvidia_icd.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/icd.d/375.66_nvidia_icd.json, version "1.0.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/icd.d/375.39_nvidia_icd.json, version "1.0.0" Instance Extensions: ==================== Instance Extensions count = 5 VK_KHR_surface : extension revision 25 VK_KHR_xcb_surface : extension revision 6 VK_KHR_xlib_surface : extension revision 6 VK_EXT_debug_report : extension revision 4 VK_NV_external_memory_capabilities : extension revision 1 /usr/src/RPM/BUILD/vulkan/demos/vulkaninfo.c:520: failed with VK_ERROR_INITIALIZATION_FAILED [nenderus@nenderus-pc ~]$ rpm -qf `which vulkaninfo` vulkan-1.0.37-alt0.3 [nenderus@nenderus-pc ~]$ rpm -qf /usr/share/vulkan/icd.d/* nvidia_glx_375.39-375.39-alt169 nvidia_glx_375.66-375.66-alt170 Видимо всё же на 1070 такое (или вообще на всей 10-й серии)...
Работает у меня на Сизифе. На p8 так же не работает(свежий nvidia, GeForce GT 610 10de:104a). Тут и Mesa может фигурировать. Нужно точную причину выяснять.
(Ответ для Денис Назаров на комментарий #0) > Для работы Vulkan API на проприетарных драйверах NVIDIA требуется упаковать > файл nvidia_icd.json из установщика драйверов по пути /usr/share/vulkan/icd.d Упакован.