| Index: gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt
|
| diff --git a/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt b/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e362386a21b6008b1dc7930a0442dd3e51907c37
|
| --- /dev/null
|
| +++ b/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt
|
| @@ -0,0 +1,131 @@
|
| +Name
|
| +
|
| + CHROMIUM_get_sync_values
|
| +
|
| +Name Strings
|
| +
|
| + EGL_CHROMIUM_get_sync_values
|
| +
|
| +Contact
|
| +
|
| + Stéphane Marchesin, Google (marcheu 'at' google.com)
|
| +
|
| +Status
|
| +
|
| + Draft.
|
| +
|
| +Version
|
| +
|
| + Last Modified Date: N/A Revision: 1.0
|
| +
|
| + 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 eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
|
| + EGLSurface surface,
|
| + int64_t* ust,
|
| + int64_t* msc,
|
| + int64_t* sbc)
|
| +
|
| +
|
| +New Tokens
|
| +
|
| + None
|
| +
|
| +Additions to the EGL 1.3 Specification
|
| +
|
| + eglGetSyncValuesCHROMIUM returns the current UST/MSC/SBC triple. A UST
|
| + timestamp is obtained each time the graphics MSC is incremented.
|
| + If this value does not reflect the value of the UST at the time the
|
| + first scan line of the display begins passing through the video
|
| + output port, it will be adjusted by the graphics driver to do so
|
| + prior to being returned by any of the functions defined by this
|
| + extension.
|
| +
|
| + This UST timestamp, together with the current graphics MSC and the
|
| + current SBC, comprise the current UST/MSC/SBC triple. The UST,
|
| + graphics MSC, and SBC values are not part of the render context
|
| + state. These values cannot be pushed or popped. The graphics MSC
|
| + value is initialized to 0 when the graphics device is initialized.
|
| + The SBC is per-surface state and is initialized to 0 when the
|
| + EGLSurface data structure is initialized.
|
| +
|
| + The SBC value is incremented by the graphics driver at the completion
|
| + of each buffer swap (e.g., the pixel copy has been completed or the
|
| + hardware register that swaps memory banks has been written). For pixel
|
| + formats that do not contain a back buffer, the SBC will always be
|
| + returned as 0.
|
| +
|
| + 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.
|
| +
|
| + The function eglGetSyncValuesCHROMIUM 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
|
| +
|
| + eglGetSyncValuesCHROMIUM will return FALSE if there is no current
|
| + EGLContext.
|
| +
|
| +New State
|
| +
|
| + Get Value Get Command Type Initial Value
|
| + --------- ----------- ---- -------------
|
| + [UST] eglGetSyncValuesCHROMIUM Z unspecified
|
| + [MSC] eglGetSyncValuesCHROMIUM Z 0
|
| + [SBC] eglGetSyncValuesCHROMIUM Z 0
|
| +
|
| +New Implementation Dependent State
|
| +
|
| + None
|
|
|