Skip to content

Replay pre-frame blocks before the first FrameBegin - #3257

Open
antonio-lunarg wants to merge 2 commits into
LunarG:devfrom
antonio-lunarg:antonio-pre-frame-boundary
Open

antonio-lunarg wants to merge 2 commits into
LunarG:devfrom
antonio-lunarg:antonio-pre-frame-boundary

Conversation

@antonio-lunarg

Copy link
Copy Markdown
Contributor

BlockProcessor::ProcessBlocks() returns kPreFrameBoundary once, before the first block that belongs to frame 0. It peeks the next block header and treats leading meta, annotation, and state marker blocks, and every block inside a state block, as pre-frame. FileProcessor::ProcessPreFrame() replays up to that boundary, and Application::Run() calls it once before the frame loop.

A trimmed capture's state setup now runs before FrameBegin 0, so its queue submits emit no plugin events and the first frame interval holds only frame work.

Full captures replay the same blocks in the same order, only the two leading meta blocks move ahead of FrameBegin 0.

@antonio-lunarg
antonio-lunarg force-pushed the antonio-pre-frame-boundary branch 2 times, most recently from 696b1de to c480cb8 Compare September 9, 2026 12:10
@antonio-lunarg antonio-lunarg added the approved-to-run-ci Can run CI check on internal LunarG machines label Sep 9, 2026

@nickdriscoll-lunarg nickdriscoll-lunarg left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some nitpicks. Looks pretty good overall!

Comment thread framework/decode/block_processor.cpp Outdated
Comment thread framework/decode/block_processor.h Outdated
BlockProcessor::ProcessBlocks() returns kPreFrameBoundary once, before the
first block that belongs to frame 0. It peeks the next block header and treats
leading meta, annotation, and state marker blocks, and every block inside a
state block, as pre-frame. FileProcessor::ProcessPreFrame() replays up to that
boundary, and Application::Run() calls it once before the frame loop.

A trimmed capture's state setup now runs before FrameBegin 0, so its queue
submits emit no plugin events and the first frame interval holds only frame
work.

Full captures replay the same blocks in the same order, only the two
leading meta blocks move ahead of FrameBegin 0.
@antonio-lunarg
antonio-lunarg force-pushed the antonio-pre-frame-boundary branch from af79304 to 3d1a25b Compare September 24, 2026 13:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved-to-run-ci Can run CI check on internal LunarG machines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants