blob: 16716b0b08bc78bb57938469d1a64b598b801077 [file] [log] [blame]
Name
NV_stream_dma
Name Strings
EGL_NV_stream_dma
Contributors
Santanu Thangaraj
Daniel Kartch
Arihant Jejani
Contacts
Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com)
Arihant Jejani, NVIDIA (ajejani 'at' nvidia.com)
Status
Draft
Version
Version 1 - April 15, 2019
Number
135
Extension Type
EGL display extension
Dependencies
Requires EGL_NV_stream_remote extension.
Requires EGL_NV_stream_cross_system extension.
Interacts with EGL_NV_stream_socket extensions.
Overview:
This extension provides the framework for performing DMA transfers
between opposite ends of a single stream, if there is no shared
memory available between them.
In case of cross system streams the buffer contents of one end of
the stream is transferred to other end using sockets by
EGL_NV_stream_socket extension. Transferring buffer contents
through sockets is slower compared to DMA transfers. Since DMA
transfers have higher throughput compared to sockets, using
EGL_NV_stream_dma extension, applications can request EGL to
utilize DMA channels to perform buffer copies.
New types
None
New Procedures and functions
None
New Tokens
Accepted as attribute names in eglCreateStreamKHR,
eglCreateStreamAttribKHR, eglQueryStreamKHR, and
eglQueryStreamAttribKHR:
EGL_STREAM_DMA_NV 0x3371
EGL_STREAM_DMA_SERVER_NV 0x3372
Add to list of failures in section "3.10.1 Creating an EGLStream" in
EGL_KHR stream:
- EGL_BAD_MATCH is generated if the value of EGL_STREAM_DMA_NV is
neither EGL_TRUE nor EGL_FALSE.
- EGL_BAD_MATCH is generated if the value of
EGL_STREAM_DMA_SERVER_NV is not EGL_DONT_CARE or a valid
DMA server identifier as defined by the platform.
Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream:
Attribute Read/Write Type Section
------------------------ ----------- ------ ----------
EGL_STREAM_DMA_NV io EGLint 3.10.4.x
EGL_STREAM_DMA_SERVER_NV io platform dependent 3.10.4.x+1
Add new subsections to the end of section "3.10.4 EGLStream Attributes"
in EGL_KHR_stream:
3.10.4.x EGL_STREAM_DMA_NV Attribute
The EGL_STREAM_DMA_NV attribute may be set when the stream is
created, and indicates whether the DMA channels have to be used to
transfer the buffer contents from producer to consumer. Legal
values are EGL_TRUE or EGL_FALSE. The default value is EGL_FALSE.
A value of EGL_TRUE indicates that EGL has to use DMA channels to
transfer buffers from producer to consumer.
If EGL_FALSE is specified, DMA channels will not be utilized for
buffer transfers.
3.10.4.x+1 EGL_STREAM_DMA_SERVER_NV Attribute
The EGL_STREAM_DMA_SERVER_NV attribute is a platform dependent
identifier which may be set when the stream is created and it
indicates the server, which must be contacted to handle DMA
transfers, if that server is not local. Legal values, aside from
EGL_DONT_CARE, are determined by the implementation. The default
value is EGL_DONT_CARE.
Issues
1. What happens when application requests DMA copy using
EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or
eglCreateStreamAttribKHR API, but the system does not support
access to DMA channels?
RESOLVED: The functions return EGL_NO_STREAM_KHR and
EGL_BAD_ATTRIBUTE error is set.
2. What happens when application requests DMA copy using
EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or
eglCreateStreamAttribKHR API, and the system supports DMA
channels, but currently none of the channels are available for
use?
RESOLVED: The functions return EGL_NO_STREAM_KHR and
EGL_BAD_ATTRIBUTE error is set.
Revision History
#1 (April 15, 2019) Santanu Thangaraj
- Initial version