diff options
author | marcheu@chromium.org <marcheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 16:09:09 +0000 |
---|---|---|
committer | marcheu@chromium.org <marcheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-15 16:10:10 +0000 |
commit | a4a1ffd21cd071eff06d5b34232787b99a565010 (patch) | |
tree | 147ca7a57af5f82828362e6facb7658fa454ede5 /gpu | |
parent | a5a45efbde0e06403f61ff74ba392b4d93f69bc7 (diff) | |
download | chromium_src-a4a1ffd21cd071eff06d5b34232787b99a565010.zip chromium_src-a4a1ffd21cd071eff06d5b34232787b99a565010.tar.gz chromium_src-a4a1ffd21cd071eff06d5b34232787b99a565010.tar.bz2 |
Add EGL_CHROMIUM_get_sync_values extension text
In order to have something for implementors to look at, let's add
this extension here. We can always replace it with a newer version
once we have everything specced.
BUG=chromium:366935
TEST=no test
Review URL: https://codereview.chromium.org/478453003
Cr-Commit-Position: refs/heads/master@{#289893}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289893 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt | 131 |
1 files changed, 131 insertions, 0 deletions
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 0000000..d95b348 --- /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 |