• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    SGIX_swap_barrier
4
5Name Strings
6
7    GLX_SGIX_swap_barrier
8
9Version
10
11    $Date: 1996/07/22 06:38:40 $ $Revision: 1.12 $
12
13Number
14
15    92
16
17Dependencies
18
19    SGIX_swap_control affects the definition of this extension
20    SGI_cushion affects the definition of this extension
21    SGIX_swap_group is required
22
23Overview
24
25    This extension provides the capability to sychronize the buffer
26    swaps of different swap groups.
27
28    A swap group is bound to a _swap_barrier_.  The buffer swaps of each
29    swap group using that barrier will wait until every swap group using
30    that barrier is ready to swap (where readiness is defined below), after
31    which time all buffer swaps of all groups using that barrier will
32    take place concurrently.
33
34    This extension extends the set of conditions that must be met before
35    a buffer swap can take place.
36
37Issues
38
39    * Should we have a query for the maximum number of supported barriers?
40
41New Procedures and Functions
42
43    void BindSwapBarrierSGIX(Display *dpy,
44			     GLXDrawable drawable,
45			     int barrier);
46
47    Bool QueryMaxSwapBarriersSGIX(Display *dpy,
48 				  int screen,
49				  int *max);
50
51New Tokens
52
53    None
54
55Additions to the GLX Specification
56
57    Add to section 3.2.6, Double Buffering:
58
59    BindSwapBarrierSGIX binds the swap group that contains <drawable> to
60    <barrier>.  Subsequent buffer swaps for that group will be subject to
61    this binding, until the group is unbound from <barrier>.  If <barrier>
62    is zero, the group is unbound from its current barrier, if any.
63
64    QueryMaxSwapBarriersSGIX returns in <max> the maximum number of barriers
65    supported by an implementation on <screen>.
66
67    QueryMaxSwapBarriersSGIX returns True if it success and False if it fails.
68    If it fails, <max> is unchanged.
69
70    Before a buffer swap can take place, a set of conditions must be
71    satisfied.  The conditions are defined in terms of the notions of when
72    a drawable is ready to swap and when a group is ready to swap.
73
74    Any GLX drawable that is not a window is always ready.
75
76    When a window is unmapped, it is always ready.
77
78    When a window is mapped, it is ready when all of the following are true:
79
80	1. A buffer swap command has been issued for it.
81
82	2. Its swap interval has elapsed.
83
84    A group is ready when the following is true:
85
86	1. All windows in the group are ready.
87
88    All of the following must be satisfied before a buffer swap for a window
89    can take place:
90
91	1. The window is ready.
92
93	2. If the window belongs to a group, the group is ready.
94
95	3. If the window belongs to a group and that group is bound to a
96	   barrier, all groups using that barrier are ready.
97
98    Buffer swaps for all windows in a swap group will take place concurrently
99    after the conditions are satisfied for every window in the group.
100
101    Buffer swaps for all groups using a barrier will take place concurrently
102    after the conditions are satisfied for every window of every group using
103    the barrier, if and only if the vertical retraces of the screens of all
104    the groups are synchronized.  If they are not synchronized, there is no
105    guarantee of concurrency between groups.
106
107    Both BindSwapBarrierSGIX and QueryMaxSwapBarrierSGIX are part of the X
108    stream.
109
110    An implementation may support a limited number of swap barriers,
111    and may have restrictions on where the users of a barrier can reside.
112    For example, an implementation may allow the users to reside on different
113    screens, displays, or even hosts.
114
115Errors
116
117    BindSwapBarrierSGIX generates BadValue if <barrier> is already bound to
118    another swap group or if <barrier> is not a valid name of a barrier.
119
120    BindSwapBarrierSGIX generates BadGLXDrawable if <drawable> is an
121    invalid GLX drawable.
122
123    QueryMaxSwapBarrierSGIX generates BadValue if <screen> is not a valid
124    screen.
125
126New State
127								Initial
128    Get Value			Get Command		Type	Value	Attrib
129    ---------			-----------		----	-------	------
130    <current barrier bound to group> ??
131
132New Implementation Dependent State
133
134    None
135
136
137
138
139