NVIDIA EGLStream

wl_eglstream

version 1

Argument
Value
Description
bad_alloc0
Bad allocation error
bad_handle1
Bad handle error
bad_attribs2
Bad attributes error
bad_address3
Bad IP address error
handle_type { fd, inet, socket } 
Argument
Value
Description
fd0
File descriptor
inet1
Inet connection
socket2
Unix socket
Stream handle type

- fd: The given handle represents a file descriptor, and the EGLStream connection must be done as described in EGL_KHR_stream_cross_process_fd

- inet: The EGLStream connection must be done using an inet address and port as described in EGL_NV_stream_socket. The given handle can be ignored, but both inet address and port must be given as attributes.

- socket: The given handle represents a unix socket, and the EGLStream connection must be done as described in EGL_NV_stream_socket.

Argument
Value
Description
inet_addr0
Inet IPv4 address
inet_port1
IP port
y_inverted2
Image Y-inversion bit
Stream creation attributes

- inet_addr: The given attribute encodes an IPv4 address of a client socket. Both IPv4 address and port must be set at the same time.

- inet_port: The given attribute encodes a port of a client socket. Both IPv4 address and port must be set at the same time.

- y_inverted: The given attribute encodes the default value for a stream's image inversion relative to wayland protocol convention. Vulkan apps will be set to 'true', while OpenGL apps will be set to 'false'. NOTE: EGL_NV_stream_origin is the authorative source of truth regarding a stream's frame orientation and should be queried for an accurate value. The given attribute is a 'best guess' fallback mechanism which should only be used when a query to EGL_NV_stream_origin fails.



create_stream(id: new_id<wl_buffer>, width: int, height: int, handle: fd, type: int, attribs: array)
Argument
Type
Description
idnew_id<wl_buffer>
New ID
widthint
Stream framebuffer width
heightint
Stream framebuffer height
handlefd
Handle for the stream creation
typeint
Handle type
attribsarray
Stream extra connection attribs
List of attributes with extra connection data

It contains key-value pairs compatible with intptr_t type. A key must be one of wl_eglstream_display_attrib enumeration values. What a value represents is attribute-specific.

Create a wl_buffer from the given handle

Create a wl_buffer corresponding to given handle. The attributes list may be used to define additional EGLStream connection data (e.g inet address/port). The server can create its EGLStream handle using the information encoded in the wl_buffer.

swap_interval(stream: object<wl_buffer>, interval: int)
Argument
Type
Description
streamobject<wl_buffer>
wl_buffer corresponding to an EGLStream
intervalint
new swap interval
change the swap interval of an EGLStream consumer

Set the swap interval for the consumer of the given EGLStream. The swap interval is silently clamped to the valid range on the server side.

caps(caps: int)
Argument
Type
Description
capsint
Capabilities mask
Server capabilities event

The capabilities event is sent out at wl_eglstream_display binding time. It allows the server to advertise what features it supports so clients may know what is safe to be used.

swapinterval_override(swapinterval: int, stream: object<wl_buffer>)
Argument
Type
Description
swapintervalint
Server swap interval override value
streamobject<wl_buffer>
wl_buffer corresponding to an EGLStream
Server Swap interval override event

The swapinterval_override event is sent out whenever a client requests a swapinterval setting through swap_interval() and there is an override in place that will make such request to be ignored. The swapinterval_override event will provide the override value so that the client is made aware of it.

Argument
Value
Description
stream_fd1
Stream connection with FD
stream_inet2
Stream inet connection
stream_socket4
Stream unix connection
wl_eglstream_display capability codes

This enum values should be used as bit masks.

- stream_fd: The server supports EGLStream connections as described in EGL_KHR_stream_cross_process_fd

- stream_inet: The server supports EGLStream inet connections as described in EGL_NV_stream_socket.

- stream_socket: The server supports EGLStream unix socket connections as described in EGL_NV_stream_socket.


Compositor Support

Mutter
Mutter
46
KWin
KWin
6.2
Sway
Sway
1.9
COSMIC
COSMIC
1.0.0
Hyprland
Hyprland
0.42.0
niri
0.1.8
Weston
Weston
13
Mir
Mir
2.18
GameScope
GameScope
3.15.14
Jay
1.7.0
wl_eglstream_display
x
x
x
x
x
1
x
x
x
x

Copyright (c) 2014-2019, NVIDIA CORPORATION. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.