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.
