2016-04-07 21 views
1

Ich versuche Vulkan unter X11 laufen zu lassen.Vulkan auf X11: vkGetPhysicalDeviceSurfaceCapabilitiesKHR Fehler

Ich habe (anscheinend) erfolgreich eine Instanz, ein Gerät und eine Oberfläche erstellt, und mehrere auf die Oberfläche bezogene Aufrufe sind ebenfalls erfolgreich und geben sogar vernünftige Werte zurück (z. B. vkGetPhysicalDeviceSurfaceFormatsKHR gibt zwei Formate zurück). Allerdings, wenn ich vkGetPhysicalDeviceSurfaceCapabilitiesKHR nennen, erhalte ich folgende:

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 

Das X11-Fenster ist 0x5800009, wie in dem Fehler verwiesen. Ich verwende Vulkan SDK 1.0.5 und Nvidia 364.12 Treiber (wenn das relevant ist).

+0

Bitte bearbeiten Sie in [mcve]. –

+3

@ColonThirtyTwo: Er ... Vulkan und "minimal" passen nicht genau zusammen. –

+0

Ja, der zum Erstellen dieser Situation erforderliche Code wäre 10 Seiten lang. Leider enthält das SDK auch keine X11-Beispiele (nur XCB). Ich bin neugieriger, wenn das ein bekanntes Problem ist, oder es gibt eine allgemeine Falle, unter der dieser Fehler auftritt. – MuertoExcobito

Antwort

2

Auf die Ahnung, dass Vulkan etwas über die Window, die noch nicht erstellt wurde, abfragen, legte ich einen XSync(<display>, false) Anruf vor diesem, und das scheint das Problem gelöst haben.

Ich bin mir nicht sicher, ob dies für den ordnungsgemäßen Betrieb erforderlich ist (ich bin kein X11-Experte), oder ob dies ein Problem mit Vulkan selbst ist. Wenn jemand eine bessere Erklärung hat, würde ich es gerne hören.

0

Ich hatte den gleichen Fehler unter Linux mit XCB und ich löste es (mit Hilfe von MuertoExcobito's Antwort) durch den Aufruf xcb_flush nach der Fenstererstellung.