Edit

kc3-lang/angle/extensions/EGL_ANGLE_sync_control_rate.txt

Branch :

  • Show log

    Commit

  • Author : Jonah Ryan-Davis
    Date : 2020-03-24 17:23:19
    Hash : 4b94d7bb
    Message : Split EGL_CHROMIUM_sync_control into EGL_ANGLE_sync_control_rate eglGetMscRateCHROMIUM was added to EGL_CHROMIUM_sync_control based on the original extension GLX_OML_sync_control. However, this new function is not universally implemented. This CL moves it to a new extension, EGL_ANGLE_sync_control_rate, and renames it to eglGetMscRateANGLE. Bug: chromium:1064078 Change-Id: Ia2a29c6776b2b2bf2b98e58ee83b5f141ed01301 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118154 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>

  • extensions/EGL_ANGLE_sync_control_rate.txt
  • 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
    
    Number
    
       ???
    
    Dependencies
    
       The extension is written against the EGL 1.2 Specification, although it
       should work on other versions of these specifications. This extension
       also requires an operating system which supports CLOCK_MONOTONIC.
    
    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 three counters that provide
       the necessary synchronization. The Unadjusted System Time (or UST)
       is the 64-bit CLOCK_MONOTONIC clock; in particular this lets the
       application schedule future vertical retraces by querying this clock.
       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. The Swap Buffer Counter (SBC) is an
       attribute of an EGLSurface and is incremented each time a swap
       buffer action is performed on the associated surface.
    
       The use of these three counters allows the application to
       synchronize graphics rendering to vertical retraces and/or swap
       buffer actions. For example, by querying the synchronization values 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 <hdc>. 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.
    
       The function eglGetMscRateANGLE will return TRUE if the function
       completed successfully, FALSE otherwise.
    
       Each time eglSwapBuffer succeeds, the SBC will be increased within a
       finite time period.
    
    Errors
    
       The function eglGetMscRateANGLE will return FALSE if there is no
       current EGLContext.
    
    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.