[idd] scheduler: retain frames for publication deadlines

Prepare each acquired content frame into one of two private GPU
candidates so the IddCx frame can be released without copying it to
IVSHMEM immediately.

Wake a high-resolution publisher at the client deadline and send the
newest completed candidate. Preserve accumulated damage across
superseded candidates, include the scheduling hold in end-to-end timing,
and keep transport work on the existing physical copy queue.
This commit is contained in:
Geoffrey McRae
2026-08-05 12:38:07 +10:00
parent afb80e0ae4
commit 0b9b805530
7 changed files with 953 additions and 276 deletions

View File

@@ -43,6 +43,7 @@ class CFrameBufferResource
unsigned m_timingEffectIndex = 0;
uint64_t m_timingToken = 0;
bool m_fullCopy = false;
unsigned m_candidateIndex = 0;
ComPtr<ID3D12Resource> m_res;
void * m_map = nullptr;
@@ -75,6 +76,8 @@ class CFrameBufferResource
unsigned GetTimingEffectIndex() const { return m_timingEffectIndex; }
uint64_t GetTimingToken () const { return m_timingToken; }
bool IsFullCopy () const { return m_fullCopy; }
void SetCandidateIndex(unsigned index) { m_candidateIndex = index; }
unsigned GetCandidateIndex() const { return m_candidateIndex; }
ComPtr<ID3D12Resource> Get() { return m_res; }
};