Describe the project you are working on
Nothing so far, just having a look at Godot. 😃
Describe the problem or limitation you are having in your project
In some scenarios none of the currently exposed presentation strategies is both jitter-free and low-latency.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
If the preparation of a frame consistently takes less time than the refresh interval of the display, then double buffered vsync saves one refresh interval of latency over the currently offered triple buffered vsync. Unlike immediate and mailbox presentation modes, vsync has consistent timing and therefore less jitter. With frame scheduling it can sometimes have better latency than those as well, depending on the variance of the frame time. Compared to other non-vsync modes it reduces power consumption and component wear.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
For example a VSYNC_DOUBLE_BUFFERED enumerator for DisplayServer::VSyncMode
If this enhancement will not be used often, can it be worked around with a few lines of script?
No
Is there a reason why this should be core and not an add-on in the asset library?
Configuration of the swap chain is handled by core, and cannot be done elsewhere.
Describe the project you are working on
Nothing so far, just having a look at Godot. 😃
Describe the problem or limitation you are having in your project
In some scenarios none of the currently exposed presentation strategies is both jitter-free and low-latency.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
If the preparation of a frame consistently takes less time than the refresh interval of the display, then double buffered vsync saves one refresh interval of latency over the currently offered triple buffered vsync. Unlike immediate and mailbox presentation modes, vsync has consistent timing and therefore less jitter. With frame scheduling it can sometimes have better latency than those as well, depending on the variance of the frame time. Compared to other non-vsync modes it reduces power consumption and component wear.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
For example a VSYNC_DOUBLE_BUFFERED enumerator for DisplayServer::VSyncMode
If this enhancement will not be used often, can it be worked around with a few lines of script?
No
Is there a reason why this should be core and not an add-on in the asset library?
Configuration of the swap chain is handled by core, and cannot be done elsewhere.