>> Скорее, превильнее смотреть, поддерживает ли конкретный GPU требуемый тип поверхности
>> (Surface type = VK_KHR_wayland_surface). Заодно, поддерживается ли презентация:
>> vulkaninfo | egrep -C3 'queue|resent|wayland_surface'
> Я и для интела не вижу такой поверхности, если запускать из под
> X11. Если из под wayland.. то vulkaninfo падает )) "Ничто так не утешает, как несчастье ближнего" (с) Особенно, если падает в той же /lib64/libnvidia-glcore.so.450.66
У vulkaninfo https://github.com/KhronosGroup/Vulkan-Tools/issues/136#issu... был похожий баг на Intel HD Graphics 630 + GeForce GTX 1050 Ti. Падала так же vkGetPhysicalDeviceSurfaceSupportKHR() из-за невалидного параматра surface (Xlib surface вместо XCB). Но - в X11 и в случае Intel.
>> Полагаю, быстрее я добавлю поддержку XCB, она решит и запуск у остальных
>> под Иксами, и позволит локализовать данный крах, проверив гипотезу.
> Под иксами с vulkan + nvidia ничего падать не будет, я полагаю.
> Но спасибо за желание разобраться!
Падает примерно на таком коде (это фрагмент Mesa, )
VkResult
wsi_common_get_surface_support(struct wsi_device *wsi_device,
uint32_t queueFamilyIndex,
VkSurfaceKHR _surface,
VkBool32* pSupported)
{
ICD_FROM_HANDLE(VkIcdSurfaceBase, surface, _surface); // VkIcdSurfaceBase *surface = (VkIcdSurfaceBase*)_surface;
struct wsi_interface *iface = wsi_device->wsi[surface->platform]; return iface->get_support(surface, wsi_device,
queueFamilyIndex, pSupported);
}
_surface имеет смысл только в контексте struct wsi_device, о которой Nvidia ничего не знает. В лучшем случае реализация может проверить хендл, поискав в таблице. Но спецификация Vulkan требует валидный параметр, значит проверка не обязательна, поэтому её и нет (она вынесена в прослойку валидатора).
>[оверквотинг удален]
>> Возможно, валидатор что-то покажет (в 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
Если передаю невалидный хендл вместо surface, начинает падать, но при этом валидатор предупреждает: Invalid VkSurfaceKHR Object 0x56190d13ac00. The Vulkan spec states: surface must be a valid VkSurfaceKHR handle