Summary: | Запаковать nvidia_icd.json для работы Vulkan API | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Денис Назаров <nenderus> |
Component: | nvidia_glx_common | Assignee: | Sergey V Turchin <zerg> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | zerg |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Денис Назаров
2017-04-17 22:55:28 MSK
(В ответ на комментарий №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 Упакован. |