Bug 33387 - Запаковать nvidia_icd.json для работы Vulkan API
Summary: Запаковать nvidia_icd.json для работы Vulkan API
Status: REOPENED
Alias: None
Product: Sisyphus
Classification: Development
Component: nvidia_glx_common (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Sergey V Turchin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-04-17 22:55 MSK by Денис Назаров
Modified: 2017-05-16 10:16 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Денис Назаров 2017-04-17 22:55:28 MSK
Для работы Vulkan API на проприетарных драйверах NVIDIA требуется упаковать файл nvidia_icd.json из установщика драйверов по пути /usr/share/vulkan/icd.d

Наверное логичнее всего упаковать файл в пакет nvidia_glx_common
Comment 1 Sergey V Turchin 2017-04-18 14:18:08 MSK
(В ответ на комментарий №0)
> Наверное логичнее всего упаковать файл в пакет nvidia_glx_common
В нем не бывает ничего из NVIDIA.

Меня больше интересует, можно ли nvidia_icd.json переименовать.
Comment 2 Денис Назаров 2017-04-18 14:41:11 MSK
(В ответ на комментарий №1)
> Меня больше интересует, можно ли nvidia_icd.json переименовать.
Да, можно. Главное, что бы расширение было .json
Comment 3 Sergey V Turchin 2017-04-18 15:54:25 MSK
Ну, я уже. http://webery.altlinux.org/task/181884
Comment 4 Repository Robot 2017-04-18 21:21:20 MSK
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)
Comment 5 Денис Назаров 2017-05-12 11:11:31 MSK
К сожалению файл должен быть в единственном экземпляре. Сейчас при обновлении драйверов создаётся ещё 1 файл. При этом всё перестаёт работать с ошибкой инициализации (как в игрушках, например в Dota 2, так и при проверке через консольный vulkaninfo). Проблема точно в нескольких версиях этого файла, т.к. если удалить все предыдущие драйвера и создать копию файла с другим именем - точно такая же ошибка инициализации...

Может стоит сделать по примеру файла libGL.so как в самих драйверах? Т.е. хранить где-то в отдельной папке для каждой версии драйвера (где он есть), а /usr/share/vulkan/icd.d/nvidia_icd.json будет тупо симлинком на нужную версию?
Comment 6 Sergey V Turchin 2017-05-12 11:16:44 MSK
(В ответ на комментарий №5)
> Может стоит сделать по примеру файла libGL.so как в самих драйверах?
По возможности избегаю этого. Только в крайнем случае, если вариантов не будет.
Comment 7 Денис Назаров 2017-05-12 11:19:43 MSK
Ну тогда может стоит либо:

1) при установке нового драйвера проверять, что если файл есть, то удалять, а новый будет уже из пакета. Хотя наверное способ очень костыльный

2) перенести его всё же в nvidia_glx_common (он же всегда в единственном экземпляре).

Чёт больше ничего в голову не приходит даже.
Comment 8 Sergey V Turchin 2017-05-12 11:20:36 MSK
(В ответ на комментарий №5)
> К сожалению файл должен быть в единственном экземпляре. Сейчас при обновлении
> драйверов создаётся ещё 1 файл. При этом всё перестаёт работать с ошибкой
> инициализации (как в игрушках, например в Dota 2, так и при проверке через
> консольный vulkaninfo
Как увидеть?
$ rpm -qf `which vulkaninfo`
vulkan-1.0.37-alt0.3.x86_64
Comment 9 Sergey V Turchin 2017-05-12 11:22:12 MSK
(В ответ на комментарий №7)
> 1) при установке нового драйвера проверять, что если файл есть, то удалять, а
> новый будет уже из пакета. Хотя наверное способ очень костыльный
Добавлять новые виды костылей нет смысла.

> 2) перенести его всё же в nvidia_glx_common (он же всегда в единственном
> экземпляре).
Уже отвечал в #1
Comment 10 Денис Назаров 2017-05-12 11:24:48 MSK
> Как увидеть?
> $ 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" (без кавычек)
Comment 11 Денис Назаров 2017-05-12 11:27:28 MSK
Хотя 2 драйвера можно и не ставить, достаточно только последнего скажем, затем в /usr/share/vulkan/icd.d создать копию 375.66_nvidia_icd.json с другим именем.
Comment 12 Sergey V Turchin 2017-05-12 11:31:25 MSK
(В ответ на комментарий №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
Что плохого искать в портянке, которую он выдает?
Comment 13 Денис Назаров 2017-05-12 11:33:38 MSK
> Что плохого искать в портянке, которую он выдает?
Странно. Должен вместо портянки после указания списка всех найденных .json выдавать VK_ERROR_INITIALIZATION_FAILED
Comment 14 Денис Назаров 2017-05-12 11:35:45 MSK
Если выдаёт портянку - значит всё работает. Может только для GTX 1070 такой прикол...
Comment 15 Sergey V Turchin 2017-05-12 11:38:22 MSK
(В ответ на комментарий №14)
> Если выдаёт портянку - значит всё работает. Может только для GTX 1070 такой
> прикол...
Или vulkan другой.
Comment 16 Денис Назаров 2017-05-12 11:41:48 MSK
(В ответ на комментарий №15)
> Или vulkan другой.
Точно, у меня же из своего (уже удалённого) пакета. Тогда поэкспериментирую (благо есть ещё 2-й комп, там правда тоже 1070, но всё же).
Comment 17 Денис Назаров 2017-05-12 21:12:18 MSK
Не, не работает:

[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-й серии)...
Comment 18 Sergey V Turchin 2017-05-16 10:16:44 MSK
Работает у меня на Сизифе.
На p8 так же не работает(свежий nvidia, GeForce GT 610 10de:104a).
Тут и Mesa может фигурировать. Нужно точную причину выяснять.