From b6b9004fb23a23f8a0b0312c648451a603bc9819 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz <jakob@collabora.com> Date: Tue, 20 Sep 2022 21:20:26 +0100 Subject: [PATCH] u/pacing: Tidy --- src/xrt/auxiliary/util/u_pacing_app.c | 49 +++++++++++++++------------ 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/xrt/auxiliary/util/u_pacing_app.c b/src/xrt/auxiliary/util/u_pacing_app.c index 567dbd1fa..dc8305bdf 100644 --- a/src/xrt/auxiliary/util/u_pacing_app.c +++ b/src/xrt/auxiliary/util/u_pacing_app.c @@ -266,15 +266,16 @@ pa_predict(struct u_pacing_app *upa, *out_predicted_display_period = period_ns; size_t index = GET_INDEX_FROM_ID(pa, frame_id); - assert(pa->frames[index].frame_id == -1); - assert(pa->frames[index].state == U_PA_READY); + struct u_pa_frame *f = &pa->frames[index]; + assert(f->frame_id == -1); + assert(f->state == U_PA_READY); - pa->frames[index].state = U_RT_PREDICTED; - pa->frames[index].frame_id = frame_id; - pa->frames[index].predicted_gpu_done_time_ns = gpu_done_time_ns; - pa->frames[index].predicted_display_time_ns = predict_ns; - pa->frames[index].predicted_display_period_ns = period_ns; - pa->frames[index].when.predicted_ns = now_ns; + f->state = U_RT_PREDICTED; + f->frame_id = frame_id; + f->predicted_gpu_done_time_ns = gpu_done_time_ns; + f->predicted_display_time_ns = predict_ns; + f->predicted_display_period_ns = period_ns; + f->when.predicted_ns = now_ns; } static void @@ -285,20 +286,21 @@ pa_mark_point(struct u_pacing_app *upa, int64_t frame_id, enum u_timing_point po UPA_LOG_T("%" PRIi64 " (%u)", frame_id, point); size_t index = GET_INDEX_FROM_ID(pa, frame_id); - assert(pa->frames[index].frame_id == frame_id); + struct u_pa_frame *f = &pa->frames[index]; + assert(f->frame_id == frame_id); switch (point) { case U_TIMING_POINT_WAKE_UP: - assert(pa->frames[index].state == U_RT_PREDICTED); + assert(f->state == U_RT_PREDICTED); - pa->frames[index].when.wait_woke_ns = when_ns; - pa->frames[index].state = U_RT_WAIT_LEFT; + f->when.wait_woke_ns = when_ns; + f->state = U_RT_WAIT_LEFT; break; case U_TIMING_POINT_BEGIN: - assert(pa->frames[index].state == U_RT_WAIT_LEFT); + assert(f->state == U_RT_WAIT_LEFT); - pa->frames[index].when.begin_ns = when_ns; - pa->frames[index].state = U_RT_BEGUN; + f->when.begin_ns = when_ns; + f->state = U_RT_BEGUN; break; case U_TIMING_POINT_SUBMIT: default: assert(false); @@ -313,12 +315,16 @@ pa_mark_discarded(struct u_pacing_app *upa, int64_t frame_id, uint64_t when_ns) DEBUG_PRINT_FRAME_ID(); size_t index = GET_INDEX_FROM_ID(pa, frame_id); - assert(pa->frames[index].frame_id == frame_id); - assert(pa->frames[index].state == U_RT_WAIT_LEFT || pa->frames[index].state == U_RT_BEGUN); + struct u_pa_frame *f = &pa->frames[index]; + assert(f->frame_id == frame_id); + assert(f->state == U_RT_WAIT_LEFT || f->state == U_RT_BEGUN); - pa->frames[index].when.delivered_ns = when_ns; - pa->frames[index].state = U_PA_READY; - pa->frames[index].frame_id = -1; + // Update all data. + f->when.delivered_ns = when_ns; + + // Reset the frame. + f->state = U_PA_READY; + f->frame_id = -1; } static void @@ -333,6 +339,7 @@ pa_mark_delivered(struct u_pacing_app *upa, int64_t frame_id, uint64_t when_ns, assert(f->frame_id == frame_id); assert(f->state == U_RT_BEGUN); + // Update all data. f->when.delivered_ns = when_ns; f->display_time_ns = display_time_ns; f->state = U_RT_DELIVERED; @@ -365,8 +372,6 @@ pa_mark_gpu_done(struct u_pacing_app *upa, int64_t frame_id, uint64_t when_ns) late = true; } -#define NS_TO_MS_F(ns) (time_ns_to_s(ns) * 1000.0) - uint64_t diff_cpu_ns = f->when.begin_ns - f->when.wait_woke_ns; uint64_t diff_draw_ns = f->when.delivered_ns - f->when.begin_ns; uint64_t diff_wait_ns = f->when.gpu_done_ns - f->when.delivered_ns;