···11# Changelog for Monado {#CHANGELOG}
2233-```txt
33+<!--
44SPDX-License-Identifier: CC0-1.0
5566-SPDX-FileCopyrightText: 2020-2024 Collabora, Ltd. and the Monado contributors
77-```
66+SPDX-FileCopyrightText: 2020-2025 Collabora, Ltd. and the Monado contributors
77+-->
88+99+## Monado 25.0.0 (2025-04-18)
1010+1111+This is the first stable Monado release of 2025. It contains a variety of
1212+features, fixes, and improvements over the previous release, and is a
1313+recommended upgrade for all users and downstream projects. Important fixes may
1414+be backported from "main" to a 25.0.x stable branch, depending on severity.
1515+1616+A vibrant community, including a Discord chat with nearly 3000 members, as well
1717+as over 40 contributors to over 400 code commits in this release alone, helped
1818+make Monado 25.0 possible. This count certainly overlooks many valued
1919+contributors who share their experience and talents through documentation,
2020+blogs, social media, and spreading the word. Thank you to everyone who
2121+participates in the open source XR ecosystem in any way, contributing your
2222+diverse skills and perspectives. Let's keep making things we can be proud of,
2323+together.
2424+2525+- "XRT" (Internal) Interface
2626+ - Add: New `xrt/xrt_android.h` header.
2727+ ([!1655](https://gitlab.freedesktop.org/monado/monado/merge_requests/1655))
2828+ - Add: `xrt_compositor::get_display_refresh_rate` so that the application can get
2929+ the current display refresh rate.
3030+ ([!1786](https://gitlab.freedesktop.org/monado/monado/merge_requests/1786))
3131+ - Add: `xrt_compositor::request_display_refresh_rate` so that the application can
3232+ trigger a display refresh rate change.
3333+ ([!1786](https://gitlab.freedesktop.org/monado/monado/merge_requests/1786))
3434+ - Add: `xrt_compositor_event_display_refresh_rate_change` so compositor can
3535+ notify applications that the display refresh rate has been changed.
3636+ ([!1786](https://gitlab.freedesktop.org/monado/monado/merge_requests/1786))
3737+ - Add: Support for device feature usage.
3838+ ([!2223](https://gitlab.freedesktop.org/monado/monado/merge_requests/2223))
3939+ - Add: Introduce `XRT_ERROR_NOT_IMPLEMENTED`, remove
4040+ `XRT_ERROR_DEVICE_FUNCTION_NOT_IMPLEMENTED` and
4141+ `XRT_ERROR_COMPOSITOR_FUNCTION_NOT_IMPLEMENTED`.
4242+ ([!2244](https://gitlab.freedesktop.org/monado/monado/merge_requests/2244))
4343+ - Add: Introduce `XRT_ERROR_INPUT_UNSUPPORTED`.
4444+ ([!2271](https://gitlab.freedesktop.org/monado/monado/merge_requests/2271))
4545+ - Add: Introduce `XRT_ERROR_UNSUPPORTED_SPACE_TYPE`, `XRT_ERROR_ANDROID`.
4646+ ([!2284](https://gitlab.freedesktop.org/monado/monado/merge_requests/2284),
4747+ [!1655](https://gitlab.freedesktop.org/monado/monado/merge_requests/1655))
4848+ - Add: New `get_battery_status` method to `xrt_device` for getting the device's
4949+ battery status info.
5050+ ([!2292](https://gitlab.freedesktop.org/monado/monado/merge_requests/2292))
5151+ - Add: Methods to support `XR_FB_face_tracking2` extension.
5252+ ([!2299](https://gitlab.freedesktop.org/monado/monado/merge_requests/2299))
5353+ - Change: Move `xrt_instance_info` members to nested `xrt_application_info`
5454+ struct, and add a parallel `xrt_platform_info`.
5555+ ([!1655](https://gitlab.freedesktop.org/monado/monado/merge_requests/1655))
5656+ - Change: Add `xrt_instance_android` interface, optional aspect of `xrt_instance`
5757+ when building on Android.
5858+ ([!1655](https://gitlab.freedesktop.org/monado/monado/merge_requests/1655))
5959+ - Change: `xrt_device_update_inputs` returns `xrt_result_t`
6060+ ([!2246](https://gitlab.freedesktop.org/monado/monado/merge_requests/2246))
6161+ - Change: Add `localfloorspace` and modify `create_local_space` to support multi-
6262+ local_floor space on server side.
6363+ ([!2252](https://gitlab.freedesktop.org/monado/monado/merge_requests/2252))
6464+ - Change: `xrt_device_get_tracked_pose` returns `xrt_result_t` to improve error
6565+ handling in the state tracker.
6666+ ([!2271](https://gitlab.freedesktop.org/monado/monado/merge_requests/2271))
6767+ - Change: Rename offset field of `xrt_tracking_origin` to `initial_offset`.
6868+ ([!2286](https://gitlab.freedesktop.org/monado/monado/merge_requests/2286))
6969+ - Change: Use `int64_t` (instead of `uint64_t`) for all timestamps.
7070+ ([!2298](https://gitlab.freedesktop.org/monado/monado/merge_requests/2298))
7171+ - Change: Add `at_timestamp_ns` argument to `get_face_tracking`.
7272+ ([!2310](https://gitlab.freedesktop.org/monado/monado/merge_requests/2310))
7373+ - Change: Bump overlay limit from 16 to 128.
7474+ ([!2341](https://gitlab.freedesktop.org/monado/monado/merge_requests/2341))
7575+ - Fix: Propagate the enabled state of `VK_KHR_image_format_list` to `vk_bundle`.
7676+ ([!2352](https://gitlab.freedesktop.org/monado/monado/merge_requests/2352),
7777+ [#411](https://gitlab.freedesktop.org/monado/monado/issues/411))
7878+- libmonado Interface
7979+ - Add: In libmonado, add get/set for reference space offsets & tracking origin
8080+ offsets.
8181+ ([!2284](https://gitlab.freedesktop.org/monado/monado/merge_requests/2284))
8282+ - Add: In libmonado, add getters for tracking origin count and name.
8383+ ([!2284](https://gitlab.freedesktop.org/monado/monado/merge_requests/2284))
8484+ - Add: Add a function to libmonado for getting a device's battery status
8585+ information.
8686+ ([!2292](https://gitlab.freedesktop.org/monado/monado/merge_requests/2292))
8787+ - Add: In libmonado, add tracking-related device properties
8888+ ([!2313](https://gitlab.freedesktop.org/monado/monado/merge_requests/2313))
8989+ - Change: Bump the libmonado API version from 1.2 to 1.3.
9090+ ([!2284](https://gitlab.freedesktop.org/monado/monado/merge_requests/2284))
9191+- State Trackers
9292+ - Debug GUI Change: disabled mono camera calibration
9393+ ([!2259](https://gitlab.freedesktop.org/monado/monado/merge_requests/2259))
9494+ - Debug GUI Improvement: draw `gui_widget_native_images` with header, scale
9595+ slider and rotation checkbox.
9696+ ([!2303](https://gitlab.freedesktop.org/monado/monado/merge_requests/2303))
9797+ - OpenXR Add: Add `MND_libmonado_path` in OpenXR runtime manifest.
9898+ ([!2285](https://gitlab.freedesktop.org/monado/monado/merge_requests/2285))
9999+ - OpenXR Add: Expose all current controller grip poses via MNDX_xdev_space.
100100+ ([!2330](https://gitlab.freedesktop.org/monado/monado/merge_requests/2330))
101101+ - OpenXR Add: Implement the `XR_EXT_active_action_set_priority` extension.
102102+ ([!2370](https://gitlab.freedesktop.org/monado/monado/merge_requests/2370))
103103+ - OpenXR Change: Allow disabling `XR_EXT_hand_tracking` through CMake
104104+ ([!2296](https://gitlab.freedesktop.org/monado/monado/merge_requests/2296))
105105+ - OpenXR Fix: possible deadlock from unanswered `xrWaitFrame`.
106106+ ([!1934](https://gitlab.freedesktop.org/monado/monado/merge_requests/1934),
107107+ [!2344](https://gitlab.freedesktop.org/monado/monado/merge_requests/2344),
108108+ [!2162](https://gitlab.freedesktop.org/monado/monado/merge_requests/2162))
109109+ - OpenXR Fix: conformance issues related to session state and session
110110+ running/non-running.
111111+ ([!1934](https://gitlab.freedesktop.org/monado/monado/merge_requests/1934),
112112+ [!2344](https://gitlab.freedesktop.org/monado/monado/merge_requests/2344),
113113+ [!2162](https://gitlab.freedesktop.org/monado/monado/merge_requests/2162))
114114+ - OpenXR Fix: Fix `XR_TIMEOUT_EXPIRED` return value on timeout of Vulkan
115115+ swapchain waiting.
116116+ ([!2256](https://gitlab.freedesktop.org/monado/monado/merge_requests/2256))
117117+ - OpenXR Fix: Fixed `XR_SPACE_BOUNDS_UNAVAILABLE` return value for unimplemented
118118+ functions.
119119+ ([!2289](https://gitlab.freedesktop.org/monado/monado/merge_requests/2289))
120120+ - OpenXR Fix: Fixed bug when XR_KHR_composition_layer_depth is disabled
121121+ ([!2304](https://gitlab.freedesktop.org/monado/monado/merge_requests/2304))
122122+ - OpenXR Fix: Fixed `XrFacialTrackerHTC` validation
123123+ ([!2306](https://gitlab.freedesktop.org/monado/monado/merge_requests/2306))
124124+ - OpenXR Fix: Miscellaneous conformance issues.
125125+ ([!2327](https://gitlab.freedesktop.org/monado/monado/merge_requests/2327),
126126+ [!2402](https://gitlab.freedesktop.org/monado/monado/merge_requests/2402),
127127+ [!2364](https://gitlab.freedesktop.org/monado/monado/merge_requests/2364))
128128+ - OpenXR Fix: `(oxr_)xrGetVulkanDeviceExtensionsKHR` not outputting
129129+ `VK_KHR_image_format_list` to the list of extensions to enable for apps using
130130+ `XR_KHR_vulkan_enable` when `KHR_vulkan_swapchain_format_list` is enabled &
131131+ used.
132132+ ([!2352](https://gitlab.freedesktop.org/monado/monado/merge_requests/2352),
133133+ [#411](https://gitlab.freedesktop.org/monado/monado/issues/411))
134134+ - OpenXR Fix: Fixed crash getting ref space bounds in headless mode
135135+ ([!2354](https://gitlab.freedesktop.org/monado/monado/merge_requests/2354))
136136+ - OpenXR Fix: Crash related to depth layer handling.
137137+ ([!2406](https://gitlab.freedesktop.org/monado/monado/merge_requests/2406))
138138+ - OpenXR Improvement: Add support for device feature usage
139139+ ([!2223](https://gitlab.freedesktop.org/monado/monado/merge_requests/2223))
140140+ - OpenXR Improvement: Added verification for frameEndInfo->layerCount
141141+ ([!2262](https://gitlab.freedesktop.org/monado/monado/merge_requests/2262))
142142+ - OpenXR Improvement: Add quirk to return parallel view poses with the
143143+ environment variable `OXR_PARALLEL_VIEWS`.
144144+ ([!2312](https://gitlab.freedesktop.org/monado/monado/merge_requests/2312))
145145+ - OpenXR Improvement: Update OpenXR headers to 1.1.47.
146146+ ([!2353](https://gitlab.freedesktop.org/monado/monado/merge_requests/2353),
147147+ [!2453](https://gitlab.freedesktop.org/monado/monado/merge_requests/2453))
148148+- Drivers
149149+ - Android: Replace `ALooper_pollAll` with `ALooper_pollOnce`.
150150+ ([!2260](https://gitlab.freedesktop.org/monado/monado/merge_requests/2260))
151151+ - Android: Reduce CPU usage.
152152+ ([!2260](https://gitlab.freedesktop.org/monado/monado/merge_requests/2260))
153153+ - Android: Fix distortion computation for Cardboard
154154+ ([!2412](https://gitlab.freedesktop.org/monado/monado/merge_requests/2412))
155155+ - OpenHMD: Use unofficial OpenHMD Haptics API.
156156+ ([!2329](https://gitlab.freedesktop.org/monado/monado/merge_requests/2329))
157157+ - PS Sense: Use IMU timestamp.
158158+ ([!2301](https://gitlab.freedesktop.org/monado/monado/merge_requests/2301))
159159+ - Qwerty: Switched qwerty simulated controllers to WMR controllers
160160+ ([!2355](https://gitlab.freedesktop.org/monado/monado/merge_requests/2355))
161161+ - Simulated: Implement visibility mask.
162162+ ([!2403](https://gitlab.freedesktop.org/monado/monado/merge_requests/2403))
163163+ - Ultraleap: Adapted driver to recent xrt_device interface changes
164164+ ([!2424](https://gitlab.freedesktop.org/monado/monado/merge_requests/2424))
165165+ - WMR: Fix controller status reporting.
166166+ ([!2188](https://gitlab.freedesktop.org/monado/monado/merge_requests/2188))
167167+ - WMR: Improve camera transfer handling
168168+ ([!2394](https://gitlab.freedesktop.org/monado/monado/merge_requests/2394))
169169+ - WMR: Add product ID for HP Reverb G2 Omnicept.
170170+ ([!2395](https://gitlab.freedesktop.org/monado/monado/merge_requests/2395))
171171+ - WMR: Add product ID for Acer AH100.
172172+ ([!2445](https://gitlab.freedesktop.org/monado/monado/merge_requests/2445))
173173+ - steamvr_lh: Use properties for device descriptions.
174174+ ([!2207](https://gitlab.freedesktop.org/monado/monado/merge_requests/2207))
175175+ - steamvr_lh: Support loading SlimeVR OpenVR driver alongside lighthouse.
176176+ ([!2251](https://gitlab.freedesktop.org/monado/monado/merge_requests/2251))
177177+ - steamvr_lh: Allow setting brightness with env var
178178+ ([!2275](https://gitlab.freedesktop.org/monado/monado/merge_requests/2275))
179179+ - steamvr_lh: fix disabling of hand simulation causing segfault.
180180+ ([!2290](https://gitlab.freedesktop.org/monado/monado/merge_requests/2290))
181181+ - steamvr_lh: Implement battery status query.
182182+ ([!2292](https://gitlab.freedesktop.org/monado/monado/merge_requests/2292))
183183+ - steamvr_lh: Refactor and cleanup.
184184+ ([!2297](https://gitlab.freedesktop.org/monado/monado/merge_requests/2297),
185185+ [!2282](https://gitlab.freedesktop.org/monado/monado/merge_requests/2282),
186186+ [!2140](https://gitlab.freedesktop.org/monado/monado/merge_requests/2140))
187187+ - steamvr_lh: Fix crash on shutdown.
188188+ ([!2324](https://gitlab.freedesktop.org/monado/monado/merge_requests/2324))
189189+ - steamvr_lh: Fix for simulated hand lag and thumb openness affecting certain
190190+ applications on Valve Index Controller.
191191+ ([!2340](https://gitlab.freedesktop.org/monado/monado/merge_requests/2340))
192192+ - steamvr_lh: Add new steamvr beta driver internal interface.
193193+ ([!2361](https://gitlab.freedesktop.org/monado/monado/merge_requests/2361))
194194+ - steamvr_lh: Fix teardown.
195195+ ([!2387](https://gitlab.freedesktop.org/monado/monado/merge_requests/2387),
196196+ [!2229](https://gitlab.freedesktop.org/monado/monado/merge_requests/2229))
197197+ - steamvr_lh: Allow building lighthouse driver without `XRT_HAVE_STEAM`
198198+ ([!2418](https://gitlab.freedesktop.org/monado/monado/merge_requests/2418))
199199+ - survive: Implement battery status query.
200200+ ([!2292](https://gitlab.freedesktop.org/monado/monado/merge_requests/2292))
201201+ - twrap: Fix conditional compilation.
202202+ ([!2140](https://gitlab.freedesktop.org/monado/monado/merge_requests/2140))
203203+- IPC
204204+ - Add: Support for device feature usage
205205+ ([!2223](https://gitlab.freedesktop.org/monado/monado/merge_requests/2223))
206206+ - Add: Support multi-local_floor space on server side.
207207+ ([!2252](https://gitlab.freedesktop.org/monado/monado/merge_requests/2252))
208208+ - Add: `get`/`set_tracking_origin_offset`, `get`/`set_reference_space_offset`
209209+ methods
210210+ ([!2284](https://gitlab.freedesktop.org/monado/monado/merge_requests/2284))
211211+ - Add: device battery status query.
212212+ ([!2292](https://gitlab.freedesktop.org/monado/monado/merge_requests/2292))
213213+ - Improvement: Allow custom service library names for Android.
214214+ ([!2265](https://gitlab.freedesktop.org/monado/monado/merge_requests/2265))
215215+ - Improvement: Initialize hmd data from static role.
216216+ ([!2427](https://gitlab.freedesktop.org/monado/monado/merge_requests/2427))
217217+- Compositor
218218+ - Add: Implement the dynamic display refresh rates support on Android platform.
219219+ ([!1786](https://gitlab.freedesktop.org/monado/monado/merge_requests/1786))
220220+ - Add: introduce the environment variable 'WAYLAND_CONNECTOR' to request a
221221+ specific connector on Wayland.
222222+ ([!2295](https://gitlab.freedesktop.org/monado/monado/merge_requests/2295),
223223+ [!2283](https://gitlab.freedesktop.org/monado/monado/merge_requests/2283),
224224+ [!2278](https://gitlab.freedesktop.org/monado/monado/merge_requests/2278))
225225+ - Add: New `comp_layer_accum` helper, factored out from `comp_base`, that
226226+ collects layers and swapchains for a frame.
227227+ ([!2317](https://gitlab.freedesktop.org/monado/monado/merge_requests/2317),
228228+ [!2377](https://gitlab.freedesktop.org/monado/monado/merge_requests/2377))
229229+ - Add: Expose a `comp_render_gfx_layers` (formerly called `do_layers`) to match
230230+ the `comp_render_cs_layers` function, which squashes layers.
231231+ ([!2323](https://gitlab.freedesktop.org/monado/monado/merge_requests/2323),
232232+ [!2380](https://gitlab.freedesktop.org/monado/monado/merge_requests/2380),
233233+ [!2388](https://gitlab.freedesktop.org/monado/monado/merge_requests/2388))
234234+ - Add: Support for refresh rate functions pass through to targets.
235235+ ([!2375](https://gitlab.freedesktop.org/monado/monado/merge_requests/2375),
236236+ [!2391](https://gitlab.freedesktop.org/monado/monado/merge_requests/2391))
237237+ - Change: Modify `comp_base` to use `comp_layer_accum` helper, instead of
238238+ inlining that code. Users of `comp_base` will need to update their code
239239+ accordingly.
240240+ ([!2317](https://gitlab.freedesktop.org/monado/monado/merge_requests/2317),
241241+ [!2377](https://gitlab.freedesktop.org/monado/monado/merge_requests/2377))
242242+ - Fix: General correctness and valid usage issues.
243243+ ([!2233](https://gitlab.freedesktop.org/monado/monado/merge_requests/2233))
244244+ - Fix: Handle environment blend modes more correctly.
245245+ ([!2273](https://gitlab.freedesktop.org/monado/monado/merge_requests/2273))
246246+ - Fix: Removed HP desktop monitor from NVIDIA allow-list.
247247+ ([!2326](https://gitlab.freedesktop.org/monado/monado/merge_requests/2326))
248248+ - Fix: propagate the enabled state of `VK_KHR_image_format_list` to `vk_bundle`
249249+ and fix `vk_bundle::has_KHR_image_format_list` not being set to enabled in the
250250+ client compositor.
251251+ ([!2352](https://gitlab.freedesktop.org/monado/monado/merge_requests/2352),
252252+ [#411](https://gitlab.freedesktop.org/monado/monado/issues/411))
253253+ - Fix: Use and set format lists for `VK_KHR_image_format_list` on client Vulkan
254254+ image creation when requested by Vulkan-based apps using mutable formats.
255255+ ([!2352](https://gitlab.freedesktop.org/monado/monado/merge_requests/2352),
256256+ [#411](https://gitlab.freedesktop.org/monado/monado/issues/411))
257257+ - Fix: Rendering error when using the fast path.
258258+ ([!2377](https://gitlab.freedesktop.org/monado/monado/merge_requests/2377))
259259+ - Fixed OpenGL flipping of subimage coordinates
260260+ ([!2250](https://gitlab.freedesktop.org/monado/monado/merge_requests/2250))
261261+ - Improvement: Code and comment cleanup of compositor utilities and modules
262262+ related to layer squashing and distortion, including renames in in
263263+ `comp/render/*` and `comp/util/comp_render_*` for consistency.
264264+ ([!2323](https://gitlab.freedesktop.org/monado/monado/merge_requests/2323),
265265+ [!2380](https://gitlab.freedesktop.org/monado/monado/merge_requests/2380),
266266+ [!2388](https://gitlab.freedesktop.org/monado/monado/merge_requests/2388))
267267+ - Improvement: Reverts the default compositor pipeline on Android from compute-
268268+ shader-based back to graphics-shader-based.
269269+ ([!2337](https://gitlab.freedesktop.org/monado/monado/merge_requests/2337))
270270+ - null: Don't crash on `XR_FB_display_refresh_rate` use
271271+ ([!2368](https://gitlab.freedesktop.org/monado/monado/merge_requests/2368))
272272+- Helper Libraries
273273+ - Android Add: Add APIs for getting supported/current display refresh rates/rate
274274+ on Android device.
275275+ ([!1786](https://gitlab.freedesktop.org/monado/monado/merge_requests/1786))
276276+ - Android Add: Add `ahardwarebuffer_is_supported` function for format checking.
277277+ ([!2407](https://gitlab.freedesktop.org/monado/monado/merge_requests/2407))
278278+ - Android Improvement: Change the implementation of `getRuntimeSourceDir`
279279+ function to support `useLegacyPackaging` set to `false`.
280280+ ([!2153](https://gitlab.freedesktop.org/monado/monado/merge_requests/2153))
281281+ - Bindings Fix: Fixed `META_touch_controller_plus` interaction profile name
282282+ ([!2405](https://gitlab.freedesktop.org/monado/monado/merge_requests/2405))
283283+ - Bindings Improvement: Improved reproducibility of bindings generation
284284+ ([!2338](https://gitlab.freedesktop.org/monado/monado/merge_requests/2338))
285285+ - Bindings Improvement: Added distinct device enums for Oculus/Meta Touch
286286+ controller variants.
287287+ ([!2356](https://gitlab.freedesktop.org/monado/monado/merge_requests/2356))
288288+ - Bluetooth LE Improvement: Made notifications for power management
289289+ characteristic optional
290290+ ([!2269](https://gitlab.freedesktop.org/monado/monado/merge_requests/2269))
291291+ - D3D Fix: Fixed swapchain with `UNORDERED_ACCESS` and `COLOR` usage
292292+ ([!2281](https://gitlab.freedesktop.org/monado/monado/merge_requests/2281))
293293+ - D3D Fix: Correct fallback state for D3D12
294294+ ([!2349](https://gitlab.freedesktop.org/monado/monado/merge_requests/2349),
295295+ [#440](https://gitlab.freedesktop.org/monado/monado/issues/440))
296296+ - Math Add: Introduce minimum skew clock tracker.
297297+ ([!2188](https://gitlab.freedesktop.org/monado/monado/merge_requests/2188))
298298+ - OpenGL Add: Add Win32 handle import.
299299+ ([!2302](https://gitlab.freedesktop.org/monado/monado/merge_requests/2302))
300300+ - Space Overseer Fix: Fixed destruction of the multi-localspace
301301+ ([!2249](https://gitlab.freedesktop.org/monado/monado/merge_requests/2249))
302302+ - Space Overseer Improvement: Modify `create_local_space` to support multi-
303303+ local_floor space on server side.
304304+ ([!2252](https://gitlab.freedesktop.org/monado/monado/merge_requests/2252))
305305+ - Space Overseer Improvement: STAGE now supported by default. `stage_supported`
306306+ remains for drivers requiring active polling for STAGE pose
307307+ ([!2280](https://gitlab.freedesktop.org/monado/monado/merge_requests/2280))
308308+ - Space Overseer Improvement: Add `get`/`set_tracking_origin_offset`,
309309+ `get`/`set_reference_space_offset`
310310+ ([!2284](https://gitlab.freedesktop.org/monado/monado/merge_requests/2284))
311311+ - Space Overseer Improvement: Enabled recentering local spaces
312312+ ([!2351](https://gitlab.freedesktop.org/monado/monado/merge_requests/2351))
313313+ - Util Add: Support multi-localspace on server side.
314314+ ([!2130](https://gitlab.freedesktop.org/monado/monado/merge_requests/2130))
315315+ - Util Add: Add not-implemented fallback function for
316316+ `xrt_device::get_battery_status`.
317317+ ([!2292](https://gitlab.freedesktop.org/monado/monado/merge_requests/2292))
318318+ - Util Add: Add `U_PACING_APP_IMMEDIATE_WAIT_FRAME_RETURN` option to pacing which
319319+ will wake the application as soon as possible to begin work on new frames.
320320+ ([!2293](https://gitlab.freedesktop.org/monado/monado/merge_requests/2293))
321321+ - Util Change: Change `u_device_noop_update_inputs` to return `xrt_result_t`.
322322+ ([!2246](https://gitlab.freedesktop.org/monado/monado/merge_requests/2246))
323323+ - Util Fix: Fixed headless local space creation
324324+ ([!2255](https://gitlab.freedesktop.org/monado/monado/merge_requests/2255))
325325+ - Util Fix: Overflow in JSON logging mode.
326326+ ([!2373](https://gitlab.freedesktop.org/monado/monado/merge_requests/2373))
327327+ - Util Improvement: Add support for device feature usage in system helper.
328328+ ([!2223](https://gitlab.freedesktop.org/monado/monado/merge_requests/2223))
329329+ - Vulkan Improvement: Handle `VK_KHR_image_format_list` and use it when
330330+ appropriate/requested.
331331+ ([!2352](https://gitlab.freedesktop.org/monado/monado/merge_requests/2352),
332332+ [#410](https://gitlab.freedesktop.org/monado/monado/issues/410))
333333+- Documentation
334334+ - Illustrate various control flows for swapchain image allocation, including
335335+ interaction with IPC.
336336+ ([!2300](https://gitlab.freedesktop.org/monado/monado/merge_requests/2300))
337337+ - Improvement: Doxygen code documentation improvements.
338338+ ([!2322](https://gitlab.freedesktop.org/monado/monado/merge_requests/2322),
339339+ [!2333](https://gitlab.freedesktop.org/monado/monado/merge_requests/2333),
340340+ [!2378](https://gitlab.freedesktop.org/monado/monado/merge_requests/2378),
341341+ [!2379](https://gitlab.freedesktop.org/monado/monado/merge_requests/2379))
342342+ - Windows docs: update `winget` sources for external dependencies
343343+ ([!2416](https://gitlab.freedesktop.org/monado/monado/merge_requests/2416))
344344+- Misc. Features
345345+ - Add: Lifecycle tests that launch and switch OpenXR applications on Android.
346346+ ([!2311](https://gitlab.freedesktop.org/monado/monado/merge_requests/2311))
347347+ - Improvement: Handle Android activity lifecycle.
348348+ ([!1655](https://gitlab.freedesktop.org/monado/monado/merge_requests/1655),
349349+ [!2392](https://gitlab.freedesktop.org/monado/monado/merge_requests/2392))
350350+ - Improvement: Update bundled dependencies.
351351+ ([!2267](https://gitlab.freedesktop.org/monado/monado/merge_requests/2267),
352352+ [!2266](https://gitlab.freedesktop.org/monado/monado/merge_requests/2266),
353353+ [!2268](https://gitlab.freedesktop.org/monado/monado/merge_requests/2268),
354354+ [!2254](https://gitlab.freedesktop.org/monado/monado/merge_requests/2254),
355355+ [!2437](https://gitlab.freedesktop.org/monado/monado/merge_requests/2437),
356356+ [!2447](https://gitlab.freedesktop.org/monado/monado/merge_requests/2447))
357357+ - Improvement: Miscellaneous code cleanups.
358358+ ([!2342](https://gitlab.freedesktop.org/monado/monado/merge_requests/2342),
359359+ [!2409](https://gitlab.freedesktop.org/monado/monado/merge_requests/2409))
360360+ - Improvement: Update Gradle wrapper and related tools.
361361+ ([!2382](https://gitlab.freedesktop.org/monado/monado/merge_requests/2382))
362362+ - Improvement: Re-format Kotlin files.
363363+ ([!2382](https://gitlab.freedesktop.org/monado/monado/merge_requests/2382))
364364+ - cmake: Changes project c++-lang-std to C++20
365365+ ([!2258](https://gitlab.freedesktop.org/monado/monado/merge_requests/2258))
366366+- Misc. Fixes
367367+ - Add: Added `FEATURE_AHARDWARE_BUFFER` CMake option for Android
368368+ ([!2294](https://gitlab.freedesktop.org/monado/monado/merge_requests/2294))
369369+ - Change: bump minimum required CMake version to 3.22.
370370+ ([!2261](https://gitlab.freedesktop.org/monado/monado/merge_requests/2261))
371371+ - Fix: Fixed missing resource string value for Android.
372372+ ([!2257](https://gitlab.freedesktop.org/monado/monado/merge_requests/2257))
373373+ - Fix: Build system support for D3D on Windows.
374374+ ([!2276](https://gitlab.freedesktop.org/monado/monado/merge_requests/2276),
375375+ [#398](https://gitlab.freedesktop.org/monado/monado/issues/398))
376376+ - Fix: Miscellaneous build errors and warnings.
377377+ ([!2307](https://gitlab.freedesktop.org/monado/monado/merge_requests/2307),
378378+ [!2272](https://gitlab.freedesktop.org/monado/monado/merge_requests/2272),
379379+ [!2415](https://gitlab.freedesktop.org/monado/monado/merge_requests/2415),
380380+ [!2438](https://gitlab.freedesktop.org/monado/monado/merge_requests/2438),
381381+ [!2454](https://gitlab.freedesktop.org/monado/monado/merge_requests/2454))
382382+ - Fix: Reliability and robustness improvements on Android.
383383+ ([!2308](https://gitlab.freedesktop.org/monado/monado/merge_requests/2308),
384384+ [!2307](https://gitlab.freedesktop.org/monado/monado/merge_requests/2307),
385385+ [!2407](https://gitlab.freedesktop.org/monado/monado/merge_requests/2407),
386386+ [!2411](https://gitlab.freedesktop.org/monado/monado/merge_requests/2411))
387387+ - Fix: Vulkan-related crashes, Vulkan validation errors, and other Vulkan API
388388+ usage issues.
389389+ ([!2316](https://gitlab.freedesktop.org/monado/monado/merge_requests/2316),
390390+ [#428](https://gitlab.freedesktop.org/monado/monado/issues/428),
391391+ [!2332](https://gitlab.freedesktop.org/monado/monado/merge_requests/2332),
392392+ [#381](https://gitlab.freedesktop.org/monado/monado/issues/381),
393393+ [!2337](https://gitlab.freedesktop.org/monado/monado/merge_requests/2337))
394394+ - Fix: Be able to build properly in directories with whitespace.
395395+ ([!2319](https://gitlab.freedesktop.org/monado/monado/merge_requests/2319))
396396+ - Fix: Bluetooth device detection when `UserspaceHID=true` in
397397+ `/etc/bluetooth/input.conf`
398398+ ([!2336](https://gitlab.freedesktop.org/monado/monado/merge_requests/2336),
399399+ [#388](https://gitlab.freedesktop.org/monado/monado/issues/388),
400400+ [#393](https://gitlab.freedesktop.org/monado/monado/issues/393),
401401+ [#489](https://gitlab.freedesktop.org/monado/monado/issues/489))
402402+ - Fix: Fixes the image memory size of imported D3D12 texture resources being set
403403+ to zero causing zero size error messages and D3D12 swapchain creation to fail.
404404+ ([!2347](https://gitlab.freedesktop.org/monado/monado/merge_requests/2347))
405405+ - Fix: Removes unneeded warning in swapchain creation about requested sizes being
406406+ larger than sizes reported by vkGetImageMemoryRequirements for imported images.
407407+ ([!2347](https://gitlab.freedesktop.org/monado/monado/merge_requests/2347))
408408+ - Fix: Adds new image memory size parameter to D3D12 texture import functions to
409409+ fix zero size error messages and D3D12 swapchain creation to fail.
410410+ ([!2347](https://gitlab.freedesktop.org/monado/monado/merge_requests/2347))
411411+ - Fix: 32/64 bit interoperability
412412+ ([!2396](https://gitlab.freedesktop.org/monado/monado/merge_requests/2396))
413413+ - Fix: Fixed custom OpenXR target builds
414414+ ([!2422](https://gitlab.freedesktop.org/monado/monado/merge_requests/2422))
415415+ - Fix: Miscellaneous memory leak fixes.
416416+ ([!2423](https://gitlab.freedesktop.org/monado/monado/merge_requests/2423),
417417+ [!2440](https://gitlab.freedesktop.org/monado/monado/merge_requests/2440),
418418+ [!2417](https://gitlab.freedesktop.org/monado/monado/merge_requests/2417))
419419+ - Fix: Altered improper usage of MSVC to WIN32 to unblock building with Clang on
420420+ Windows.
421421+ ([](https://gitlab.freedesktop.org/monado/monado//2335))
422422+ - Improvement: Some cleanups and better Gradle project naming for Android
423423+ ([!2243](https://gitlab.freedesktop.org/monado/monado/merge_requests/2243))
424424+ - Improvement: Adjust Gradle to make debug APK builds debuggable on Android.
425425+ ([!2320](https://gitlab.freedesktop.org/monado/monado/merge_requests/2320))
426426+ - Improvement: Added various build improvements
427427+ ([!2401](https://gitlab.freedesktop.org/monado/monado/merge_requests/2401))
428428+ - Improvement: Adjust how to do IPC builds of client without service
429429+ ([!2410](https://gitlab.freedesktop.org/monado/monado/merge_requests/2410))
84309431## Monado 24.0.0 (2024-06-07)
10432
-1
doc/changes/auxiliary/mr.1786.md
···11-- Android Add: Add APIs for getting supported/current display refresh rates/rate on Android device.
-4
doc/changes/auxiliary/mr.2130.md
···11----
22-- mr.2130
33----
44-- Util Add: Support multi-localspace on server side.
-1
doc/changes/auxiliary/mr.2153.md
···11-- Android Improvement: Change the implementation of `getRuntimeSourceDir` function to support `useLegacyPackaging` set to `false`.
···11-Util Add: Add not-implemented fallback function for `xrt_device::get_battery_status`.
-1
doc/changes/auxiliary/mr.2293.md
···11-Util Add: Add `U_PACING_APP_IMMEDIATE_WAIT_FRAME_RETURN` option to pacing which will wake the application as soon as possible to begin work on new frames.
···11----
22-- mr.2295
33-- mr.2283
44-- mr.2278
55----
66-Add: introduce the environment variable 'WAYLAND_CONNECTOR' to request a specific connector on Wayland.
-5
doc/changes/compositor/mr.2317.md
···11----
22-- mr.2377
33----
44-- Add: New `comp_layer_accum` helper, factored out from `comp_base`, that collects layers and swapchains for a frame.
55-- Change: Modify `comp_base` to use `comp_layer_accum` helper, instead of inlining that code. Users of `comp_base` will need to update their code accordingly.
-7
doc/changes/compositor/mr.2323.md
···11----
22-- mr.2323
33-- mr.2380
44-- mr.2388
55----
66-- Add: Expose a `comp_render_gfx_layers` (formerly called `do_layers`) to match the `comp_render_cs_layers` function, which squashes layers.
77-- Improvement: Code and comment cleanup of compositor utilities and modules related to layer squashing and distortion, including renames in in `comp/render/*` and `comp/util/comp_render_*` for consistency.
-4
doc/changes/compositor/mr.2326.md
···11----
22-- mr.2326
33----
44-- Fix: Removed HP desktop monitor from NVIDIA allow-list.
-1
doc/changes/compositor/mr.2337.md
···11-- Improvement: Reverts the default compositor pipeline on Android from compute-shader-based back to graphics-shader-based.
-5
doc/changes/compositor/mr.2352.md
···11----
22-- issue.411
33----
44-- Fix: propagate the enabled state of `VK_KHR_image_format_list` to `vk_bundle` and fix `vk_bundle::has_KHR_image_format_list` not being set to enabled in the client compositor.
55-- Fix: Use and set format lists for `VK_KHR_image_format_list` on client Vulkan image creation when requested by Vulkan-based apps using mutable formats.
-4
doc/changes/compositor/mr.2368.md
···11----
22-- mr.2368
33----
44-- null: Don't crash on `XR_FB_display_refresh_rate` use
-5
doc/changes/compositor/mr.2375.md
···11----
22-- mr.2375
33-- mr.2391
44----
55-- Add: Support for refresh rate functions pass through to targets.
-4
doc/changes/compositor/mr.2377.md
···11----
22-- mr.2377
33----
44-- Fix: Rendering error when using the fast path.
-1
doc/changes/doc/mr.2300.md
···11-Illustrate various control flows for swapchain image allocation, including interaction with IPC.
···11----
22-- mr.2427
33----
44-- Improvement: Initialize hmd data from static role.
-3
doc/changes/libmonado/mr.2284.md
···11-- Add: In libmonado, add get/set for reference space offsets & tracking origin offsets.
22-- Add: In libmonado, add getters for tracking origin count and name.
33-- Change: Bump the libmonado API version from 1.2 to 1.3.
-1
doc/changes/libmonado/mr.2292.md
···11-Add: Add a function to libmonado for getting a device's battery status information.
···11----
22-- mr.2307
33-- mr.2308
44-- mr.2407
55-- mr.2411
66----
77-Fix: Reliability and robustness improvements on Android.
-8
doc/changes/misc_fixes/mr.2316.md
···11----
22-- mr.2316
33-- issue.428
44-- mr.2332
55-- issue.381
66-- mr.2337
77----
88-- Fix: Vulkan-related crashes, Vulkan validation errors, and other Vulkan API usage issues.
-1
doc/changes/misc_fixes/mr.2319.md
···11-Fix: Be able to build properly in directories with whitespace.
-4
doc/changes/misc_fixes/mr.2320.md
···11----
22-- mr.2320
33----
44-- Improvement: Adjust Gradle to make debug APK builds debuggable on Android.
-7
doc/changes/misc_fixes/mr.2336.md
···11----
22-- issue.388
33-- issue.393
44-- issue.489
55-- mr.2336
66----
77-- Fix: Bluetooth device detection when `UserspaceHID=true` in `/etc/bluetooth/input.conf`
-3
doc/changes/misc_fixes/mr.2347.md
···11-- Fix: Fixes the image memory size of imported D3D12 texture resources being set to zero causing zero size error messages and D3D12 swapchain creation to fail.
22-- Fix: Removes unneeded warning in swapchain creation about requested sizes being larger than sizes reported by vkGetImageMemoryRequirements for imported images.
33-- Fix: Adds new image memory size parameter to D3D12 texture import functions to fix zero size error messages and D3D12 swapchain creation to fail.
-4
doc/changes/misc_fixes/mr.2396.md
···11----
22-- mr.2396
33----
44-- Fix: 32/64 bit interoperability
-4
doc/changes/misc_fixes/mr.2401.md
···11----
22-- mr.2401
33----
44-- Improvement: Added various build improvements
-4
doc/changes/misc_fixes/mr.2410.md
···11----
22-- mr.2410
33----
44-- Improvement: Adjust how to do IPC builds of client without service
···11----
22-- rm.2335
33----
44-- Fix: Altered improper usage of MSVC to WIN32 to unblock building with Clang on Windows.
-7
doc/changes/state_trackers/mr.1934.md
···11----
22-- mr.1934
33-- mr.2344
44-- mr.2162
55----
66-- OpenXR Fix: possible deadlock from unanswered `xrWaitFrame`.
77-- OpenXR Fix: conformance issues related to session state and session running/non-running.
-1
doc/changes/state_trackers/mr.2223.md
···11-OpenXR Improvement: Add support for device feature usage
-4
doc/changes/state_trackers/mr.2256.md
···11----
22-- mr.2256
33----
44-- OpenXR Fix: Fix `XR_TIMEOUT_EXPIRED` return value on timeout of Vulkan swapchain waiting.
···11----
22-- mr.2330
33----
44-- OpenXR Add: Expose all current controller grip poses via MNDX_xdev_space.
-4
doc/changes/state_trackers/mr.2352.md
···11----
22-- issue.411
33----
44-- OpenXR Fix: `(oxr_)xrGetVulkanDeviceExtensionsKHR` not outputting `VK_KHR_image_format_list` to the list of extensions to enable for apps using `XR_KHR_vulkan_enable` when `KHR_vulkan_swapchain_format_list` is enabled & used.
···11----
22-- mr.2354
33----
44-- OpenXR Fix: Fixed crash getting ref space bounds in headless mode
-1
doc/changes/state_trackers/mr.2370.md
···11-- OpenXR Add: Implement the `XR_EXT_active_action_set_priority` extension.
-4
doc/changes/state_trackers/mr.2406.md
···11----
22-- mr.2406
33----
44-- OpenXR Fix: Crash related to depth layer handling.
-3
doc/changes/xrt/mr.1655.md
···11-- Change: Move `xrt_instance_info` members to nested `xrt_application_info` struct, and add a parallel `xrt_platform_info`.
22-- Add: New `xrt/xrt_android.h` header.
33-- Change: Add `xrt_instance_android` interface, optional aspect of `xrt_instance` when building on Android.
-3
doc/changes/xrt/mr.1786.md
···11-- Add: `xrt_compositor::get_display_refresh_rate` so that the application can get the current display refresh rate.
22-- Add: `xrt_compositor::request_display_refresh_rate` so that the application can trigger a display refresh rate change.
33-- Add: `xrt_compositor_event_display_refresh_rate_change` so compositor can notify applications that the display refresh rate has been changed.
···11-Change: Add `localfloorspace` and modify `create_local_space` to support multi-local_floor space on server side.
-2
doc/changes/xrt/mr.2271.md
···11-- Change: `xrt_device_get_tracked_pose` returns `xrt_result_t` to improve error handling in the state tracker.
22-- Add: Introduce `XRT_ERROR_INPUT_UNSUPPORTED`.