···55SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Monado contributors
66```
7788+## Monado 21.0.0 (2021-01-28)
99+1010+- Major changes
1111+ - Adds a initial SteamVR driver state tracker and target that produces a SteamVR
1212+ plugin that enables any Monado hardware driver to be used in SteamVR. This is
1313+ the initial upstreaming of this code and has some limitations, like only having
1414+ working input when emulating a Index controller.
1515+ ([!583](https://gitlab.freedesktop.org/monado/monado/merge_requests/583))
1616+- XRT Interface
1717+ - Add `xrt_binding_profile` struct, related pair structs and fields on
1818+ `xrt_device` to allow to move the static rebinding of inputs and outputs into
1919+ device drivers. This makes it easier to get a overview in the driver itself
2020+ which bindings it can bind to.
2121+ ([!587](https://gitlab.freedesktop.org/monado/monado/merge_requests/587))
2222+ - xrt: Generate bindings for Monado and SteamVR from json.
2323+ ([!638](https://gitlab.freedesktop.org/monado/monado/merge_requests/638))
2424+ - xrt: Introduce `xrt_system_compositor`, it is basically a analogous to
2525+ `XrSystemID` but instead of being a fully fledged xrt_system this is only the
2626+ compositor part of it. Also fold the `prepare_session` function into the create
2727+ native compositor function to simplify the interface.
2828+ ([!652](https://gitlab.freedesktop.org/monado/monado/merge_requests/652))
2929+ - Expose more information on the frameservers, like product, manufacturer and
3030+ serial.
3131+ ([!665](https://gitlab.freedesktop.org/monado/monado/merge_requests/665))
3232+ - Add `XRT_FORMAT_BAYER_GR8` format.
3333+ ([!665](https://gitlab.freedesktop.org/monado/monado/merge_requests/665))
3434+- State Trackers
3535+ - st/oxr: Add OXR_FRAME_TIMING_SPEW for basic frame timing debug output.
3636+ ([!591](https://gitlab.freedesktop.org/monado/monado/merge_requests/591))
3737+ - OpenXR: Make sure to restore old EGL display/context/drawables when creating a
3838+ client EGL compositor.
3939+ ([!602](https://gitlab.freedesktop.org/monado/monado/merge_requests/602))
4040+ - GUI: Expand with support for controlling the remote driver hand tracking.
4141+ ([!604](https://gitlab.freedesktop.org/monado/monado/merge_requests/604))
4242+ - st/oxr: Implement XR_KHR_vulkan_enable2
4343+ ([!633](https://gitlab.freedesktop.org/monado/monado/merge_requests/633))
4444+ - st/oxr: Add OXR_TRACKING_ORIGIN_OFFSET_{X,Y,Z} env variables as a quick way to
4545+ tweak 6dof tracking origins.
4646+ ([!634](https://gitlab.freedesktop.org/monado/monado/merge_requests/634))
4747+ - OpenXR: Be more relaxed with Quat validation, spec says within 1% of unit
4848+ length, normalize if not within float epsilon.
4949+ ([!659](https://gitlab.freedesktop.org/monado/monado/merge_requests/659))
5050+- Drivers
5151+ - North Star: Fix memory leak in math code.
5252+ ([!564](https://gitlab.freedesktop.org/monado/monado/merge_requests/564))
5353+ - psvr: Rename some variables for better readability.
5454+ ([!597](https://gitlab.freedesktop.org/monado/monado/merge_requests/597))
5555+ - openhmd: Fix viewport calculation of rotated displays.
5656+ ([!600](https://gitlab.freedesktop.org/monado/monado/merge_requests/600))
5757+ - remote: Add support for simulated hand tracking, this is based on the curl
5858+ model
5959+ that is used by the Valve Index Controller.
6060+ ([!604](https://gitlab.freedesktop.org/monado/monado/merge_requests/604))
6161+ - android: Acquire device display metrics from system.
6262+ ([!611](https://gitlab.freedesktop.org/monado/monado/merge_requests/611))
6363+ - openhmd: Rotate DK2 display correctly.
6464+ ([!628](https://gitlab.freedesktop.org/monado/monado/merge_requests/628))
6565+ - d/psmv: The motor on zcmv1 does not rumble at amplitudes < 0.25. Linear rescale
6666+ amplitude into [0.25, 1] range.
6767+ ([!636](https://gitlab.freedesktop.org/monado/monado/merge_requests/636))
6868+ - v4l2: Expose more information through new fields in XRT interface.
6969+ ([!665](https://gitlab.freedesktop.org/monado/monado/merge_requests/665))
7070+ - v4l2: Allocate more buffers when streaming data.
7171+ ([!665](https://gitlab.freedesktop.org/monado/monado/merge_requests/665))
7272+- IPC
7373+ - ipc: Port IPC to u_logging.
7474+ ([!601](https://gitlab.freedesktop.org/monado/monado/merge_requests/601))
7575+ - ipc: Make OXR_DEBUG_GUI work with monado-service.
7676+ ([!622](https://gitlab.freedesktop.org/monado/monado/merge_requests/622))
7777+- Compositor
7878+ - comp: Add basic frame timing information to XRT_COMPOSITOR_LOG=trace.
7979+ ([!591](https://gitlab.freedesktop.org/monado/monado/merge_requests/591))
8080+ - main: Refactor how the compositor interacts with targets, the goal is to enable
8181+ the compositor to render to destinations that isn't backed by a `VkSwapchain`.
8282+ Introduce `comp_target` and remove `comp_window`, also refactor `vk_swapchain`
8383+ to be a sub-class of `comp_target` named `comp_target_swapchain`, the window
8484+ backends now sub class `comp_target_swapchain`.
8585+ ([!599](https://gitlab.freedesktop.org/monado/monado/merge_requests/599))
8686+ - Implement support for XR_KHR_composition_layer_equirect (equirect1).
8787+ ([!620](https://gitlab.freedesktop.org/monado/monado/merge_requests/620),
8888+ [!624](https://gitlab.freedesktop.org/monado/monado/merge_requests/624))
8989+ - comp: Improve thread safety. Resolve issues in mutlithreading CTS.
9090+ ([!645](https://gitlab.freedesktop.org/monado/monado/merge_requests/645))
9191+ - main: Lower priority on sRGB format. This works around a bug in the OpenXR CTS
9292+ and mirrors better what at least on other OpenXR runtime does.
9393+ ([!671](https://gitlab.freedesktop.org/monado/monado/merge_requests/671))
9494+- Helper Libraries
9595+ - os/time: Make timespec argument const.
9696+ ([!597](https://gitlab.freedesktop.org/monado/monado/merge_requests/597))
9797+ - os/time: Add a Linux specific way to get the realtime clock (for RealSense).
9898+ ([!597](https://gitlab.freedesktop.org/monado/monado/merge_requests/597))
9999+ - math: Make sure that we do not drop and positions in poses when the other pose
100100+ has a non-valid position.
101101+ ([!603](https://gitlab.freedesktop.org/monado/monado/merge_requests/603))
102102+ - aux/vk: `vk_create_device` now takes in a list of Vulkan device extensions.
103103+ ([!605](https://gitlab.freedesktop.org/monado/monado/merge_requests/605))
104104+ - Port everything to u_logging.
105105+ ([!627](https://gitlab.freedesktop.org/monado/monado/merge_requests/627))
106106+ - u/hand_tracking: Tweak finger curl model making it easier to grip ingame
107107+ objects.
108108+ ([!635](https://gitlab.freedesktop.org/monado/monado/merge_requests/635))
109109+ - math: Add math_quat_validate_within_1_percent function.
110110+ ([!659](https://gitlab.freedesktop.org/monado/monado/merge_requests/659))
111111+ - u/sink: Add Bayer format converter.
112112+ ([!665](https://gitlab.freedesktop.org/monado/monado/merge_requests/665))
113113+ - u/distortion: Improve both Vive and Index distortion by fixing polynomial math.
114114+ ([!666](https://gitlab.freedesktop.org/monado/monado/merge_requests/666))
115115+ - u/distortion: Improve Index distortion and tidy code. While this touches the
116116+ Vive distortion code all Vive headsets seems to have the center set to the same
117117+ for each channel so doesn't help them. And Vive doesn't have the extra
118118+ coefficient that the Index does so no help there either.
119119+ ([!667](https://gitlab.freedesktop.org/monado/monado/merge_requests/667))
120120+- Misc. Features
121121+ - Work toward a Win32 port.
122122+ ([!551](https://gitlab.freedesktop.org/monado/monado/merge_requests/551),
123123+ [!605](https://gitlab.freedesktop.org/monado/monado/merge_requests/605),
124124+ [!607](https://gitlab.freedesktop.org/monado/monado/merge_requests/607))
125125+ - Additional improvements to the Android port.
126126+ ([!592](https://gitlab.freedesktop.org/monado/monado/merge_requests/592),
127127+ [!595](https://gitlab.freedesktop.org/monado/monado/merge_requests/595),
128128+ [#105](https://gitlab.freedesktop.org/monado/monado/issues/105))
129129+- Misc. Fixes
130130+ - steamvr: Support HMDs with rotated displays
131131+ ([!600](https://gitlab.freedesktop.org/monado/monado/merge_requests/600))
132132+8133## Monado 0.4.1 (2020-11-04)
913410135- State Trackers