> Вот что пишет автор wlroots в Sway версии 1.5:
> If you are using the Nvidia proprietary driver for any reason, you
> have two choices: ))
Это может всего лишь означать его нежелание разбираться.
Я не говорю, что нвидия белые и пушистые - они знатно поиздевались над сообществом со своим EGLStreams. Но говорить, что оно вообще не работает тоже нельзя..
> Утилита выводит вообще всё, и NVidia достаточно поддерживать VK_KHR_xcb_surface, что бы
> оказаться в выводе.
Я всего лишь показываю, как в PRIME задавать ГПУ по умолчанию. В т.ч. для vulkan. Это работает что в простом приложении типа vkcube, что в более хитрых - в зависимости от переменной менятся GPU и для opengl, и для vulkan приложений. Конечно, бывают те, которые позволяют задать GPU явно.
> Скорее, превильнее смотреть, поддерживает ли конкретный GPU требуемый тип поверхности
> (Surface type = VK_KHR_wayland_surface). Заодно, поддерживается ли презентация:
> vulkaninfo | egrep -C3 'queue|resent|wayland_surface'
Я и для интела не вижу такой поверхности, если запускать из под X11. Если из под wayland.. то vulkaninfo падает ))
> Это расширение NVidia. Когда задана переменная окружения, загружается прослойка VK_LAYER_NV_optimus.
Это понятно. Им пришлось внедрять свое тк кроме них над dual graphics под линуксом никто особо не работал..
> сами авторы: "большинство приложенй используют первый попавшийся GPU" (most Vulkan applications
> will use the first GPU reported by Vulkan).
Ага
> Сам же Vulkan позвляет (и это одна из целей создания) выбрать для
> построения сцены один графроцессор, а для презентации - другой, при этом
> не обязывает производителя оборудования совмещать обе эти функции в едином устройстве.
> Тот код, где происходит падение, ищет устройство сочетающее в себе "Графические
> операции" и "Вывод изображения". И падает при проверке, поддерживает ли nvidia
> презентацию.
Ок. Вероятно, что-то не так на нвидии в комбинации wayland+vulkan. wayland+OpenGL можно, vulkan можно, но в комбинации падает.
> Полагаю, быстрее я добавлю поддержку XCB, она решит и запуск у остальных
> под Иксами, и позволит локализовать данный крах, проверив гипотезу.
Под иксами с vulkan + nvidia ничего падать не будет, я полагаю. Но спасибо за желание разобраться!
> EGL (и gl renderer) не используется, это вообще другое -- там достаточно
> вызвать eglCreateWindowSurface() https://jan.newmarch.name/Wayland/EGL/
> а в Vulkan вся инициализация реализуется приложением.
да-да, я всего лишь показываю, что weston использует GL Rendeder при запуске на нвидии
> в приложении выполнены.
> Подозрительный 3й параметр - surface типа VkSurfaceKHR - описатель поверхности Vulkan,
> получается из поверхности Wayland. То есть где-то внутри сохраняется указатель на
> последнюю. В случае Nvidia там NULL. И vkAcquireNextImageKHR() тоже относится к
> стадии презентации, т.е. у краха в случае запуска в Weston на
> Nvidia, похоже, аналогичная причина.
> Возможно, валидатор что-то покажет (в Gentoo это пакет vulkan-layers, в остальных должно
> быть что-то похожее). fuxhunt_dbg подхватывет прослойку, если она установлена в сиcтеме.
Поставил. Подхватило. Но ничего лучше не вывело, просто еще функция в трейсе. Дебагинфо к вулкану и валидаторам стоит, но..
#0 0x00007fffdf55e353 in ?? () from /lib64/libnvidia-glcore.so.450.66
No symbol table info available.
#1 0x00007fffdf55eea6 in ?? () from /lib64/libnvidia-glcore.so.450.66
No symbol table info available.
#2 0x00007fffdda95b30 in vulkan_layer_chassis::GetPhysicalDeviceSurfaceSupportKHR () at layers/generated/chassis.cpp:4890
No locals.
#3 0x0000000000403d2c in select_gpu (vk=0x8578f0) at src/vulkan.c:234
gfx_q = true
presentation = 0
i = 0
num_qf = 3
props = 0x98dcb0
d = 0
devs = 0x98dbb0
inv = 4294967295
num_dev = 2
r = VK_SUCCESS
#4 0x0000000000406c77 in vk_window_create (display=0x440ad0, surface=0x85a500, width=800, height=600, vk_context=0x7fffffffd310)
at src/vulkan.c:1107
vk = 0x8578f0
#5 0x000000000040aaa0 in window_create (window=0x7fffffffd2e0) at src/wayland_window.c:899
__PRETTY_FUNCTION__ = "window_create"