···369369 uint32_t view_index,
370370 struct xrt_pose *out_pose);
371371372372+ /*!
373373+ * @brief Get the per-view pose in relation to the view space.
374374+ *
375375+ * On most device with coplanar displays, this just calls a helper to
376376+ * process the provided eye relation, but this may also handle canted
377377+ * displays as well as eye tracking.
378378+ *
379379+ * Does not do any device level tracking, use
380380+ * xrt_device::get_tracked_pose for that.
381381+ *
382382+ * @param[in] xdev The device.
383383+ * @param[in] default_eye_relation
384384+ * The interpupillary relation as a 3D position.
385385+ * Most simple stereo devices would just want to
386386+ * set `out_pose->position.[x|y|z] = ipd.[x|y|z]
387387+ * / 2.0f` and adjust for left vs right view.
388388+ * Not to be confused with IPD that is absolute
389389+ * distance, this is a full 3D translation
390390+ * If a device has a more accurate/dynamic way of
391391+ * knowing the eye relation, it may ignore this
392392+ * input.
393393+ * @param[in] view_count Number of views.
394394+ * @param[out] out_pose Output poses. See default_eye_relation
395395+ * argument for sample position. Be sure to also
396396+ * set orientation: most likely identity
397397+ * orientation unless you have canted screens.
398398+ * (Caution: Even if you have eye tracking, you
399399+ * won't use eye orientation here!)
400400+ */
401401+ void (*get_view_poses)(struct xrt_device *xdev,
402402+ const struct xrt_vec3 *default_eye_relation,
403403+ uint64_t at_timestamp_ns,
404404+ uint32_t view_count,
405405+ struct xrt_space_relation *out_head_relation,
406406+ struct xrt_fov *out_fovs,
407407+ struct xrt_pose *out_poses);
408408+372409 bool (*compute_distortion)(struct xrt_device *xdev, int view, float u, float v, struct xrt_uv_triplet *result);
373410374411 /*!
···440477 struct xrt_pose *out_pose)
441478{
442479 xdev->get_view_pose(xdev, eye_relation, view_index, out_pose);
480480+}
481481+482482+/*!
483483+ * Helper function for @ref xrt_device::get_view_poses.
484484+ *
485485+ * @out_head_relation in the device's tracking space without tracking_origin offset applied.
486486+ * @out_poses are view poses relative th @out_head_relation.
487487+ *
488488+ * @public @memberof xrt_device
489489+ */
490490+static inline void
491491+xrt_device_get_view_poses(struct xrt_device *xdev,
492492+ const struct xrt_vec3 *default_eye_relation,
493493+ uint64_t at_timestamp_ns,
494494+ uint32_t view_count,
495495+ struct xrt_space_relation *out_head_relation,
496496+ struct xrt_fov *out_fovs,
497497+ struct xrt_pose *out_poses)
498498+{
499499+ xdev->get_view_poses(xdev, default_eye_relation, at_timestamp_ns, view_count, out_head_relation, out_fovs,
500500+ out_poses);
443501}
444502445503/*!