forked from KhronosGroup/EGL-Registry
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
extensions: Add EGL_ANGLE_sync_control_rate (KhronosGroup#116)
- Loading branch information
1 parent
6499811
commit 1a897b4
Showing
5 changed files
with
128 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
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. 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 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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters