Я пишу библиотеку-обертку для Vulkan для MacOS. Все шло хорошо, пока я не наткнулся на это препятствие. Есть вызов SDL_Vulkan_CreateSurface
, который должен вернуть указатель на поверхность VkSurfaceKHR. Однако возвращаемый указатель - это не адрес памяти, а номер 1. Сначала я подумал, что это может быть ошибкой в SDL, но потом я заметил, что возвращается другой вызов другого API Vulkan. Я надеюсь, что это то, что я могу исправить с моей стороны. Это вывод:
1== CREATE VULKAN INSTANCE
Enabling extensions:
VK_KHR_surface
VK_MVK_macos_surface
===
2== CREATE PHYSICAL DEVICE
Created GPU (Physical device): 0x00007fe23b81e380
3== CREATE SURFACE (Metal->MoltenVK)
Created Surface: 0x0000000000000001
4== CREATE DEVICE
Chosen queue Family is 0
Created Device: 0x00007fe23c017a10
5== CREATE COMMAND POOL
Created Command Pool: 0x0000000000000002
6== CREATE COMMAND BUFFER
Created Command Buffer: 0x00007fe23a4d2bd0
7== CREATE SWAPCHAIN
Segmentation fault: 11
Ответственная функция такова:
func createVulkanSurface() throws -> Surface {
var surface = VkSurfaceKHR(bitPattern: 0)
if SDL_Vulkan_CreateSurface(window, self.instance!.pointer, &surface) != SDL_TRUE {
throw lastSDLError()
}
return Surface(instance: self.instance!, surface: surface!)
}
Код здесь: https://github.com/alexanderuv/vulkanSwift
Конкретный код выше здесь: https://github.com/alexanderuv/vulkanSwift/blob/master/Sources/SwiftSDL2/Window.swift#L198
Любая помощь будет оценена!