| 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 |