122 lines
3.6 KiB
Plaintext
122 lines
3.6 KiB
Plaintext
|
Name
|
||
|
|
||
|
ANDROID_presentation_time
|
||
|
|
||
|
Name Strings
|
||
|
|
||
|
EGL_ANDROID_presentation_time
|
||
|
|
||
|
Contributors
|
||
|
|
||
|
Jamie Gennis
|
||
|
Andy McFadden
|
||
|
|
||
|
Contact
|
||
|
|
||
|
Jamie Gennis, Google Inc. (jgennis 'at' google.com)
|
||
|
|
||
|
Status
|
||
|
|
||
|
Draft
|
||
|
|
||
|
Version
|
||
|
|
||
|
Version 2, April 1, 2013
|
||
|
|
||
|
Number
|
||
|
|
||
|
EGL Extension #XXX
|
||
|
|
||
|
Dependencies
|
||
|
|
||
|
Requires EGL 1.1
|
||
|
|
||
|
This extension is written against the wording of the EGL 1.4 Specification
|
||
|
|
||
|
Overview
|
||
|
|
||
|
Often when rendering a sequence of images, there is some time at which each
|
||
|
image is intended to be presented to the viewer. This extension allows
|
||
|
this desired presentation time to be specified for each frame rendered to
|
||
|
an EGLSurface, allowing the native window system to use it.
|
||
|
|
||
|
New Types
|
||
|
|
||
|
/*
|
||
|
* EGLnsecsANDROID is a signed integer type for representing a time in
|
||
|
* nanoseconds.
|
||
|
*/
|
||
|
#include <khrplatform.h>
|
||
|
typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
|
||
|
|
||
|
|
||
|
New Procedures and Functions
|
||
|
|
||
|
EGLboolean eglPresentationTimeANDROID(
|
||
|
EGLDisplay dpy,
|
||
|
EGLSurface sur,
|
||
|
EGLnsecsANDROID time);
|
||
|
|
||
|
New Tokens
|
||
|
|
||
|
None.
|
||
|
|
||
|
Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
|
||
|
|
||
|
Add a new subsection before Section 3.9.4, page 53 (Posting Errors)
|
||
|
|
||
|
"3.9.4 Presentation Time
|
||
|
|
||
|
The function
|
||
|
|
||
|
EGLboolean eglPresentationTimeANDROID(EGLDisplay dpy, EGLSurface
|
||
|
surface, EGLnsecsANDROID time);
|
||
|
|
||
|
specifies the time at which the current color buffer of surface should be
|
||
|
presented to the viewer. The time parameter should be a time in
|
||
|
nanoseconds, but the exact meaning of the time depends on the native
|
||
|
window system's use of the presentation time. In situations where
|
||
|
an absolute time is needed such as displaying the color buffer on a
|
||
|
display device, the time should correspond to the system monotonic up-time
|
||
|
clock. For situations in which an absolute time is not needed such as
|
||
|
using the color buffer for video encoding, the presentation time of the
|
||
|
first frame may be arbitrarily chosen and those of subsequent frames
|
||
|
chosen relative to that of the first frame.
|
||
|
|
||
|
The presentation time may be set multiple times, with each call to
|
||
|
eglPresentationTimeANDROID overriding prior calls. Setting the
|
||
|
presentation time alone does not cause the color buffer to be made
|
||
|
visible, but if the color buffer is subsequently posted to a native window
|
||
|
or copied to a native pixmap then the presentation time of the surface at
|
||
|
that time may be passed along for the native window system to use.
|
||
|
|
||
|
If the surface presentation time is successfully set, EGL_TRUE is
|
||
|
returned. Otherwise EGL_FALSE is returned and an appropriate error is
|
||
|
set.
|
||
|
|
||
|
Issues
|
||
|
|
||
|
1. How is the presentation time used?
|
||
|
|
||
|
RESOLVED: The uses of the presentation time are intentionally not specified
|
||
|
in this extension. Some possible uses include Audio/Video synchronization,
|
||
|
video frame timestamps for video encoding, display latency metrics, and
|
||
|
display latency control.
|
||
|
|
||
|
2. How can the current value of the clock that should be used for the
|
||
|
presentation time when an absolute time is needed be queried on Android?
|
||
|
|
||
|
RESOLVED: The current clock value can be queried from the Java
|
||
|
SystemClock#uptimeMillis() method or from the native clock_gettime
|
||
|
function by passing CLOCK_MONOTONIC as the clock identifier.
|
||
|
|
||
|
Revision History
|
||
|
|
||
|
#1 (Jamie Gennis, April 1, 2013)
|
||
|
- Clarified how uses that either do or do not need an absolute time should
|
||
|
be handled.
|
||
|
- Specified the eglPresentationTimeANDROID return value.
|
||
|
|
||
|
#1 (Jamie Gennis, January 8, 2013)
|
||
|
- Initial draft.
|