blob: 633c59816051773e4da6390133a7cc339ac2ec8f [file] [log] [blame]
Name
EXT_swap_control_tear
Name Strings
WGL_EXT_swap_control_tear
Contact
Piers Daniell, NVIDIA (pdaniell 'at' nvidia.com)
Contributors
Antonio Tejada, NVIDIA
Jeff Bolz, NVIDIA
Pat Brown, NVIDIA
Udo Lugauer, NVIDIA
Status
Complete. Shipping with NVIDIA Forceware 285.62 and AMD Catalyst 11.10
drivers.
Version
Last Modified Date: 03/16/2011
Author revision: 1
Number
415
Dependencies
WGL_EXT_extensions_string is required.
WGL_EXT_swap_control is required.
Overview
This extension extends the existing WGL_EXT_swap_control extension
by allowing a negative <interval> parameter to wglSwapIntervalEXT.
The negative <interval> allows late swaps to occur without
synchronization to the video frame. This reduces the visual stutter
on late frames and reduces the stall on subsequent frames.
New Procedures and Functions
None
New Tokens
None
Additions to the WGL Specification
In the section that starts:
"wglSwapIntervalEXT specifies the minimum number of video frame periods
per buffer swap for the window associated with the current context."
After the following paragraph:
"If <interval> is set to a value of 0, buffer swaps are not synchron-
ized to a video frame. The <interval> value is silently clamped to
the maximum implementation-dependent value supported before being
stored."
Add the following paragraph:
"If <interval> is negative, the minimum number of video frames between
buffer swaps is the absolute value of <interval>. In this case, if
abs(<interval>) video frames have already passed from the previous swap
when the swap is ready to be performed, the swap will occur without
synchronization to a video frame. When an unsynchronized swap happens,
the missed frame will count towards the minimum number of video frames
for the next swap."
Dependencies on WGL_EXT_extensions_string
Because there is no way to extend wgl, these calls are defined in
the ICD and can be called by obtaining the address with
wglGetProcAddress. Because this extension is a WGL extension, it
is not included in the GL_EXTENSIONS string. Its existence can be
determined with the WGL_EXT_extensions_string extension.
Errors
In the section that starts:
"If the function succeeds, the return value is TRUE. If the function
fails, the return value is FALSE. To get extended error information,
call GetLastError."
Remove the following error:
ERROR_INVALID_DATA The <interval> parameter is negative.
New State
None
New Implementation Dependent State
None
Issues
1) This extension doesn't provide a way to know when a video frame was
missed and an unsynchronized swap was performed.
UNRESOLVED: This extensions isn't meant to solve the issue of repeated
tearing if the application falls behind the vsync. This extension just
eliminates the extra stall that will occur if the application misses
the target vsync. The application can use a CPU timer or the GL timer
queries to determine if it is falling behind continually and can
adjust it's workload appropriatly.
Revision History
Rev. Date Author Changes
---- -------- -------- -----------------------------------------
1 03/16/11 pdaniell Initial version.