I implemented vsync in AccelerantConsumer by using retrace semaphore and made video file producer. Now video plays without tearing and frame skips. Tearing can be globally eliminated when VideoStreams will be integrated with app_server.
Also I implemented variable buffer count in swap chain FIFO. Confirmed to work with 32 buffers in swap chain. I made swap chain more compatible with Vulkan. I plan to make VulkanProducer WSI surface Vulkan API extension so Vulkan can render to any VideoStreams consumer in any address space.
No, WSI is just set of standard API hooks that should be implemented independently for each OS and windowing system. Surface creating API is purely OS depending, there are no generic create surface function, only multiple per-OS.
I managed to make initial integration of app_server with VideoStreams and RadeonGfx by implementing VideoProducerHWInterface. Global tearing free rendering with flipping of 2 framebuffers is working. Hardware cursor is used. No compositor yet.
I run test_app_server on second screen. Some stub white window is used to capture input and deliver it to second screen with test_app_server.
Well… hardware support would work also with https://monado.freedesktop.org/ . Never experimented with it yet (DEMoCap runs against Steam/OpenVR for the moment) but a HMD and Controllers would work. Monado uses Vulkan with certain extensions present so maybe this might be a possible test. I can’t help there since my laptop is an nVidia one (yeah… I know… I would have picked AMD if I had found one with strong GPU setup).
Steam would require either Wine and/or a Linux compatibility layer to come first. Even with hardware acceleration, Steam on Haiku in any way is still rather far away.
I would say monade might be worth an experiment. It reduces the problem to a smaller set: pretty much OpenXR runtime. If you have working HMDI and USB support then it should be possible to get a simplistic HMD/Controller setup running without needing to touch steam.
Running Wine is probably most realistic approach. I think it is not too hard, most important that TLS register collision need to be fixed. Xlibe can be used for initial windowing integration.
Now, running Wine would be a dream come true. Then we’ll follow with a petition for Steam on Haiku. cannot contain excitement – screaming inside with joy