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 parameter to wglSwapIntervalEXT. The negative 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 is set to a value of 0, buffer swaps are not synchron- ized to a video frame. The value is silently clamped to the maximum implementation-dependent value supported before being stored." Add the following paragraph: "If is negative, the minimum number of video frames between buffer swaps is the absolute value of . In this case, if abs() 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 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.