﻿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.
