[client/idd/obs] scheduler: isolate timing owner delivery

This commit is contained in:
Geoffrey McRae
2026-08-05 14:58:21 +10:00
parent 0b9b805530
commit c7ed04412e
21 changed files with 1572 additions and 362 deletions

View File

@@ -30,7 +30,7 @@
#include "LGMPConfig.h"
#define KVMFR_MAGIC "KVMFR---"
#define KVMFR_VERSION 26
#define KVMFR_VERSION 27
// Fallback used by producers that cannot report the source display's SDR
// white level. IDD frames override this with IDDCX_METADATA2::SdrWhiteLevel.
@@ -296,8 +296,9 @@ typedef struct KVMFRFrameSchedule
// Positive when the frame arrived early, negative when it arrived late.
int64_t phaseError; // ready-to-render phase error (ns)
uint32_t feedbackFrameSerial;
uint32_t feedbackScheduleEpoch;
uint32_t lease; // lease duration (ms)
uint8_t reserved[16];
uint8_t reserved[12];
}
KVMFRFrameSchedule;

View File

@@ -23,8 +23,13 @@
#define LGMP_Q_POINTER 1
#define LGMP_Q_FRAME 2
// Base ID for LGMP_Q_FRAME_LEN independent owner-delivery queues.
#define LGMP_Q_FRAME_OWNER 3
#define LGMP_Q_FRAME_LEN 2
#define LGMP_Q_POINTER_LEN 32
// Two delivery lanes plus a spare buffer let the timing owner continue to
// alternate buffers while a secondary client holds the shared delivery.
#define LGMP_Q_FRAME_LEN 2
#define LGMP_Q_FRAME_BUFFER_LEN 3
#define LGMP_Q_POINTER_LEN 32
#endif