`useSinglePassStereo =` set to `true` and `false` create different and incorrect output on Simulated HMD Windows Monado
Closed this issue · 7 comments
Application | useSinglePassStereo == true | useSinglePassStereo == false |
---|---|---|
ColorSession_vulkan_openxr | Left eye correct. Right eye black | Both eyes correct |
HelloOpenXRSession_vulkan_openxr | Left eye red only, right eye full color | Both eyes red only |
Textured3DCubeSession_vulkan_openxr | Left eye correct. Right eye black | Both eyes present |
Device info:
name: NVIDIA RTX A2000
vendor: 0x10de
product: 0x2531
deviceType: VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
apiVersion: 1.3.242
driverVersion: 0x8683c000
Not sure if this correlates, but repeating image layout errors are reported (examples below).
ERROR:
Validation layer:
Validation Error: UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout
Object 0: handle = 000001FCAFCD6040, type = VK_OBJECT_TYPE_COMMAND_BUFFER;
MessageID = 0000000000000000
vkQueueSubmit(): pSubmits[0].pCommandBuffers[0] command buffer VkCommandBuffer 0x1fcafcd6040[] expects VkImage 0xfcda0e00000001e0[Image: macbeth.png] (subresource: aspectMask 0x1 array layer 0, mip level 2) to be in layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL--instead, current layout is VK_IMAGE_LAYOUT_UNDEFINED.
ERROR:
Validation layer:
Validation Error: UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout
Object 0: handle = 000001B804928A00, type = VK_OBJECT_TYPE_COMMAND_BUFFER;
MessageID = 0000000000000000
vkQueueSubmit(): pSubmits[0].pCommandBuffers[0] command buffer VkCommandBuffer 0x1b804928a00[] expects VkImage 0xc32cbd00000001eb[Image: swapchain #1] (subresource: aspectMask 0x1 array layer 1, mip level 0) to be in layout VK_IMAGE_LAYOUT_PRESENT_SRC_KHR--instead, current layout is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL.
ERROR:
Validation layer:
Validation Error: UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout
Object 0: handle = 000001B8049F1320, type = VK_OBJECT_TYPE_COMMAND_BUFFER;
MessageID = 0000000000000000
vkQueueSubmit(): pSubmits[0].pCommandBuffers[0] command buffer VkCommandBuffer 0x1b8049f1320[] expects VkImage 0xc32cbd00000001eb[Image: swapchain #1] (subresource: aspectMask 0x1 array layer 1, mip level 0) to be in layout VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL--instead, current layout is VK_IMAGE_LAYOUT_PRESENT_SRC_KHR.
Hey @jzulauf-lunarg ! Thanks for reporting! ColorSession and Textured3DCubeSession are nit adapted for OpenXR, please check sessions with OpenXR in the title to be sure that are adapted for the headset (or simulator).
I'll check out what happened with HelloOpenXRSession_vulkan_openxr
@rokuz -- note the application titles in the table above (ColorSession_vulkan_openxr
, HelloOpenXRSession_vulkan_openxr
, Textured3DCubeSession_vulkan_openxr
).
These are the three IGL Shell Sessions -> vulkan_OpenXR applications
I meant HelloOpenXRSession :) It's only two of them now. This one and HandsOpenXRSession. _vulkan_openxr is a postfix added by CMake.
We can render any session technically, but only HelloOpenXRSession and HandsOpenXRSession have GL_OVR_multiview2 support, so we render them correctly on the headset.
Also note at tip of main I still see three openxr_vulkan cases listed and "Hands" isn't one of them (after running zero check) ... as expected on desktop
if(IGL_WITH_OPENXR)
if(ANDROID)
add_shell_session(HelloOpenXRSession "")
add_shell_session(HandsOpenXRSession "")
endif()
if(NOT ANDROID AND IGL_WITH_VULKAN)
add_shell_session_openxr_desktop(ColorSession)
add_shell_session_openxr_desktop(HelloOpenXRSession)
add_shell_session_openxr_desktop(Textured3DCubeSession)
endif()
endif()
Sure, I'll check out why HelloOpenXRSession gives different results.
I don't think that the code bellow is 100% correct :) even it's in CMake.
add_shell_session_openxr_desktop(ColorSession)
add_shell_session_openxr_desktop(Textured3DCubeSession)
I'll handle it too. For now, please consider HelloOpenXRSession and HandsOpenXRSession as OpenXR compatible sessions.
(I'm not sure that HandsOpenXRSession makes sense on Monado, there Hands Tracking doesn't work...)
Hey @jzulauf-lunarg ! I added support for multi-pass stereo to HelloOpenXRSession and HandsOpenXRSession.