The open source OpenXR runtime

doc: Update CHANGELOG.md

+295
+295
doc/CHANGELOG.md
··· 5 5 SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Monado contributors 6 6 ``` 7 7 8 + ## Monado 0.4.0 (2020-11-02) 9 + 10 + - XRT Interface 11 + - add `xrt_device_type` to `xrt_device` to differentiate handed controllers 12 + from 13 + controllers that can be held in either hand. 14 + ([!412](https://gitlab.freedesktop.org/monado/monado/merge_requests/412)) 15 + - Rename functions and types that assumed the native graphics buffer handle type 16 + was an FD: in `auxiliary/vk/vk_helpers.{h,c}` `vk_create_image_from_fd` -> 17 + `vk_create_image_from_native`, in the XRT headers `struct xrt_compositor_fd` -> 18 + `xrt_compositor_native` (and method name changes from `xrt_comp_fd_...` -> 19 + `xrt_comp_native_...`), `struct xrt_swapchain_fd` -> `struct 20 + xrt_swapchain_native`, `struct xrt_image_fd` -> `struct xrt_image_native`, and 21 + corresponding parameter/member/variable name changes (e.g. `struct 22 + xrt_swapchain_fd *xscfd` becomes `struct xrt_swapchain_native *xscn`). 23 + ([!426](https://gitlab.freedesktop.org/monado/monado/merge_requests/426), 24 + [!428](https://gitlab.freedesktop.org/monado/monado/merge_requests/428)) 25 + - Make some fields on `xrt_gl_swapchain` and `xrt_vk_swapchain` private moving 26 + them into the client compositor code instead of exposing them. 27 + ([!444](https://gitlab.freedesktop.org/monado/monado/merge_requests/444)) 28 + - Make `xrt_compositor::create_swapchain` return xrt_result_t instead of the 29 + swapchain, this makes the methods on `xrt_compositor` more uniform. 30 + ([!444](https://gitlab.freedesktop.org/monado/monado/merge_requests/444)) 31 + - Add the method `xrt_compositor::import_swapchain` allowing a state tracker to 32 + create a swapchain from a set of pre-allocated images. Uses the same 33 + `xrt_swapchain_create_info` as `xrt_compositor::create_swapchain`. 34 + ([!444](https://gitlab.freedesktop.org/monado/monado/merge_requests/444)) 35 + - Make `xrt_swapchain_create_flags` swapchain static image bit match OpenXR. 36 + ([!454](https://gitlab.freedesktop.org/monado/monado/merge_requests/454)) 37 + - Add `XRT_SWAPCHAIN_USAGE_INPUT_ATTACHMENT` flag to `xrt_swapchain_usage_bits` 38 + so that a client can create a Vulkan swapchain that can be used as input 39 + attachment. 40 + ([!459](https://gitlab.freedesktop.org/monado/monado/merge_requests/459)) 41 + - Remove the `flip_y` parameter to the creation of the native compositor, this 42 + is 43 + now a per layer thing. 44 + ([!461](https://gitlab.freedesktop.org/monado/monado/merge_requests/461)) 45 + - Add `xrt_compositor_info` struct that allows the compositor carry information 46 + to about it's capbilities and it's recommended values. Not everything is hooked 47 + up at the moment. 48 + ([!461](https://gitlab.freedesktop.org/monado/monado/merge_requests/461)) 49 + - Add defines for underlying handle types. 50 + ([!469](https://gitlab.freedesktop.org/monado/monado/merge_requests/469)) 51 + - Add a native handle type for graphics sync primitives (currently file 52 + descriptors on all platforms). 53 + ([!469](https://gitlab.freedesktop.org/monado/monado/merge_requests/469)) 54 + - Add a whole bunch of structs and functions for all of the different layers 55 + in 56 + OpenXR. The depth layer information only applies to the stereo projection 57 + so 58 + make a special stereo projection with depth layer. 59 + ([!476](https://gitlab.freedesktop.org/monado/monado/merge_requests/476)) 60 + - Add `xrt_image_native_allocator` as a friend to the compositor interface. This 61 + simple interface is intended to be used by the IPC interface to allocate 62 + `xrt_image_native` on the client side and send those to the service. 63 + ([!478](https://gitlab.freedesktop.org/monado/monado/merge_requests/478)) 64 + - Re-arrange and document `xrt_image_native`, making the `size` field optional. 65 + ([!493](https://gitlab.freedesktop.org/monado/monado/merge_requests/493)) 66 + - Add const to all compositor arguments that are info structs, making the 67 + interface safer and 68 + more clear. Also add `max_layers` field to the 69 + `xrt_compositor_info` struct. 70 + ([!501](https://gitlab.freedesktop.org/monado/monado/merge_requests/501)) 71 + - Add `xrt_space_graph` struct for calculating space relations. This struct and 72 + accompanying makes it easier to reason about space relations than just 73 + functions 74 + operating directly on `xrt_space_relation`. The code base is changed 75 + to use 76 + these new functions. 77 + ([!519](https://gitlab.freedesktop.org/monado/monado/merge_requests/519)) 78 + - Remove the `linear_acceleration` and `angular_acceleration` fields from the 79 + `xrt_space_relation` struct, these were not used in the codebase and are not 80 + exposed in the OpenXR API. They can easily be added back should they be 81 + required again by code or a future feature. Drivers are free to retain this 82 + information internally, but no longer expose it. 83 + ([!519](https://gitlab.freedesktop.org/monado/monado/merge_requests/519)) 84 + - Remove the `out_timestamp` argument to the `xrt_device::get_tracked_pose` 85 + function, it's not needed anymore and the devices can do prediction better 86 + as 87 + it knows more about it's tracking system the the state tracker. 88 + ([!521](https://gitlab.freedesktop.org/monado/monado/merge_requests/521)) 89 + - Replace mesh generator with `compute_distortion` function on `xrt_device`. This 90 + is used to both make it possible to use mesh shaders for devices and to provide 91 + compatibility with SteamVR which requires a `compute_distortion` function as 92 + well. 93 + 94 + The compositor uses this function automatically to create a mesh and 95 + uses mesh 96 + distortion for all drivers. The function `compute_distortion` default 97 + implementations for `none`, `panotools` and `vive` distortion models are 98 + provided in util. 99 + ([!536](https://gitlab.freedesktop.org/monado/monado/merge_requests/536)) 100 + - Add a simple curl value based finger tracking model and use it for vive and 101 + survive controllers. 102 + ([!555](https://gitlab.freedesktop.org/monado/monado/merge_requests/555)) 103 + - State Trackers 104 + - OpenXR: Add support for attaching Quad layers to action sapces. 105 + ([!437](https://gitlab.freedesktop.org/monado/monado/merge_requests/437)) 106 + - OpenXR: Use initial head pose as origin for local space. 107 + ([!443](https://gitlab.freedesktop.org/monado/monado/merge_requests/443)) 108 + - OpenXR: Minor fixes for various bits of code: copy-typo in device assignment 109 + code; better stub for the unimplemented function 110 + `xrEnumerateBoundSourcesForAction`; better error message on internal error in 111 + `xrGetCurrentInteractionProfile`. 112 + ([!448](https://gitlab.freedesktop.org/monado/monado/merge_requests/448)) 113 + - OpenXR: Make the `xrGetCurrentInteractionProfile` conformance tests pass, 114 + needed 115 + to implement better error checking as well as generating 116 + `XrEventDataInteractionProfileChanged` events to the client. 117 + ([!448](https://gitlab.freedesktop.org/monado/monado/merge_requests/448)) 118 + - OpenXR: Centralize all sub-action path iteration in some x-macros. 119 + ([!449](https://gitlab.freedesktop.org/monado/monado/merge_requests/449), 120 + [!456](https://gitlab.freedesktop.org/monado/monado/merge_requests/456)) 121 + - OpenXR: Improve the validation in the API function for 122 + `xrGetInputSourceLocalizedName`. 123 + ([!451](https://gitlab.freedesktop.org/monado/monado/merge_requests/451)) 124 + - OpenXR: Implement the function `xrEnumerateBoundSourcesForAction`, currently we 125 + only bind one input per top level user path and it's easy to track this. 126 + ([!451](https://gitlab.freedesktop.org/monado/monado/merge_requests/451)) 127 + - OpenXR: Properly handle more than one input source being bound to the same 128 + action 129 + according to the combination rules of the specification. 130 + ([!452](https://gitlab.freedesktop.org/monado/monado/merge_requests/452)) 131 + - OpenXR: Fix multiplicity of bounds paths per action - there's one per 132 + input/output. 133 + ([!456](https://gitlab.freedesktop.org/monado/monado/merge_requests/456)) 134 + - OpenXR: Implement the MND_swapchain_usage_input_attachment_bit extension. 135 + ([!459](https://gitlab.freedesktop.org/monado/monado/merge_requests/459)) 136 + - OpenXR: Refactor the native compositor handling a bit, this creates the 137 + compositor earlier then before. This allows us to get the viewport information 138 + from it. 139 + ([!461](https://gitlab.freedesktop.org/monado/monado/merge_requests/461)) 140 + - OpenXR: Implement action set priorities and fix remaining action conformance 141 + tests. 142 + ([!462](https://gitlab.freedesktop.org/monado/monado/merge_requests/462)) 143 + - st/oxr: Fix crash when calling `xrPollEvents` when headless mode is selected. 144 + ([!475](https://gitlab.freedesktop.org/monado/monado/merge_requests/475)) 145 + - OpenXR: Add stub functions and support plumbing for a lot of layer extensions. 146 + ([!476](https://gitlab.freedesktop.org/monado/monado/merge_requests/476)) 147 + - OpenXR: Be sure to return `XR_ERROR_FEATURE_UNSUPPORTED` if the protected 148 + content bit is set and the compositor does not support it. 149 + ([!481](https://gitlab.freedesktop.org/monado/monado/merge_requests/481)) 150 + - OpenXR: Update to 1.0.11 and start returning the new 151 + `XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING` code added in this release. 152 + ([!482](https://gitlab.freedesktop.org/monado/monado/merge_requests/482)) 153 + - OpenXR: Enable the `XR_KHR_android_create_instance` extension. 154 + ([!492](https://gitlab.freedesktop.org/monado/monado/merge_requests/492)) 155 + - OpenXR: Add support for creating swapchains with depth formats and submitting 156 + depth layers. The depth layers are passed through to the compositor, but are 157 + not used yet. 158 + ([!498](https://gitlab.freedesktop.org/monado/monado/merge_requests/498)) 159 + - OpenXR: For pose actions the any path (`XR_NULL_PATH`) needs to be special 160 + cased, essentially turning into a separate action sub path, that is assigned 161 + at 162 + binding time. 163 + ([!510](https://gitlab.freedesktop.org/monado/monado/merge_requests/510)) 164 + - OpenXR: More correctly implement `xrGetInputSourceLocalizedName` allowing apps 165 + to more accurently tell the user which input to use. 166 + ([!532](https://gitlab.freedesktop.org/monado/monado/merge_requests/532)) 167 + - OpenXR: Pass through equirect layer data to the compositor. 168 + ([!566](https://gitlab.freedesktop.org/monado/monado/merge_requests/566)) 169 + - Drivers 170 + - psvr: We were sending in the wrong type of time to the 3DOF fusion code, 171 + switch 172 + to nanoseconds instead of fractions of seconds. 173 + ([!474](https://gitlab.freedesktop.org/monado/monado/merge_requests/474)) 174 + - rs: Make the pose getting from the T265 be threaded. Before we where getting 175 + the 176 + pose from the update input function, this would cause some the main thread 177 + to 178 + block and would therefore cause jitter in the rendering. 179 + ([!486](https://gitlab.freedesktop.org/monado/monado/merge_requests/486)) 180 + - survive: Add lighthouse tracking system type 181 + hydra: Add lighthouse tracking 182 + system type 183 + ([!489](https://gitlab.freedesktop.org/monado/monado/merge_requests/489)) 184 + - rs: Add slam tracking system type 185 + northstar: Use tracking system from tracker 186 + (e.g. rs) if available. 187 + ([!494](https://gitlab.freedesktop.org/monado/monado/merge_requests/494)) 188 + - psmv: Introduce proper grip and aim poses, correctly rotate the grip pose to 189 + follow the spec more closely. The aim poses replaces the previous ball tip pose 190 + that was used before for aim. 191 + ([!509](https://gitlab.freedesktop.org/monado/monado/merge_requests/509)) 192 + - survive: Implement haptic feedback. 193 + ([!557](https://gitlab.freedesktop.org/monado/monado/merge_requests/557)) 194 + - dummy: Tidy the code a bit and switch over to the new 195 + logging API. 196 + ([!572](https://gitlab.freedesktop.org/monado/monado/merge_requests/572), 197 + [!573](https://gitlab.freedesktop.org/monado/monado/merge_requests/573)) 198 + - psvr: Switch to the new logging API. 199 + ([!573](https://gitlab.freedesktop.org/monado/monado/merge_requests/573)) 200 + - Add initial "Cardboard" phone-holder driver for Android. 201 + ([!581](https://gitlab.freedesktop.org/monado/monado/merge_requests/581)) 202 + - IPC 203 + - Generalize handling of native-platform handles in IPC code, allow bi- 204 + directional handle transfer, and de-duplicate code between server and client. 205 + ([!413](https://gitlab.freedesktop.org/monado/monado/merge_requests/413), 206 + [!427](https://gitlab.freedesktop.org/monado/monado/merge_requests/427)) 207 + - generation: Fix handling 'in_handle' by adding a extra sync round-trip, this 208 + might be solvable by using `SOCK_SEQPACKET`. 209 + ([!444](https://gitlab.freedesktop.org/monado/monado/merge_requests/444)) 210 + - Implement the `xrt_compositor::import_swapchain` function, uses the earlier 211 + `in_handle` work. 212 + ([!444](https://gitlab.freedesktop.org/monado/monado/merge_requests/444)) 213 + - proto: Transport the `xrt_compositor_info` over the wire so that the client can 214 + get the needed information. 215 + ([!461](https://gitlab.freedesktop.org/monado/monado/merge_requests/461)) 216 + - client: Implement the usage of the `xrt_image_native_allocator`, currently not 217 + used. But it is needed for platforms where for various reasons the allocation 218 + must happen on the client side. 219 + ([!478](https://gitlab.freedesktop.org/monado/monado/merge_requests/478)) 220 + - client: Add a "loopback" image allocator, this code allocates a swapchain from 221 + the service then imports that back to the service as if it was imported. This 222 + tests both the import code and the image allocator code. 223 + ([!478](https://gitlab.freedesktop.org/monado/monado/merge_requests/478)) 224 + - ipc: Allow sending zero handles as a reply, at least the Linux fd handling code 225 + allows this. 226 + ([!491](https://gitlab.freedesktop.org/monado/monado/merge_requests/491)) 227 + - Use a native AHardwareBuffer allocator on the client side when building for 228 + recent-enough Android. 229 + ([!493](https://gitlab.freedesktop.org/monado/monado/merge_requests/493)) 230 + - ipc: Add functionality to disable a device input via the `monado-ctl` utility, 231 + this allows us to pass the conformance tests that requires the runtime to turn 232 + off a device. 233 + ([!511](https://gitlab.freedesktop.org/monado/monado/merge_requests/511)) 234 + - Compositor 235 + - compositor: Add support for alpha blending with premultiplied alpha. 236 + ([!425](https://gitlab.freedesktop.org/monado/monado/merge_requests/425)) 237 + - compositor: Implement subimage rectangle rendering for quad layers. 238 + ([!433](https://gitlab.freedesktop.org/monado/monado/merge_requests/433)) 239 + - compositor: Enable subimage rectangle rendering for projection layers. 240 + ([!436](https://gitlab.freedesktop.org/monado/monado/merge_requests/436)) 241 + - compositor: Fix printing of current connected displays on nvidia when no 242 + whitelisted display is found. 243 + ([!477](https://gitlab.freedesktop.org/monado/monado/merge_requests/477)) 244 + - compositor: Add env var to temporarily add display string to nvidia whitelist. 245 + ([!477](https://gitlab.freedesktop.org/monado/monado/merge_requests/477)) 246 + - compositor and clients: Use a generic typedef to represent the platform- 247 + specific graphics buffer, allowing use of `AHardwareBuffer` on recent Android. 248 + ([!479](https://gitlab.freedesktop.org/monado/monado/merge_requests/479)) 249 + - compositor: Check the protected content bit, and return a non-success code if 250 + it's set. Supporting this is optional in OpenXR, but lack of support must be 251 + reported to the application. 252 + ([!481](https://gitlab.freedesktop.org/monado/monado/merge_requests/481)) 253 + - compositor: Implement cylinder layers. 254 + ([!495](https://gitlab.freedesktop.org/monado/monado/merge_requests/495)) 255 + - main: Set the maximum layers supported to 16, we technically support more than 256 + 16, but things get out of hand if multiple clients are running and all are 257 + using 258 + max layers. 259 + ([!501](https://gitlab.freedesktop.org/monado/monado/merge_requests/501)) 260 + - main: Add code to check that a format is supported by the GPU before exposing. 261 + ([!502](https://gitlab.freedesktop.org/monado/monado/merge_requests/502)) 262 + - compositor: Remove panotools and vive shaders from compositor. 263 + ([!538](https://gitlab.freedesktop.org/monado/monado/merge_requests/538)) 264 + - Initial work on a port of the compositor to Android. 265 + ([!547](https://gitlab.freedesktop.org/monado/monado/merge_requests/547)) 266 + - render: Implement equirect layer rendering. 267 + ([!566](https://gitlab.freedesktop.org/monado/monado/merge_requests/566)) 268 + - main: Fix leaks of sampler objects that was introduced in !566. 269 + ([!571](https://gitlab.freedesktop.org/monado/monado/merge_requests/571)) 270 + - Helper Libraries 271 + - u/vk: Remove unused vk_image struct, this is later recreated for the image 272 + allocator code. 273 + ([!444](https://gitlab.freedesktop.org/monado/monado/merge_requests/444)) 274 + - u/vk: Add a new image allocate helper, this is used by the main compositor to 275 + create, export and import swapchain images. 276 + ([!444](https://gitlab.freedesktop.org/monado/monado/merge_requests/444)) 277 + - u/vk: Rename `vk_create_semaphore_from_fd` to `vk_create_semaphore_from_native` 278 + ([!469](https://gitlab.freedesktop.org/monado/monado/merge_requests/469)) 279 + - aux/android: New Android utility library added. 280 + ([!493](https://gitlab.freedesktop.org/monado/monado/merge_requests/493), 281 + [!547](https://gitlab.freedesktop.org/monado/monado/merge_requests/547), 282 + [!581](https://gitlab.freedesktop.org/monado/monado/merge_requests/581)) 283 + - aux/ogl: Add a function to compute the texture target and binding enum for a 284 + given swapchain image creation info. 285 + ([!493](https://gitlab.freedesktop.org/monado/monado/merge_requests/493)) 286 + - util: Tidy hand tracking header. 287 + ([!574](https://gitlab.freedesktop.org/monado/monado/merge_requests/574)) 288 + - math: Fix doxygen warnings in vector headers. 289 + ([!574](https://gitlab.freedesktop.org/monado/monado/merge_requests/574)) 290 + - Misc. Features 291 + - Support building in-process Monado with meson. 292 + ([!421](https://gitlab.freedesktop.org/monado/monado/merge_requests/421)) 293 + - Allow building some components without Vulkan. Vulkan is still required for the 294 + compositor and therefore the OpenXR runtime target. 295 + ([!429](https://gitlab.freedesktop.org/monado/monado/merge_requests/429)) 296 + - Add an OpenXR Android target: an APK which provides an "About" activity and 297 + eventually, an OpenXR runtime. 298 + ([!574](https://gitlab.freedesktop.org/monado/monado/merge_requests/574), 299 + [!581](https://gitlab.freedesktop.org/monado/monado/merge_requests/581)) 300 + - Misc. Fixes 301 + - No significant changes 302 + 8 303 ## Monado 0.3.0 (2020-07-10) 9 304 10 305 - Major changes