• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3   ANGLE_sync_control_rate
4
5Name Strings
6
7   EGL_ANGLE_sync_control_rate
8
9Contact
10
11   Jonah Ryan-Davis, Google (jonahr 'at' google.com)
12
13Status
14
15   Draft.
16
17Version
18
19   Version 1, 2020-03-24
20
21   Based on GLX_OML_sync_control Revision 6.0
22
23Number
24
25   ???
26
27Dependencies
28
29   The extension is written against the EGL 1.2 Specification, although it
30   should work on other versions of these specifications. This extension
31   also requires an operating system which supports CLOCK_MONOTONIC.
32
33Overview
34
35   This extension provides counters which let applications know about the
36   timing of the last vertical retrace. By looking at the system clock, as
37   well as the refresh rate of the monitor, this should enable applications
38   to predict the position of future retraces so as to schedule an optimal
39   workload.
40
41   This extension incorporates the use of three counters that provide
42   the necessary synchronization. The Unadjusted System Time (or UST)
43   is the 64-bit CLOCK_MONOTONIC clock; in particular this lets the
44   application schedule future vertical retraces by querying this clock.
45   The graphics Media Stream Counter (or graphics MSC) is a counter
46   that is unique to the graphics subsystem and increments for each
47   vertical retrace that occurs. The Swap Buffer Counter (SBC) is an
48   attribute of an EGLSurface and is incremented each time a swap
49   buffer action is performed on the associated surface.
50
51   The use of these three counters allows the application to
52   synchronize graphics rendering to vertical retraces and/or swap
53   buffer actions. For example, by querying the synchronization values for
54   a given surface, the application can accurately predict the timing for
55   the next vertical retraces and schedule rendering accordingly.
56
57Issues
58
59   None.
60
61IP Status
62
63   No known issues.
64
65New Procedures and Functions
66
67   Bool eglGetMscRateANGLE(EGLDisplay* dpy,
68                           EGLSurface surface,
69                           int32_t* numerator,
70                           int32_t* denominator)
71
72New Tokens
73
74   None
75
76Additions to the EGL 1.3 Specification
77
78   The graphics MSC value is incremented once for each screen refresh.
79   For a non-interlaced display, this means that the graphics MSC value
80   is incremented for each frame. For an interlaced display, it means
81   that it will be incremented for each field. For a multi-monitor
82   system, the monitor used to determine MSC is the one where the surface
83   is located. If the surface spans multiple monitors, the monitor used
84   to determine MSC is the one with the biggest coverage in pixels.
85
86   eglGetMscRateANGLE returns the rate at which the MSC will be incremented
87   for the display associated with <hdc>. The rate is expressed in Hertz
88   as <numerator> / <denominator>. If the MSC rate in Hertz is an
89   integer, then <denominator> will be 1 and <numerator> will be
90   the MSC rate.
91
92   The function eglGetMscRateANGLE will return TRUE if the function
93   completed successfully, FALSE otherwise.
94
95   Each time eglSwapBuffer succeeds, the SBC will be increased within a
96   finite time period.
97
98Errors
99
100   The function eglGetMscRateANGLE will return FALSE if there is no
101   current EGLContext.
102
103New Implementation Dependent State
104
105   None
106
107Revision History
108
109    Version 1, 2020-03-24 (Jonah Ryan-Davis)
110       - Initial draft, based on GLX_OML_sync_control revision 6.0.
111