1Name 2 3 NV_stream_dma 4 5Name Strings 6 7 EGL_NV_stream_dma 8 9Contributors 10 11 Santanu Thangaraj 12 Daniel Kartch 13 Arihant Jejani 14 15Contacts 16 17 Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com) 18 Arihant Jejani, NVIDIA (ajejani 'at' nvidia.com) 19 20Status 21 22 Draft 23 24Version 25 26 Version 1 - April 15, 2019 27 28Number 29 30 135 31 32Extension Type 33 34 EGL display extension 35 36Dependencies 37 38 Requires EGL_NV_stream_remote extension. 39 40 Requires EGL_NV_stream_cross_system extension. 41 42 Interacts with EGL_NV_stream_socket extensions. 43 44Overview: 45 46 This extension provides the framework for performing DMA transfers 47 between opposite ends of a single stream, if there is no shared 48 memory available between them. 49 50 In case of cross system streams the buffer contents of one end of 51 the stream is transferred to other end using sockets by 52 EGL_NV_stream_socket extension. Transferring buffer contents 53 through sockets is slower compared to DMA transfers. Since DMA 54 transfers have higher throughput compared to sockets, using 55 EGL_NV_stream_dma extension, applications can request EGL to 56 utilize DMA channels to perform buffer copies. 57 58New types 59 60 None 61 62New Procedures and functions 63 64 None 65 66New Tokens 67 68 Accepted as attribute names in eglCreateStreamKHR, 69 eglCreateStreamAttribKHR, eglQueryStreamKHR, and 70 eglQueryStreamAttribKHR: 71 72 EGL_STREAM_DMA_NV 0x3371 73 EGL_STREAM_DMA_SERVER_NV 0x3372 74 75Add to list of failures in section "3.10.1 Creating an EGLStream" in 76EGL_KHR stream: 77 - EGL_BAD_MATCH is generated if the value of EGL_STREAM_DMA_NV is 78 neither EGL_TRUE nor EGL_FALSE. 79 - EGL_BAD_MATCH is generated if the value of 80 EGL_STREAM_DMA_SERVER_NV is not EGL_DONT_CARE or a valid 81 DMA server identifier as defined by the platform. 82 83Add to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream: 84 85 Attribute Read/Write Type Section 86 ------------------------ ----------- ------ ---------- 87 EGL_STREAM_DMA_NV io EGLint 3.10.4.x 88 EGL_STREAM_DMA_SERVER_NV io platform dependent 3.10.4.x+1 89 90Add new subsections to the end of section "3.10.4 EGLStream Attributes" 91in EGL_KHR_stream: 92 93 3.10.4.x EGL_STREAM_DMA_NV Attribute 94 95 The EGL_STREAM_DMA_NV attribute may be set when the stream is 96 created, and indicates whether the DMA channels have to be used to 97 transfer the buffer contents from producer to consumer. Legal 98 values are EGL_TRUE or EGL_FALSE. The default value is EGL_FALSE. 99 100 A value of EGL_TRUE indicates that EGL has to use DMA channels to 101 transfer buffers from producer to consumer. 102 103 If EGL_FALSE is specified, DMA channels will not be utilized for 104 buffer transfers. 105 106 3.10.4.x+1 EGL_STREAM_DMA_SERVER_NV Attribute 107 108 The EGL_STREAM_DMA_SERVER_NV attribute is a platform dependent 109 identifier which may be set when the stream is created and it 110 indicates the server, which must be contacted to handle DMA 111 transfers, if that server is not local. Legal values, aside from 112 EGL_DONT_CARE, are determined by the implementation. The default 113 value is EGL_DONT_CARE. 114 115Issues 116 117 1. What happens when application requests DMA copy using 118 EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or 119 eglCreateStreamAttribKHR API, but the system does not support 120 access to DMA channels? 121 122 RESOLVED: The functions return EGL_NO_STREAM_KHR and 123 EGL_BAD_ATTRIBUTE error is set. 124 125 2. What happens when application requests DMA copy using 126 EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or 127 eglCreateStreamAttribKHR API, and the system supports DMA 128 channels, but currently none of the channels are available for 129 use? 130 131 RESOLVED: The functions return EGL_NO_STREAM_KHR and 132 EGL_BAD_ATTRIBUTE error is set. 133 134Revision History 135 136 #1 (April 15, 2019) Santanu Thangaraj 137 - Initial version 138