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