RFR: 8210547: [Linux] Uncontrolled framerate [v3]
Lukasz Kostyra
lkostyra at openjdk.org
Fri Jan 16 15:39:27 UTC 2026
On Tue, 30 Dec 2025 23:01:55 GMT, notzed <duke at openjdk.org> wrote:
>> As discussed on the mailing list.
>>
>> OpenGL requires an explicit glFinish() to synchronise with the video refresh. The current usage is incorrect and against the specification. This patch calls glFinish() after all windows have been drawn following a pulse.
>
> notzed has updated the pull request incrementally with one additional commit since the last revision:
>
> Merge part of #1929, call glXSwapIntervalEXT in preference to glXSwapIntervalSGI if available.
Change looks good to me and it now works as expected on my old Intel laptop (framerate is properly capped without `-Dquantum.multithreaded=false`). I have one more comment suggestion before approving this while I run some additional tests in the meantime.
modules/javafx.graphics/src/main/java/com/sun/prism/es2/ES2SwapChain.java line 193:
> 191: boolean presented = present();
> 192:
> 193: if (vsync)
I would add a comment here describing the reason for this addition so we have it for future reference - something along the lines of glFinish needing to be called only on the last presented Stage in order to properly synchronize them all to VSync.
-------------
Marked as reviewed by lkostyra (Reviewer).
PR Review: https://git.openjdk.org/jfx/pull/1981#pullrequestreview-3671299072
PR Review Comment: https://git.openjdk.org/jfx/pull/1981#discussion_r2698860645
More information about the openjfx-dev
mailing list