Skip to content

LSFG: refresh active pacing deadline from display phase - #8

Open
butilly wants to merge 2 commits into
releasefrom
fix/dying-light-lsfg-pacing-fix-2
Open

butilly wants to merge 2 commits into
releasefrom
fix/dying-light-lsfg-pacing-fix-2

Conversation

@butilly

@butilly butilly commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

Dying Light (DyingLightGame.exe), thread 1559610678497779734. Based on fix/dying-light-lsfg-loader-fix at 0c4361a to retain the verified white-screen fix. Legacy LSFG 2x with a 30 FPS limiter has recurring pacing variation; disabling only LSFG removes it and holds 30 FPS for 170 seconds without thermal throttling. LSFG-on report: 60 reported FPS, 4510/4857 base frame samples quantized and 4281 at 33 ms; these are not measurements of generated-frame spacing. Source inspection: paceBaseFrame refreshes vsyncPhaseNs but keeps incrementing pacerNextDueNs from the original phase indefinitely. Reproject the existing deadline to the nearest refreshed vblank (preserving the base divisor slot), and normalize signed modulo when reinitializing the grid. Add rate-limited base/output submission rate, stage timing, skip and phase-correction diagnostics. Candidate mechanism, not yet verified on device; missing vsync data retains the existing fallback. Validate with Legacy 2x and unchanged 30 FPS limiter on the same route for 120 seconds: recurring variation should disappear, base FPS should remain 30, output submissions near 60, and phase correction/late/skipped generation logs should identify remaining pacing faults. Only Android pacing changes; no shader, loader or native-backend changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant