diff --git a/FrOSCon26/FrOSCon.26.mm b/FrOSCon26/FrOSCon.26.mm index 0f6b63e..90f88e7 100644 --- a/FrOSCon26/FrOSCon.26.mm +++ b/FrOSCon26/FrOSCon.26.mm @@ -1162,9 +1162,9 @@ - + - + @@ -1307,9 +1307,9 @@ - + - + @@ -1318,15 +1318,20 @@ - + + + + + - + + - + diff --git a/FrOSCon26/Talk-IOUring.odp b/FrOSCon26/Talk-IOUring.odp index 3b70f8a..7b56ab5 100644 Binary files a/FrOSCon26/Talk-IOUring.odp and b/FrOSCon26/Talk-IOUring.odp differ diff --git a/FrOSCon26/drawings/ring-buffer.svg b/FrOSCon26/drawings/ring-buffer.svg index 305f285..f2fcb93 100644 --- a/FrOSCon26/drawings/ring-buffer.svg +++ b/FrOSCon26/drawings/ring-buffer.svg @@ -1,4 +1,44 @@ - + + + State progression in the Ringbuffer + - - - + + + - - + + - - - Buffers used as a ring: slot = frameNr % RING_SIZ - - - - advances - - - - SHOW - frame 40 - slot 0 - - - - FEED - frame 41 - slot 1 - - - - READ - frame 42 - slot 2 - - - - READ - frame 43 - slot 3 - - - - FREE - — - slot 4 - - - buffer_[ ] - RING_SIZ = 5 - - - - - nextShow_ = 40 - - - - - - - nextRead_ = 44 - - - - - - States: - - FREE - - READ - - FEED - - SHOW - - STOP + + + + + State progression in the Ringbuffer + + + + + + + + + + + + + + advances + + + SHOW + frame 40 + slot 0 + + + + FEED + frame 41 + slot 1 + + + + READ + frame 42 + slot 2 + + + + READ + frame 43 + slot 3 + + + + FREE + — + slot 4 + + RING_SIZ = 5 + + + nextShow_ = 40 + + + + + nextRead_ = 44 + + + + States: + + FREE + + READ + + FEED + + SHOW + + STOP + + + + advances + + SHOW + frame 40 + slot 0 + + FEED + frame 41 + slot 1 + + READ + frame 42 + slot 2 + + READ + frame 43 + slot 3 + + FREE + — + slot 4 + RING_SIZ = 5 + + nextShow_ = 40 + + + nextRead_ = 44 + + States: + + FREE + + READ + + FEED + + SHOW + + STOP + - - Between the two cursors lie the frames currently in flight (READ) or ready (FEED); - - - the gap can never exceed RING_SIZ — that is where the back-pressure lives. - diff --git a/FrOSCon26/drawings/state-engine.svg b/FrOSCon26/drawings/state-engine.svg index ac4135b..5455191 100644 --- a/FrOSCon26/drawings/state-engine.svg +++ b/FrOSCon26/drawings/state-engine.svg @@ -1,83 +1,332 @@ - + - - -BuffState -Life-cycle of one buffer »slot« - - -FREE - -FREE - - - -READ - -READ - - - -FREE->READ - - -  submit read -  addNextReadSubmissions() - - - -FEED - -FEED - - - -READ->FEED - - -  read completed OK -  handleCompletedRead() - - - -STOP - - -STOP - - - -READ->STOP - - -  short read / EOF   - - - -SHOW - -SHOW - - - -FEED->SHOW - - -  publish frame -  maybeDisplayFrame() - - - -SHOW->FREE - - -  GUI released frame -  (toDisplay_ == nullptr) - - + + + Buffer State Engine + + + + + + + + Life-cycle of one buffer »slot« + + FREE + + FREE + + + READ + + READ + + + +  submit read + + + FEED + + FEED + + + +  read completed OK + + + STOP + + + STOP + + + +  short read / EOF   + + + SHOW + + SHOW + + + +  publish frame + + + + GUI released frame (toDisplay_ == nullptr) + + + + + + + Buffer State Engine + State transitions applied for each buffer slot + + + + + + + + + + +