| Name |
| |
| ANGLE_sync_control_rate |
| |
| Name Strings |
| |
| EGL_ANGLE_sync_control_rate |
| |
| Contact |
| |
| Jonah Ryan-Davis, Google (jonahr 'at' google.com) |
| |
| Status |
| |
| Draft. |
| |
| Version |
| |
| Version 1, 2020-03-24 |
| |
| Based on GLX_OML_sync_control Revision 6.0 |
| Related to EGL_CHROMIUM_sync_control Revision 2.0 |
| |
| Number |
| |
| 142 |
| |
| Dependencies |
| |
| The extension is written against the EGL 1.2 Specification, although it |
| should work on other versions of these specifications. |
| |
| Overview |
| |
| This extension provides counters which let applications know about the |
| timing of the last vertical retrace. By looking at the system clock, as |
| well as the refresh rate of the monitor, this should enable applications |
| to predict the position of future retraces so as to schedule an optimal |
| workload. |
| |
| This extension incorporates the use of a counter that provides the |
| necessary synchronization. The graphics Media Stream Counter (or |
| graphics MSC) is a counter that is unique to the graphics subsystem |
| and increments for each vertical retrace that occurs. |
| |
| By querying the MSC rate for a given surface, the application can |
| accurately predict the timing for the next vertical retraces and schedule |
| rendering accordingly. |
| |
| Issues |
| |
| None. |
| |
| IP Status |
| |
| No known issues. |
| |
| New Procedures and Functions |
| |
| Bool eglGetMscRateANGLE(EGLDisplay* dpy, |
| EGLSurface surface, |
| int32_t* numerator, |
| int32_t* denominator) |
| |
| New Tokens |
| |
| None |
| |
| Additions to the EGL 1.3 Specification |
| |
| The graphics MSC value is incremented once for each screen refresh. |
| For a non-interlaced display, this means that the graphics MSC value |
| is incremented for each frame. For an interlaced display, it means |
| that it will be incremented for each field. For a multi-monitor |
| system, the monitor used to determine MSC is the one where the surface |
| is located. If the surface spans multiple monitors, the monitor used |
| to determine MSC is the one with the biggest coverage in pixels. |
| |
| eglGetMscRateANGLE returns the rate at which the MSC will be incremented |
| for the display associated with <dpy> and <surface>. The rate is expressed |
| in Hertz as <numerator> / <denominator>. If the MSC rate in Hertz is an |
| integer, then <denominator> will be 1 and <numerator> will be |
| the MSC rate. |
| |
| Errors |
| |
| The function eglGetMscRateANGLE returns FALSE on failure. |
| If <dpy> is not a valid EGLDisplay, EGL_BAD_DISPLAY is generated. |
| If <surface> is not a valid EGLSurface, EGL_BAD_SURFACE is generated. |
| If there is no current EGLContext, EGL_BAD_CONTEXT is generated. |
| |
| New Implementation Dependent State |
| |
| None |
| |
| Revision History |
| |
| Version 1, 2020-03-24 (Jonah Ryan-Davis) |
| - Initial draft, based on GLX_OML_sync_control revision 6.0. |