Я пытаюсь запустить Vulkan под X11.
Я (очевидно) успешно создал экземпляр, устройство и поверхность, и несколько вызовов, относящихся к поверхности, также успешно выполняются и даже возвращают разумные значения (например, vkGetPhysicalDeviceSurfaceFormatsKHR
возвращает два формата). Тем не менее, когда я звоню vkGetPhysicalDeviceSurfaceCapabilitiesKHR
Я получаю следующее:
X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
Major opcode of failed request: 14 (X_GetGeometry)
Resource id in failed request: 0x5800009
Serial number of failed request: 42
Current serial number in output stream: 42
Окно X11 0x5800009
, как указано в ошибке. Я использую Vulkan SDK 1.0.5 и драйверы Nvidia 364.12 (если это актуально).
На предчувствие, что Вулкан что-то спрашивал о Window
что еще не было создано, я положил XSync(<display>, false)
позвоните до этого, и это, кажется, решило проблему.
Я не уверен, требуется ли это для правильной работы (я не эксперт X11), или это проблема с самим Vulkan. Если у кого-то есть лучшее объяснение, я бы с удовольствием его услышал.
У меня была такая же ошибка в Linux с XCB, и я решил ее (с помощью ответа MuertoExcobito), вызвав xcb_flush после создания окна.