frame: fix frame scheduling being skipped or one vblank off#15404
frame: fix frame scheduling being skipped or one vblank off#15404gulafaran wants to merge 5 commits into
Conversation
in renderer we need to check if we have pending damage, needsFrame can be cleared by commits that was done while pageflip was in flight. m_renderingActive also needs to be set after actually comitting. add a commitTimingTarget that we check against on presentation otherwise the committiming timer runs only on duration and might miss the upcoming vblank period as in always being one vblank late. and use the timespec we get from presentation.
|
@codex review please |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 516ec17362
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
skip early release on invalid timestamp, and rely on the timer timeout if missing. makes the presented signal emit a std::optional timestamp instead.
if the surface entered multiple outputs, we cant early release it because they flip at different times and might make it release way before the flip of the other monitor.
|
@codex review please |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 47e1c2f25c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
get the absolute target directly from the requested timestamp. reset commitTimingTarget if delay is 0, and reset it in SSurfaceState reset.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c960066ed3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
use fromTimespec so "C++ steady-clock epoch does not exactly match CLOCK_MONOTONIC" doesnt occur. unify the timespec code in both monitor and commit timing protocol. always send the timespec on monitor presented signal.
|
@codex review this man |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
thank you robot, you have nagged me at every corner, im balding thanks to you. |
in renderer we need to check if we have pending damage, needsFrame can be cleared by commits that was done while pageflip was in flight.
m_renderingActive also needs to be set after actually comitting.
add a commitTimingTarget that we check against on presentation otherwise the committiming timer runs only on duration and might miss the upcoming vblank period as in always being one vblank late. and use the timespec we get from presentation.
wants: hyprwm/aquamarine#334
warrants a bit of VRR/DS testing because of the needsFrame changes.