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 Related to EGL_CHROMIUM_sync_control Revision 2.0 23 24Number 25 26 142 27 28Dependencies 29 30 The extension is written against the EGL 1.2 Specification, although it 31 should work on other versions of these specifications. 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 a counter that provides the 42 necessary synchronization. The graphics Media Stream Counter (or 43 graphics MSC) is a counter that is unique to the graphics subsystem 44 and increments for each vertical retrace that occurs. 45 46 By querying the MSC rate for a given surface, the application can 47 accurately predict the timing for the next vertical retraces and schedule 48 rendering accordingly. 49 50Issues 51 52 None. 53 54IP Status 55 56 No known issues. 57 58New Procedures and Functions 59 60 Bool eglGetMscRateANGLE(EGLDisplay* dpy, 61 EGLSurface surface, 62 int32_t* numerator, 63 int32_t* denominator) 64 65New Tokens 66 67 None 68 69Additions to the EGL 1.3 Specification 70 71 The graphics MSC value is incremented once for each screen refresh. 72 For a non-interlaced display, this means that the graphics MSC value 73 is incremented for each frame. For an interlaced display, it means 74 that it will be incremented for each field. For a multi-monitor 75 system, the monitor used to determine MSC is the one where the surface 76 is located. If the surface spans multiple monitors, the monitor used 77 to determine MSC is the one with the biggest coverage in pixels. 78 79 eglGetMscRateANGLE returns the rate at which the MSC will be incremented 80 for the display associated with <dpy> and <surface>. The rate is expressed 81 in Hertz as <numerator> / <denominator>. If the MSC rate in Hertz is an 82 integer, then <denominator> will be 1 and <numerator> will be 83 the MSC rate. 84 85Errors 86 87 The function eglGetMscRateANGLE returns FALSE on failure. 88 If <dpy> is not a valid EGLDisplay, EGL_BAD_DISPLAY is generated. 89 If <surface> is not a valid EGLSurface, EGL_BAD_SURFACE is generated. 90 If there is no current EGLContext, EGL_BAD_CONTEXT is generated. 91 92New Implementation Dependent State 93 94 None 95 96Revision History 97 98 Version 1, 2020-03-24 (Jonah Ryan-Davis) 99 - Initial draft, based on GLX_OML_sync_control revision 6.0. 100