почему openxr 'xrCreateSession' приводит к многочисленным ошибкам проверки "модуль SPIR-V недействителен:" (и как я могу это исправить)?
xrCreateSession
принимает в XrInstance
и XrSessionCreateInfo
.
В XrInstanceCreateInfo
использованный для создания экземпляра не особенно интересен: единственные параметры, которые следует отметить, это enabledExtensionCount
(= 1
), а также enabledExtensionNames
(= XR_KHR_VULKAN_ENABLE_EXTENSION_NAME
). Остальное - информация о произвольном названии / версии.
В XRSessionCreateInfo
используется для создания сеанса systemId
установлен на результат xrGetSystem
, а также next
установить указатель типа XrGraphicsBindingVulkanKHR
.
Значения, которые просто указывают на экземпляр vulkan, PhysicalDevice, device, queueFamilyIndex и queueIndex, я достаточно уверен, что собрал правильно (у меня vulkan отлично работает без openXR).
Но второй xrCreateSession
вызывается, я получаю около 20 ошибок проверки следующего вида:
Validation Error: [ UNASSIGNED-CoreValidation-Shader-InconsistentSpirv ] Object 0: handle = 0x24341691190, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x6bbb14 | SPIR-V module not valid: Header block 512[%512] is contained in the loop construct headed by 505[%505], but its merge block 513[%513] is not
%512 = OpLabel
(с разными номерами для блока заголовка, заголовка, блока слияния и т. д.).
На данный момент я еще не предоставил SPIR-V ни для vulkan, ни для openXR, поэтому я не уверен, что находится под моим контролем.
Почему я получаю эти ошибки? Что можно сделать, чтобы их предотвратить?