On Sat, 4 Oct 2025 15:19:32 GMT, Thiago Milczarek Sayao <[email protected]> 
wrote:

>> As Michael Zucchi pointed out on the mailing list, the high framerate occurs 
>> because `glXSwapBuffers() `operates asynchronously. To ensure proper 
>> synchronization, you can call `glFinish() `afterward, which blocks until the 
>> buffer swap is fully completed. However, when using `glXSwapIntervalSGI`, 
>> the swap interval setting applies globally rather than per drawable. In 
>> contrast, `glXSwapIntervalEXT` provides per-drawable control, allowing 
>> finer-grained vsync behavior.
>> 
>> I don't know if there are scenarios when the unlimited frame rate is needed 
>> - if so we should provide a option.
>> 
>> See 
>> [https://wikis.khronos.org/opengl/Swap_Interval](https://wikis.khronos.org/opengl/Swap_Interval)
>> 
>> It also selects the correct visual for transparency which needs to be depth 
>> = 32 for X11.
>
> Thiago Milczarek Sayao has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Call glXSwapIntervalEXT or glXSwapIntervalSGI if not null

Sorry I was wrong and should've tested with more than 1 window.  The change to 
glXSwapIntervalEXT() doesn't work properly and behaves as if glFinish() is 
called for each window after glXSwapBuffer(), each causing a new wait for 
vblank.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1929#issuecomment-3384559383

Reply via email to