Vulkan validation errors.
Onhi opened this issue · comments
I get vulkan validation error while using OpenXR.
For exemple:
VUID-VkImageCreateInfo-pNext-01443(ERROR / SPEC): msgNum: 416909302 - Validation Error: [ VUID-VkImageCreateInfo-pNext-01443 ] Object 0: handle = 0x2cda8774080, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x18d987f6 | vkCreateImage: VkImageCreateInfo pNext chain includes VkExternalMemoryImageCreateInfo with handleTypes 16 but pCreateInfo->initialLayout is VK_IMAGE_LAYOUT_PREINITIALIZED. The Vulkan spec states: If the pNext chain includes a VkExternalMemoryImageCreateInfo or VkExternalMemoryImageCreateInfoNV structure whose handleTypes member is not 0, initialLayout must be VK_IMAGE_LAYOUT_UNDEFINED (https://vulkan.lunarg.com/doc/view/1.3.231.1/windows/1.3-extensions/vkspec.html#VUID-VkImageCreateInfo-pNext-01443)
Objects: 1
[0] 0x2cda8774080, type: 3, name: NULL
I'm still new to this so I get that this might not be from OpenXR but from the runtime I am using?
Does this happen with hello XR or just your own software?
Yes, here are the ones I noticed running hello_xr.
HelloXr -g Vulkan -ff Hmd -vc Stereo -bm Opaque -s Stage -v
VUID-vkCreateDevice-ppEnabledExtensionNames-01387(ERROR / SPEC): msgNum: 307460652 - Validation Error: [ VUID-vkCreateDevice-ppEnabledExtensionNames-01387 ] Object 0: handle = 0x29ad8049310, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x12537a2c | Missing extension required by the device extension VK_KHR_external_semaphore: VK_KHR_external_semaphore_capabilities. The Vulkan spec states: All required device extensions for each extension in the VkDeviceCreateInfo::ppEnabledExtensionNames list must also be present in that list (https://vulkan.lunarg.com/doc/view/1.3.231.1/windows/1.3-extensions/vkspec.html#VUID-vkCreateDevice-ppEnabledExtensionNames-01387)
Objects: 1
[0] 0x29ad8049310, type: 1, name: NULL
+ [0] 0x0000029ad638ef70 "VK_KHR_external_memory" const char * const
+ [1] 0x0000029ad638ef87 "VK_KHR_external_semaphore" const char * const
+ [2] 0x0000029ad638efa1 "VK_KHR_dedicated_allocation" const char * const
+ [3] 0x0000029ad638efbd "VK_KHR_get_memory_requirements2" const char * const
+ [4] 0x0000029ad638efdd "VK_KHR_external_memory_win32" const char * const
+ [5] 0x0000029ad638effa "VK_KHR_win32_keyed_mutex" const char * const
+ [6] 0x0000029ad638f013 "VK_EXT_debug_marker" const char * const
+ [7] 0x00007ff67305fac0 "VK_KHR_swapchain" const char * const
VUID-VkImageCreateInfo-pNext-01443(ERROR / SPEC): msgNum: 416909302 - Validation Error: [ VUID-VkImageCreateInfo-pNext-01443 ] Object 0: handle = 0x1fc371cc5d0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x18d987f6 | vkCreateImage: VkImageCreateInfo pNext chain includes VkExternalMemoryImageCreateInfo with handleTypes 16 but pCreateInfo->initialLayout is VK_IMAGE_LAYOUT_PREINITIALIZED. The Vulkan spec states: If the pNext chain includes a VkExternalMemoryImageCreateInfo or VkExternalMemoryImageCreateInfoNV structure whose handleTypes member is not 0, initialLayout must be VK_IMAGE_LAYOUT_UNDEFINED (https://vulkan.lunarg.com/doc/view/1.3.231.1/windows/1.3-extensions/vkspec.html#VUID-VkImageCreateInfo-pNext-01443)
Objects: 1
[0] 0x1fc371cc5d0, type: 3, name: NULL
> extern "C" LOADER_EXPORT XRAPI_ATTR XrResult XRAPI_CALL xrEndFrame(
> XrSession session,
> const XrFrameEndInfo* frameEndInfo) XRLOADER_ABI_TRY {
> LoaderInstance* loader_instance;
> XrResult result = ActiveLoaderInstance::Get(&loader_instance, "xrEndFrame");
> if (XR_SUCCEEDED(result)) {
>>> result = loader_instance->DispatchTable()->EndFrame(session, frameEndInfo);
> }
> return result;
> }
> XRLOADER_ABI_CATCH_FALLBACK
I should also point out that I could not find where vkDestroyDevice
is called in hello_xr. This is another line that triggers a validation error in my own software.
VUID-vkDestroyDevice-device-00378(ERROR / SPEC): msgNum: 1901072314 - Validation Error: [ VUID-vkDestroyDevice-device-00378 ] Object 0: handle = 0x1b28114da10, type = VK_OBJECT_TYPE_DEVICE; Object 1: handle = 0x1b2d9ff4e80, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x71500fba | OBJ ERROR : For VkDevice 0x1b28114da10[], VkCommandBuffer 0x1b2d9ff4e80[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.231.1/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-00378)
Objects: 2
[0] 0x1b28114da10, type: 3, name: NULL
[1] 0x1b2d9ff4e80, type: 6, name: NULL
An issue (number 1926) has been filed to correspond to this issue in the internal Khronos GitLab (Khronos members only: KHR:openxr/openxr#1926 ), to facilitate working group processes.
This GitHub issue will continue to be the main site of discussion.