blob: 0b2650844fba345892497354c0ca6a84fd1cebdf [file] [log] [blame]
Name
NV_stream_flush
Name Strings
EGL_NV_stream_flush
Contributors
Santanu Thangaraj
Daniel Kartch
Contacts
Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com)
Status
Draft
Version
Version 3 - April 11, 2018
Number
127
Extension Type
EGL display extension
Dependencies
Requires the EGL_KHR_stream extension.
Requires either the EGL_KHR_stream_cross_process_fd or
EGL_NV_stream_remote extensions.
This extension is written based on the wording of version 27 of
the EGL_KHR_stream extension.
Overview:
The EGL_KHR_stream_cross_process_fd and EGL_NV_stream_remote
extensions do not guarantee that when the state of the EGLStream
object representing one endpoint of the stream changes,
the state of the other endpoint will immediately reflect
that change. Depending on the implementation, there may be some
latency in the propagation of state changes.
This latency will not affect any applications which rely solely
on the stream itself for communication. State changes made on
one side will eventually be visible on the other side,
and can then be responded to.
This only affects applications which use some additional means of
communication outside of the stream itself, which may encounter
race conditions. In particular, if an application inserts a frame
into a stream, then sends a message to the other side indicating
that the frame is ready, the other side may encounter an error if
it tries to acquire the frame and it is not yet available.
One solution is to force all operations that change state of one
endpoint to behave synchronously, and not return until the change
is reflected on the other endpoint. However this adds undesirable
delays for the majority of applications and operations where such
synchronization is not required. This extension instead provides
a means for applications to explicitly invoke such
synchronization only where required.
New types
None
New Procedures and functions
EGLBoolean eglStreamFlushNV(
EGLDisplay dpy,
EGLStreamKHR stream);
New Tokens
None
Add a new subsection "3.10.x EGLStream flush" at the end of section
"3.10 EGLStreams" in EGL_KHR_stream extension.
The command
EGLBoolean eglStreamFlushNV(
EGLDisplay dpy,
EGLStreamKHR stream);
When called with either producer or consumer endpoint of the
stream, will block until any state changes made to this endpoint
prior to the call are visible on the EGLStream object of the other
endpoint.
On success, EGL_TRUE will be returned. On failure, EGL_FALSE will
be returned and an error will be generated.
- EGL_BAD_STREAM_KHR is generated if <stream> is not a valid
EGLStream.
- EGL_BAD_STATE_KHR is generated if <stream> is in
EGL_STREAM_STATE_DISCONNECTED_KHR state.
- EGL_BAD_DISPLAY is generated if <dpy> is not a valid
EGLDisplay.
- EGL_NOT_INITIALIZED is generated if <dpy> is not initialized.
Issues
1. When both producer and consumer are connected to a single
EGLStream object, what happens when eglStreamFlushNV is called?
RESOLVED: The function returns without any blocking.
Revision History
#3 (April 11, 2018) Jon Leech
- Add missing NV suffix to eglStreamFlushNV
#2 (April 2, 2018) Santanu Thangaraj
- Update based on comments from Daniel Kartch
- General cleanup
#1 (March 26, 2018) Santanu Thangaraj
- Initial draft