1Name 2 3 EXT_swap_control_tear 4 5Name Strings 6 7 WGL_EXT_swap_control_tear 8 9Contact 10 11 Piers Daniell, NVIDIA (pdaniell 'at' nvidia.com) 12 13Contributors 14 15 Antonio Tejada, NVIDIA 16 Jeff Bolz, NVIDIA 17 Pat Brown, NVIDIA 18 Udo Lugauer, NVIDIA 19 20Status 21 22 Complete. Shipping with NVIDIA Forceware 285.62 and AMD Catalyst 11.10 23 drivers. 24 25Version 26 27 Last Modified Date: 03/16/2011 28 Author revision: 1 29 30Number 31 32 415 33 34Dependencies 35 36 WGL_EXT_extensions_string is required. 37 38 WGL_EXT_swap_control is required. 39 40Overview 41 42 This extension extends the existing WGL_EXT_swap_control extension 43 by allowing a negative <interval> parameter to wglSwapIntervalEXT. 44 The negative <interval> allows late swaps to occur without 45 synchronization to the video frame. This reduces the visual stutter 46 on late frames and reduces the stall on subsequent frames. 47 48New Procedures and Functions 49 50 None 51 52New Tokens 53 54 None 55 56Additions to the WGL Specification 57 58 In the section that starts: 59 60 "wglSwapIntervalEXT specifies the minimum number of video frame periods 61 per buffer swap for the window associated with the current context." 62 63 After the following paragraph: 64 65 "If <interval> is set to a value of 0, buffer swaps are not synchron- 66 ized to a video frame. The <interval> value is silently clamped to 67 the maximum implementation-dependent value supported before being 68 stored." 69 70 Add the following paragraph: 71 72 "If <interval> is negative, the minimum number of video frames between 73 buffer swaps is the absolute value of <interval>. In this case, if 74 abs(<interval>) video frames have already passed from the previous swap 75 when the swap is ready to be performed, the swap will occur without 76 synchronization to a video frame. When an unsynchronized swap happens, 77 the missed frame will count towards the minimum number of video frames 78 for the next swap." 79 80Dependencies on WGL_EXT_extensions_string 81 82 Because there is no way to extend wgl, these calls are defined in 83 the ICD and can be called by obtaining the address with 84 wglGetProcAddress. Because this extension is a WGL extension, it 85 is not included in the GL_EXTENSIONS string. Its existence can be 86 determined with the WGL_EXT_extensions_string extension. 87 88Errors 89 90 In the section that starts: 91 92 "If the function succeeds, the return value is TRUE. If the function 93 fails, the return value is FALSE. To get extended error information, 94 call GetLastError." 95 96 Remove the following error: 97 98 ERROR_INVALID_DATA The <interval> parameter is negative. 99 100New State 101 102 None 103 104New Implementation Dependent State 105 106 None 107 108Issues 109 110 1) This extension doesn't provide a way to know when a video frame was 111 missed and an unsynchronized swap was performed. 112 113 UNRESOLVED: This extensions isn't meant to solve the issue of repeated 114 tearing if the application falls behind the vsync. This extension just 115 eliminates the extra stall that will occur if the application misses 116 the target vsync. The application can use a CPU timer or the GL timer 117 queries to determine if it is falling behind continually and can 118 adjust it's workload appropriatly. 119 120Revision History 121 122 Rev. Date Author Changes 123 ---- -------- -------- ----------------------------------------- 124 1 03/16/11 pdaniell Initial version. 125