Feature: Generic-purpose Driver API
This ticket is to propose the development of a general-purpose driver API that enables interaction with hardware at an emulation level.
The initiative stems from a conversation within the ALVR team, as we recognize the growing need for Monado support. However, with the current format for Monado drivers, the concern is that going forward, the solution would not be easily maintainable. We realize that such an API might benefit other 3rd party developers as well, and decided to bring this to you.
The rough outlines of the proposed feature set are as follows:
- Access to Vulkan images submitted by the VR application, with automatic conversion if the application submits OpenGL frames.
- An input submission API for tracking poses and user input. This could be callback-based or on-demand.
- Ability to return uncomposited layers -or- perform reprojection/compositing for a given orientation, while retaining the option to skip lens/mura correction.
- Ability to control the framerate and phase of the game rendering cycle. (Could allow the driver to wait during xrWaitFrame?)
- Capability to implement backend support for other OpenXR extensions.
- Access to Monado's time frame of reference
We'd love to hear more thoughts and ideas on this. Let's collaborate and create something awesome!