summaryrefslogtreecommitdiffstats
path: root/gpu/GLES2
diff options
context:
space:
mode:
authormarcheu@chromium.org <marcheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 16:09:09 +0000
committermarcheu@chromium.org <marcheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 16:10:10 +0000
commita4a1ffd21cd071eff06d5b34232787b99a565010 (patch)
tree147ca7a57af5f82828362e6facb7658fa454ede5 /gpu/GLES2
parenta5a45efbde0e06403f61ff74ba392b4d93f69bc7 (diff)
downloadchromium_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/GLES2')
-rw-r--r--gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt131
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