diff --git a/src/xrt/compositor/main/comp_compositor.c b/src/xrt/compositor/main/comp_compositor.c index ea382d47f..467a10c0a 100644 --- a/src/xrt/compositor/main/comp_compositor.c +++ b/src/xrt/compositor/main/comp_compositor.c @@ -144,6 +144,7 @@ compositor_wait_frame(struct xrt_compositor *xc, c->frame.waited.id = frame_id; c->frame.waited.desired_present_time_ns = desired_present_time_ns; c->frame.waited.present_slop_ns = present_slop_ns; + c->frame.waited.predicted_display_time_ns = predicted_display_time_ns; uint64_t now_ns = os_monotonic_get_ns(); if (now_ns < wake_up_time_ns) { diff --git a/src/xrt/compositor/main/comp_compositor.h b/src/xrt/compositor/main/comp_compositor.h index 4ff1c558f..8e9d21f64 100644 --- a/src/xrt/compositor/main/comp_compositor.h +++ b/src/xrt/compositor/main/comp_compositor.h @@ -158,6 +158,7 @@ struct comp_shaders struct comp_frame { int64_t id; + uint64_t predicted_display_time_ns; uint64_t desired_present_time_ns; uint64_t present_slop_ns; }; diff --git a/src/xrt/compositor/main/comp_renderer.c b/src/xrt/compositor/main/comp_renderer.c index fe44c13d6..6aeb635cf 100644 --- a/src/xrt/compositor/main/comp_renderer.c +++ b/src/xrt/compositor/main/comp_renderer.c @@ -374,7 +374,11 @@ renderer_get_view_projection(struct comp_renderer *r) struct xrt_space_relation relation; - xrt_device_get_tracked_pose(r->c->xdev, XRT_INPUT_GENERIC_HEAD_POSE, r->c->last_next_display_time, &relation); + xrt_device_get_tracked_pose( // + r->c->xdev, // + XRT_INPUT_GENERIC_HEAD_POSE, // + r->c->frame.rendering.predicted_display_time_ns, // + &relation); // struct xrt_vec3 eye_relation = { 0.063000f, /* TODO: get actual ipd_meters */