···55SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Monado contributors
66```
7788+## Monado 0.2 (2020-05-29)
99+1010+- Major changes
1111+ - Add support for a new service process. This process houses the hardware drivers
1212+ and compositor. In order to do this, a whole new subsection of Monado called
1313+ ipc
1414+ was added. It lives in `src/xrt/ipc` and sits between the state trackers
1515+ and
1616+ the service hosting the drivers and compositor.
1717+ ([!295](https://gitlab.freedesktop.org/monado/monado/merge_requests/295))
1818+ - Support optional systemd socket-activation: if not disabled at configure time,
1919+ `monado-service` can be launched by systemd as a service with an associated
2020+ socket. If the service is launched this way, it will use the systemd-created
2121+ domain socket instead of creating its own. (If launched manually, it will still
2222+ create its own as normal.) This allows optional auto-launching of the service
2323+ when running a client (OpenXR) application. Associated systemd unit files are
2424+ also included.
2525+ ([!306](https://gitlab.freedesktop.org/monado/monado/merge_requests/306))
2626+- XRT Interface
2727+ - Add a new settings interface for transporting camera settings, in
2828+ `xrt/xrt_settings.h`.
2929+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
3030+ - Make it possible to send JSON object to drivers when probing for devices.
3131+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
3232+ - Added new `xrt_instance` object to be root object, a singleton that allows us
3333+ to
3434+ better swap out the whole stack underneath the state trackers. This is now
3535+ implemented by the `xrt_prober` code and used by the OpenXR state tracker.
3636+ ([!274](https://gitlab.freedesktop.org/monado/monado/merge_requests/274))
3737+ - Remove the `struct timestate` argument from the `struct xrt_device` interface.
3838+ It should be easy to write a driver and the state tracker should be the one
3939+ that tracks this state. It was mostly triggered by the out of process
4040+ compositor work.
4141+ ([!280](https://gitlab.freedesktop.org/monado/monado/merge_requests/280))
4242+ - Add the new format `XRT_FORMAT_UYVY422` to the interface and various parts of
4343+ the code where it is needed to be supported, like the conversion functions and
4444+ calibration code. Also rename the `XRT_FORMAT_YUV422` to `XRT_FORMAT_YUYV422`.
4545+ ([!283](https://gitlab.freedesktop.org/monado/monado/merge_requests/283))
4646+ - Expose manufacturer and serial number in the prober interface, right now only
4747+ for the video device probing. But this is the only thing that really requires
4848+ this in order to tell different cameras apart.
4949+ ([!286](https://gitlab.freedesktop.org/monado/monado/merge_requests/286))
5050+ - Add `XRT_CAST_PTR_TO_OXR_HANDLE` and `XRT_CAST_OXR_HANDLE_TO_PTR` macros to
5151+ perform warning-free conversion between pointers and OpenXR handles, even on
5252+ 32-bit platforms. They should be used instead of raw casts.
5353+ ([!294](https://gitlab.freedesktop.org/monado/monado/merge_requests/294))
5454+ - Remove declaration and implementations of `xrt_prober_create`: the minimal
5555+ functionality previously performed there should now be moved to
5656+ `xrt_instance_create`.
5757+ ([!347](https://gitlab.freedesktop.org/monado/monado/merge_requests/347))
5858+- State Trackers
5959+ - gui: Fix compilation issue in `st/gui` when building without OpenCV.
6060+ ([#63](https://gitlab.freedesktop.org/monado/monado/issues/63),
6161+ [!256](https://gitlab.freedesktop.org/monado/monado/merge_requests/256))
6262+ - OpenXR: Don't return struct with invalid type from
6363+ `xrEnumerateViewConfigurationViews`.
6464+ ([!234](https://gitlab.freedesktop.org/monado/monado/merge_requests/234))
6565+ - prober: Print more information from the prober when spewing.
6666+ ([!261](https://gitlab.freedesktop.org/monado/monado/merge_requests/261))
6767+ - gui: Save camera and calibration data using new settings structs and format.
6868+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
6969+ - prober: Load tracking config from json and use new settings struct.
7070+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
7171+ - gui: Fix name not being shown when video device does not have any modes.
7272+ ([!269](https://gitlab.freedesktop.org/monado/monado/merge_requests/269))
7373+ - gui: Remove old video test scene, never used and seemed to be broken.
7474+ ([!275](https://gitlab.freedesktop.org/monado/monado/merge_requests/275))
7575+ - gui: Fix build when OpenCV is not available or disabled.
7676+ ([!292](https://gitlab.freedesktop.org/monado/monado/merge_requests/292))
7777+ - OpenXR: Fix build when OpenGL is not enabled.
7878+ ([!292](https://gitlab.freedesktop.org/monado/monado/merge_requests/292))
7979+ - OpenXR: Validate that we support the given `XR_ENVIRONMENT_BLEND_MODE` as
8080+ according to the OpenXR spec. And better print the error messages.
8181+ ([!345](https://gitlab.freedesktop.org/monado/monado/merge_requests/345))
8282+ - OpenXR: Validate given `displayTime` in `xrEndFrame` as required by the spec.
8383+ ([!345](https://gitlab.freedesktop.org/monado/monado/merge_requests/345))
8484+ - OpenXR: Validate internal state that we get from the compositor.
8585+ ([!345](https://gitlab.freedesktop.org/monado/monado/merge_requests/345))
8686+ - OpenXR: Validate time better in xrConvertTimeToTimespecTimeKHR and add better
8787+ error print.
8888+ ([!348](https://gitlab.freedesktop.org/monado/monado/merge_requests/348))
8989+ - OpenXR: Correctly translate the `XrSwapchainCreateFlags` flags to xrt ones.
9090+ ([!349](https://gitlab.freedesktop.org/monado/monado/merge_requests/349))
9191+ - OpenXR: In order to be able to correctly validate `XrPath` ids turn them
9292+ into a atom and keep all created paths in a array.
9393+ ([!349](https://gitlab.freedesktop.org/monado/monado/merge_requests/349))
9494+ - OpenXR: Give better error messages on invalid poses in quad layers instead of
9595+ using the simple macro.
9696+ ([!350](https://gitlab.freedesktop.org/monado/monado/merge_requests/350))
9797+ - OpenXR: Validate poses for project layer views, using the same expressive error
9898+ messages as the quad layers.
9999+ ([!350](https://gitlab.freedesktop.org/monado/monado/merge_requests/350))
100100+ - OpenXR: Translate the swapchain usage bits from OpenXR enums to Monado's
101101+ internal enums.
102102+ ([!350](https://gitlab.freedesktop.org/monado/monado/merge_requests/350))
103103+ - OpenXR: Report a spec following amount of maximum layers supported.
104104+ ([!354](https://gitlab.freedesktop.org/monado/monado/merge_requests/354))
105105+ - OpenXR: Correctly reject invalid times given to `xrLocateSpace`.
106106+ ([!354](https://gitlab.freedesktop.org/monado/monado/merge_requests/354))
107107+ - OpenXR: Correctly handle the space relation flag bits, some old hacked up code
108108+ left over since Monado's first days have been removed.
109109+ ([!356](https://gitlab.freedesktop.org/monado/monado/merge_requests/356))
110110+- Drivers
111111+ - dd: Add a driver for the Google Daydream View controller.
112112+ ([!242](https://gitlab.freedesktop.org/monado/monado/merge_requests/242))
113113+ - all: Use new pre-filter and 3-DoF filter in drivers.
114114+ ([!249](https://gitlab.freedesktop.org/monado/monado/merge_requests/249))
115115+ - arduino: Added a Arduino based flexible input device driver, along with
116116+ Arduino C++ code for it.
117117+ ([!251](https://gitlab.freedesktop.org/monado/monado/merge_requests/251))
118118+ - psmv: Use all 6 measurements to compute acceleration bias, and port to new
119119+ IMU prefilter.
120120+ ([!255](https://gitlab.freedesktop.org/monado/monado/merge_requests/255))
121121+ - v4l2: Add special tweaks for the ELP camera.
122122+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
123123+ - vive: Add basic 3DOF driver for Vive Wand Controller with full input support
124124+ and
125125+ Valve Index Controller with partial input support.
126126+ ([!281](https://gitlab.freedesktop.org/monado/monado/merge_requests/281))
127127+ - psvr: Use a better 3dof fusion for the PSVR when no tracking is available.
128128+ ([!282](https://gitlab.freedesktop.org/monado/monado/merge_requests/282))
129129+ - psvm: Move the led and rumble updating from the application facing
130130+ update_inputs
131131+ function to the internal thread instead.
132132+ ([!287](https://gitlab.freedesktop.org/monado/monado/merge_requests/287))
133133+ - psmv: Fix failure to build from source on PPC.
134134+ ([!288](https://gitlab.freedesktop.org/monado/monado/merge_requests/288),
135135+ [#69](https://gitlab.freedesktop.org/monado/monado/issues/69))
136136+- Compositor
137137+ - main: Fix XCB memory leaks and correctly use XCB/Xlib interop.
138138+ ([!257](https://gitlab.freedesktop.org/monado/monado/merge_requests/257))
139139+ - main: Shorten Vulkan initializers.
140140+ ([!259](https://gitlab.freedesktop.org/monado/monado/merge_requests/259))
141141+ - main: Port XCB and direct mode back ends to plain C.
142142+ ([!262](https://gitlab.freedesktop.org/monado/monado/merge_requests/262))
143143+ - main: Add support for Vive Pro, Valve Index, Oculus DK1, DK2 and CV1 to NVIDIA
144144+ direct mode.
145145+ ([!263](https://gitlab.freedesktop.org/monado/monado/merge_requests/263))
146146+ - client: Make sure that the number of images is decided by the fd compositor.
147147+ ([!270](https://gitlab.freedesktop.org/monado/monado/merge_requests/270))
148148+ - main: Split RandR and NVIDIA direct mode window back ends.
149149+ ([!271](https://gitlab.freedesktop.org/monado/monado/merge_requests/271))
150150+ - main: Improve synchronization and remove redundant vkDeviceWaitIdle calls.
151151+ ([!277](https://gitlab.freedesktop.org/monado/monado/merge_requests/277))
152152+ - main: Delay the destruction of swapchains until a time where it is safe, this
153153+ allows swapchains to be destroyed from other threads.
154154+ ([!278](https://gitlab.freedesktop.org/monado/monado/merge_requests/278))
155155+ - client: Propegate the supported formats from the real compositor to the client
156156+ ones. ([!282](https://gitlab.freedesktop.org/monado/monado/merge_requests/282))
157157+ - renderer: Change the idle images colour from bright white to grey.
158158+ ([!282](https://gitlab.freedesktop.org/monado/monado/merge_requests/282))
159159+ - main: Add support for multiple projection layers.
160160+ ([!340](https://gitlab.freedesktop.org/monado/monado/merge_requests/340))
161161+ - main: Implement quad layers.
162162+ ([!340](https://gitlab.freedesktop.org/monado/monado/merge_requests/340))
163163+ - main: Only allocate one image for static swapchains.
164164+ ([!349](https://gitlab.freedesktop.org/monado/monado/merge_requests/349))
165165+- Helper Libraries
166166+ - tracking: Add image undistort/normalize cache mechanism, to avoid needing to
167167+ remap every frame.
168168+ ([!255](https://gitlab.freedesktop.org/monado/monado/merge_requests/255))
169169+ - tracking: Improve readability and documentation of IMU fusion class.
170170+ ([!255](https://gitlab.freedesktop.org/monado/monado/merge_requests/255))
171171+ - u/file: Add file helpers to load files from config directory.
172172+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
173173+ - u/json: Add bool getter function.
174174+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
175175+ - tracking: Expose save function with none hardcode path for calibration data.
176176+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
177177+ - tracking: Remove all path hardcoded calibration data loading and saving
178178+ functions.
179179+ ([!266](https://gitlab.freedesktop.org/monado/monado/merge_requests/266))
180180+ - threading: New helper functions and structs for doing threaded work, these are
181181+ on a higher level then the one in os wrappers.
182182+ ([!278](https://gitlab.freedesktop.org/monado/monado/merge_requests/278))
183183+ - threading: Fix missing `#pragma once` in `os/os_threading.h`.
184184+ ([!282](https://gitlab.freedesktop.org/monado/monado/merge_requests/282))
185185+ - u/time: Temporarily disable the time skew in time state and used fixed offset
186186+ instead to fix various time issues in `st/oxr`. Will be fixed properly later.
187187+ ([!348](https://gitlab.freedesktop.org/monado/monado/merge_requests/348))
188188+ - math: Correctly validate quaternion using non-squared "length" instead of
189189+ squared "length", certain combinations of elements would produce valid regular
190190+ "length" but not valid squared ones.
191191+ ([!350](https://gitlab.freedesktop.org/monado/monado/merge_requests/350))
192192+- Misc. Features
193193+ - build: Refactor CMake build system to make static (not object) libraries and
194194+ explicitly describe dependencies.
195195+ ([!233](https://gitlab.freedesktop.org/monado/monado/merge_requests/233),
196196+ [!237](https://gitlab.freedesktop.org/monado/monado/merge_requests/237),
197197+ [!238](https://gitlab.freedesktop.org/monado/monado/merge_requests/238),
198198+ [!240](https://gitlab.freedesktop.org/monado/monado/merge_requests/240))
199199+ - os/ble: Add utility functionality for accessing Bluetooth Low-Energy (Bluetooth
200200+ LE or BLE) over D-Bus, in `os/os_ble.h` and `os/os_ble_dbus.c`.
201201+ ([!242](https://gitlab.freedesktop.org/monado/monado/merge_requests/242))
202202+ - util: Add some bit manipulation helper functions in `util/u_bitwise.c` and
203203+ `util/u_bitwise.c`.
204204+ ([!242](https://gitlab.freedesktop.org/monado/monado/merge_requests/242))
205205+ - tracking: Make stereo_camera_calibration reference counted, and have the
206206+ prober,
207207+ not the calibration, call the save function.
208208+ ([!245](https://gitlab.freedesktop.org/monado/monado/merge_requests/245))
209209+ - math: Expand algebraic math functions in `math/m_api.h`, `math/m_vec3.h` and
210210+ `math/m_base.cpp`.
211211+ ([!249](https://gitlab.freedesktop.org/monado/monado/merge_requests/249))
212212+ - math: Add pre-filter and a simple understandable 3-DoF fusion filter.
213213+ ([!249](https://gitlab.freedesktop.org/monado/monado/merge_requests/249))
214214+ - build: Enable the build system to install `monado-cli` and `monado-gui`.
215215+ ([!252](https://gitlab.freedesktop.org/monado/monado/merge_requests/252))
216216+ - build: Unify inputs for generated files between CMake and Meson builds.
217217+ ([!252](https://gitlab.freedesktop.org/monado/monado/merge_requests/252))
218218+ - build: Support building with system cJSON instead of bundled copy.
219219+ ([!284](https://gitlab.freedesktop.org/monado/monado/merge_requests/284),
220220+ [#62](https://gitlab.freedesktop.org/monado/monado/issues/62))
221221+ - ci: Perform test builds using the Android NDK (for armeabi-v7a and armv8-a).
222222+ This is not a full Android port (missing a compositor, etc) but it ensures we
223223+ don't add more Android porting problems.
224224+ ([!292](https://gitlab.freedesktop.org/monado/monado/merge_requests/292))
225225+- Misc. Fixes
226226+ - os/ble: Check if `org.bluez` name is available before calling in
227227+ `os/os_ble_dbus.c`.
228228+ ([#65](https://gitlab.freedesktop.org/monado/monado/issues/65),
229229+ [#64](https://gitlab.freedesktop.org/monado/monado/issues/64),
230230+ [!265](https://gitlab.freedesktop.org/monado/monado/merge_requests/265))
231231+ - README: Added information to the README containing OpenHMD version requirement
232232+ and information regarding the requirement of `GL_EXT_memory_object_fd` and
233233+ limitations on Monado's compositor.
234234+ ([!4](https://gitlab.freedesktop.org/monado/monado/merge_requests/4))
235235+ - build: Fix build issues and build warnings when 32-bit.
236236+ ([!230](https://gitlab.freedesktop.org/monado/monado/merge_requests/230))
237237+ - os/ble: Fix crash due to bad dbus path, triggered by bad return checking when
238238+ probing for BLE devices.
239239+ ([!247](https://gitlab.freedesktop.org/monado/monado/merge_requests/247))
240240+ - d/dd: Use the correct time delta in DayDream driver.
241241+ ([!249](https://gitlab.freedesktop.org/monado/monado/merge_requests/249))
242242+ - doc: Stop changelog snippets from showing up in 'Related Pages'
243243+ ([!253](https://gitlab.freedesktop.org/monado/monado/merge_requests/253))
244244+ - build: Fix meson warnings, increase compiler warning level.
245245+ ([!258](https://gitlab.freedesktop.org/monado/monado/merge_requests/258))
246246+ - os/ble: Fix leak in `os/os_ble_dbus.c` code when failing to find any device.
247247+ ([!264](https://gitlab.freedesktop.org/monado/monado/merge_requests/264))
248248+ - os/ble: Make ble code check for some error returns in `os/os_ble_dbus.c`.
249249+ ([!265](https://gitlab.freedesktop.org/monado/monado/merge_requests/265))
250250+ - u/hashset: Fix warnings in `util/u_hashset.h` after pedantic warnings were
251251+ enabled for C++.
252252+ ([!268](https://gitlab.freedesktop.org/monado/monado/merge_requests/268))
253253+ - build: Fix failure to build from source on ppc64 and s390x.
254254+ ([!284](https://gitlab.freedesktop.org/monado/monado/merge_requests/284))
255255+ - build: Mark OpenXR runtime target in CMake as a MODULE library, instead of a
256256+ SHARED library.
257257+ ([!284](https://gitlab.freedesktop.org/monado/monado/merge_requests/284))
258258+ - windows: Way way back when Gallium was made `auxiliary` was named `aux` but
259259+ then
260260+ it was ported to Windows and it was renamed to `auxiliary` since Windows
261261+ is [allergic to filenames that match its device names](https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions)
262262+ (e.g., `AUX`, `CON`, `PRN`, etc.). Through the ages, this knowledge was lost
263263+ and so we find ourselves with the same problem. Although Monado inherited
264264+ the correct name, the same old mistake was made in docs.
265265+ ([!314](https://gitlab.freedesktop.org/monado/monado/merge_requests/314))
266266+ - build: For CMake rename (nearly) all build options so they begin with `XRT_`
267267+ and match the defines used in the source. You will probably want to clear
268268+ your build directory and reconfigure from scratch.
269269+ ([!327](https://gitlab.freedesktop.org/monado/monado/merge_requests/327))
270270+ - ipc: Correctly set the shared semaphore value when creating it, the wrong value
271271+ resulted in the client not blocking in `xrWaitFrame`.
272272+ ([!348](https://gitlab.freedesktop.org/monado/monado/merge_requests/348))
273273+ - ipc: Previously some arguments where dropped at swapchain creation time,
274274+ correct pass them between the client and server.
275275+ ([!349](https://gitlab.freedesktop.org/monado/monado/merge_requests/349))
276276+8277## Monado 0.1.0 (2020-02-24)
927810279Initial (non-release) tag to promote/support packaging.
280280+