Class NVStreamRemote
This extension provides a generic framework for establishing stream connections when the producer and consumer endpoints are not associated with the
same EGLStream
object. The cross-process streams allowed by the KHR_stream_cross_process_fd
extension are one example of such a
connection. Other potential examples include streams between objects associated with different EGLDisplays
in a single process, streams between
processes residing in separate virtual machine partitions on a single system, or streams between entirely separate systems connected via the internet.
The approach used by KHR_stream_cross_process_fd
has several drawbacks:
- It creates a new pair of stream creation and query functions which are specific to both the type of stream and the method used for communicating the stream's identity. Extending this methodology would require new pairs of functions for every new type of stream connection.
- It allows creation of the connected stream objects without any indication of which side will be the consumer and which will be the producer. It even allows, although this was probably not intended, a cross-process stream to be established, but have both producer and consumer exist in the same process, with the other process acting as a voyeur that can observe state and perhaps modify attributes, but not operate on frames.
- The use of file descriptors generated by EGL in one process and accessed by EGL in another to establish communication has potential security flaws, and may not be available at all on some real-time operating systems.
Rather than implement new connection types using this model, we propose a more generic approach that does not require a proliferation of new interfaces
and avoids any ambiguities in how the stream will be used. These extensions can coexist with KHR_stream_cross_process_fd
, but allow for
more control of stream communication by the applications.
These extensions provide the framework with which arbitrary stream object pairs can be established, but by themselves are insufficient to create such
pairs. In addition, a separate extension must be used to determine the protocol by which the two objects will communicate. See for example the
NV_stream_socket
extension.
Several optional types of separate stream objects are defined, with successive levels of remoteness. It should be assumed that a more remote type will be less efficient in transfering images, and therefore applications should choose the least remote type available that is compatible with their use cases.
Requires KHR_stream
.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Accepted byCreateStreamKHR
andCreateStreamAttribKHR
, and returned byQueryStreamKHR
andQueryStreamAttribKHR
when attribute isSTREAM_ENDPOINT_NV
.static final int
WhenNV_stream_cross_display
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.static final int
WhenNV_stream_cross_object
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.static final int
WhenNV_stream_cross_partition
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.static final int
WhenNV_stream_cross_process
is present, accepted as value for attributeSTREAM_TYPE_NV
byCreateStreamKHR
andCreateStreamAttribKHR
.static final int
WhenNV_stream_cross_system
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.static final int
Accepted as attribute names inCreateStreamKHR
,CreateStreamAttribKHR
,QueryStreamKHR
, andQueryStreamAttribKHR
.static final int
Accepted byCreateStreamKHR
andCreateStreamAttribKHR
, and returned byQueryStreamKHR
andQueryStreamAttribKHR
, as value when attribute isSTREAM_TYPE_NV
,STREAM_PROTOCOL_NV
orSTREAM_ENDPOINT_NV
.static final int
Accepted byCreateStreamKHR
andCreateStreamAttribKHR
, and returned byQueryStreamKHR
andQueryStreamAttribKHR
when attribute isSTREAM_ENDPOINT_NV
.static final int
IfKHR_stream_cross_process_fd
is present, returned byQueryStreamKHR
andQueryStreamAttribKHR
when attribute isSTREAM_PROTOCOL_NV
.static final int
Accepted as attribute names inCreateStreamKHR
,CreateStreamAttribKHR
,QueryStreamKHR
, andQueryStreamAttribKHR
.static final int
static final int
Accepted as attribute names inCreateStreamKHR
,CreateStreamAttribKHR
,QueryStreamKHR
, andQueryStreamAttribKHR
. -
Method Summary
-
Field Details
-
EGL_STREAM_STATE_INITIALIZING_NV
public static final int EGL_STREAM_STATE_INITIALIZING_NV- See Also:
-
EGL_STREAM_TYPE_NV
public static final int EGL_STREAM_TYPE_NVAccepted as attribute names inCreateStreamKHR
,CreateStreamAttribKHR
,QueryStreamKHR
, andQueryStreamAttribKHR
.- See Also:
-
EGL_STREAM_PROTOCOL_NV
public static final int EGL_STREAM_PROTOCOL_NVAccepted as attribute names inCreateStreamKHR
,CreateStreamAttribKHR
,QueryStreamKHR
, andQueryStreamAttribKHR
.- See Also:
-
EGL_STREAM_ENDPOINT_NV
public static final int EGL_STREAM_ENDPOINT_NVAccepted as attribute names inCreateStreamKHR
,CreateStreamAttribKHR
,QueryStreamKHR
, andQueryStreamAttribKHR
.- See Also:
-
EGL_STREAM_LOCAL_NV
public static final int EGL_STREAM_LOCAL_NVAccepted byCreateStreamKHR
andCreateStreamAttribKHR
, and returned byQueryStreamKHR
andQueryStreamAttribKHR
, as value when attribute isSTREAM_TYPE_NV
,STREAM_PROTOCOL_NV
orSTREAM_ENDPOINT_NV
.- See Also:
-
EGL_STREAM_CROSS_OBJECT_NV
public static final int EGL_STREAM_CROSS_OBJECT_NVWhenNV_stream_cross_object
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.- See Also:
-
EGL_STREAM_CROSS_DISPLAY_NV
public static final int EGL_STREAM_CROSS_DISPLAY_NVWhenNV_stream_cross_display
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.- See Also:
-
EGL_STREAM_CROSS_PROCESS_NV
public static final int EGL_STREAM_CROSS_PROCESS_NVWhenNV_stream_cross_process
is present, accepted as value for attributeSTREAM_TYPE_NV
byCreateStreamKHR
andCreateStreamAttribKHR
. When eitherNV_stream_cross_process
orKHR_stream_cross_process_fd
is present, returned byQueryStreamKHR
andQueryStreamAttribKHR
for attributeSTREAM_TYPE_NV
.- See Also:
-
EGL_STREAM_CROSS_PARTITION_NV
public static final int EGL_STREAM_CROSS_PARTITION_NVWhenNV_stream_cross_partition
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.- See Also:
-
EGL_STREAM_CROSS_SYSTEM_NV
public static final int EGL_STREAM_CROSS_SYSTEM_NVWhenNV_stream_cross_system
is present, accepted byCreateStreamKHR
andCreateStreamAttribKHR
and returned byQueryStreamKHR
andQueryStreamAttribKHR
as value for attributeSTREAM_TYPE_NV
.- See Also:
-
EGL_STREAM_PROTOCOL_FD_NV
public static final int EGL_STREAM_PROTOCOL_FD_NVIfKHR_stream_cross_process_fd
is present, returned byQueryStreamKHR
andQueryStreamAttribKHR
when attribute isSTREAM_PROTOCOL_NV
.- See Also:
-
EGL_STREAM_PRODUCER_NV
public static final int EGL_STREAM_PRODUCER_NVAccepted byCreateStreamKHR
andCreateStreamAttribKHR
, and returned byQueryStreamKHR
andQueryStreamAttribKHR
when attribute isSTREAM_ENDPOINT_NV
.- See Also:
-
EGL_STREAM_CONSUMER_NV
public static final int EGL_STREAM_CONSUMER_NVAccepted byCreateStreamKHR
andCreateStreamAttribKHR
, and returned byQueryStreamKHR
andQueryStreamAttribKHR
when attribute isSTREAM_ENDPOINT_NV
.- See Also:
-