LibOVR DX12 is half broken ( with tinyroom code patch to repro )
Hello,
At first everything was fine, i packed my two eyes in a single surface, then i tried to use one swapchain per eye and LibOVR cross the streams... :( After that only the left eye display something that is in that the right eye, the other is black, after messing around and turning mad on very weird behaviors, i tried to repro in OculusRoomTinyDX12 and yes, i am not crazy, two line changes and i get the same behavior. And of course the two line changes are absolutely legit in regards to DX12, of course.
So in MainLoop function, at the for loop over the two eyes, you just have to move "DIRECTX.SetActiveContext(eye == 0 ? DrawContext_EyeRenderLeft : DrawContext_EyeRenderRight);", remove the eye test and just pick a context. And at the end of the loop, move "DIRECTX.SubmitCommandList(DIRECTX.ActiveContext);" just after the for loop.
Technically, it means that you are rendering the full frame in a single CommandList ( much like DX11 immediate context ), it is absolutely legit, all the barriers remains intact, the OVRCommit is called prior ExecuteCommandList so nothing has change here too.
At first everything was fine, i packed my two eyes in a single surface, then i tried to use one swapchain per eye and LibOVR cross the streams... :( After that only the left eye display something that is in that the right eye, the other is black, after messing around and turning mad on very weird behaviors, i tried to repro in OculusRoomTinyDX12 and yes, i am not crazy, two line changes and i get the same behavior. And of course the two line changes are absolutely legit in regards to DX12, of course.
So in MainLoop function, at the for loop over the two eyes, you just have to move "DIRECTX.SetActiveContext(eye == 0 ? DrawContext_EyeRenderLeft : DrawContext_EyeRenderRight);", remove the eye test and just pick a context. And at the end of the loop, move "DIRECTX.SubmitCommandList(DIRECTX.ActiveContext);" just after the for loop.
Technically, it means that you are rendering the full frame in a single CommandList ( much like DX11 immediate context ), it is absolutely legit, all the barriers remains intact, the OVRCommit is called prior ExecuteCommandList so nothing has change here too.
