Я нахожусь в процессе выполнения Ульдана, учебники по вулкану и я столкнулся с этой проблемой, особенно с vkGetPhysicalDeviceSurfaceFormatsKHR функция. В документации сказано, что если аргумент pSurfaceFormats равен NULL, он сообщит, сколько форматов поверхности фактически доступно в указателе pSurfaceFormatCount.
Здесь моя проблема. Она вообще не касается целочисленного указателя.
uint NumFormats = 0;
res = vkGetPhysicalDeviceSurfaceFormatsKHR(PhysDev, Surface, &NumFormats, NULL);
if(res != VK_SUCCESS) {
LIFE_ERROR("vkGetPhysicalDeviceSurfaceFormatsKHR error: %d\n", res);
assert(0);
}
assert(NumFormats > 0);
( assert (NumFormats> 0) не работает) Я использую Linux с драйверами nvidia, и я почти уверен, что vulkan API может правильно видеть мой gpu, так как мой вывод такой:
Found 6 extensions
Instance extension 0 - VK_KHR_surface
Instance extension 1 - VK_KHR_xcb_surface
Instance extension 2 - VK_KHR_xlib_surface
Instance extension 3 - VK_KHR_wayland_surface
Instance extension 4 - VK_EXT_debug_report
Instance extension 5 - VK_NV_external_memory_capabilities
Surface created
Num physical devices 1
Device name: GTX 980 Ti
API version: 1.0.24
Num of family queues: 2
....(assert failes)
Задача решена. я смотрел на этот ответ и понял, что я забыл инициализировать свое окно xcb, прежде чем попытаться проверить, какие форматы поверхности и возможности были доступны.
Других решений пока нет …