• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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