102f4aeb0Sopenharmony_ciName 202f4aeb0Sopenharmony_ci 302f4aeb0Sopenharmony_ci NV_stream_dma 402f4aeb0Sopenharmony_ci 502f4aeb0Sopenharmony_ciName Strings 602f4aeb0Sopenharmony_ci 702f4aeb0Sopenharmony_ci EGL_NV_stream_dma 802f4aeb0Sopenharmony_ci 902f4aeb0Sopenharmony_ciContributors 1002f4aeb0Sopenharmony_ci 1102f4aeb0Sopenharmony_ci Santanu Thangaraj 1202f4aeb0Sopenharmony_ci Daniel Kartch 1302f4aeb0Sopenharmony_ci Arihant Jejani 1402f4aeb0Sopenharmony_ci 1502f4aeb0Sopenharmony_ciContacts 1602f4aeb0Sopenharmony_ci 1702f4aeb0Sopenharmony_ci Santanu Thangaraj, NVIDIA (sthangaraj 'at' nvidia.com) 1802f4aeb0Sopenharmony_ci Arihant Jejani, NVIDIA (ajejani 'at' nvidia.com) 1902f4aeb0Sopenharmony_ci 2002f4aeb0Sopenharmony_ciStatus 2102f4aeb0Sopenharmony_ci 2202f4aeb0Sopenharmony_ci Draft 2302f4aeb0Sopenharmony_ci 2402f4aeb0Sopenharmony_ciVersion 2502f4aeb0Sopenharmony_ci 2602f4aeb0Sopenharmony_ci Version 1 - April 15, 2019 2702f4aeb0Sopenharmony_ci 2802f4aeb0Sopenharmony_ciNumber 2902f4aeb0Sopenharmony_ci 3002f4aeb0Sopenharmony_ci 135 3102f4aeb0Sopenharmony_ci 3202f4aeb0Sopenharmony_ciExtension Type 3302f4aeb0Sopenharmony_ci 3402f4aeb0Sopenharmony_ci EGL display extension 3502f4aeb0Sopenharmony_ci 3602f4aeb0Sopenharmony_ciDependencies 3702f4aeb0Sopenharmony_ci 3802f4aeb0Sopenharmony_ci Requires EGL_NV_stream_remote extension. 3902f4aeb0Sopenharmony_ci 4002f4aeb0Sopenharmony_ci Requires EGL_NV_stream_cross_system extension. 4102f4aeb0Sopenharmony_ci 4202f4aeb0Sopenharmony_ci Interacts with EGL_NV_stream_socket extensions. 4302f4aeb0Sopenharmony_ci 4402f4aeb0Sopenharmony_ciOverview: 4502f4aeb0Sopenharmony_ci 4602f4aeb0Sopenharmony_ci This extension provides the framework for performing DMA transfers 4702f4aeb0Sopenharmony_ci between opposite ends of a single stream, if there is no shared 4802f4aeb0Sopenharmony_ci memory available between them. 4902f4aeb0Sopenharmony_ci 5002f4aeb0Sopenharmony_ci In case of cross system streams the buffer contents of one end of 5102f4aeb0Sopenharmony_ci the stream is transferred to other end using sockets by 5202f4aeb0Sopenharmony_ci EGL_NV_stream_socket extension. Transferring buffer contents 5302f4aeb0Sopenharmony_ci through sockets is slower compared to DMA transfers. Since DMA 5402f4aeb0Sopenharmony_ci transfers have higher throughput compared to sockets, using 5502f4aeb0Sopenharmony_ci EGL_NV_stream_dma extension, applications can request EGL to 5602f4aeb0Sopenharmony_ci utilize DMA channels to perform buffer copies. 5702f4aeb0Sopenharmony_ci 5802f4aeb0Sopenharmony_ciNew types 5902f4aeb0Sopenharmony_ci 6002f4aeb0Sopenharmony_ci None 6102f4aeb0Sopenharmony_ci 6202f4aeb0Sopenharmony_ciNew Procedures and functions 6302f4aeb0Sopenharmony_ci 6402f4aeb0Sopenharmony_ci None 6502f4aeb0Sopenharmony_ci 6602f4aeb0Sopenharmony_ciNew Tokens 6702f4aeb0Sopenharmony_ci 6802f4aeb0Sopenharmony_ci Accepted as attribute names in eglCreateStreamKHR, 6902f4aeb0Sopenharmony_ci eglCreateStreamAttribKHR, eglQueryStreamKHR, and 7002f4aeb0Sopenharmony_ci eglQueryStreamAttribKHR: 7102f4aeb0Sopenharmony_ci 7202f4aeb0Sopenharmony_ci EGL_STREAM_DMA_NV 0x3371 7302f4aeb0Sopenharmony_ci EGL_STREAM_DMA_SERVER_NV 0x3372 7402f4aeb0Sopenharmony_ci 7502f4aeb0Sopenharmony_ciAdd to list of failures in section "3.10.1 Creating an EGLStream" in 7602f4aeb0Sopenharmony_ciEGL_KHR stream: 7702f4aeb0Sopenharmony_ci - EGL_BAD_MATCH is generated if the value of EGL_STREAM_DMA_NV is 7802f4aeb0Sopenharmony_ci neither EGL_TRUE nor EGL_FALSE. 7902f4aeb0Sopenharmony_ci - EGL_BAD_MATCH is generated if the value of 8002f4aeb0Sopenharmony_ci EGL_STREAM_DMA_SERVER_NV is not EGL_DONT_CARE or a valid 8102f4aeb0Sopenharmony_ci DMA server identifier as defined by the platform. 8202f4aeb0Sopenharmony_ci 8302f4aeb0Sopenharmony_ciAdd to "Table 3.10.4.4 EGLStream Attributes" in EGL_KHR_stream: 8402f4aeb0Sopenharmony_ci 8502f4aeb0Sopenharmony_ci Attribute Read/Write Type Section 8602f4aeb0Sopenharmony_ci ------------------------ ----------- ------ ---------- 8702f4aeb0Sopenharmony_ci EGL_STREAM_DMA_NV io EGLint 3.10.4.x 8802f4aeb0Sopenharmony_ci EGL_STREAM_DMA_SERVER_NV io platform dependent 3.10.4.x+1 8902f4aeb0Sopenharmony_ci 9002f4aeb0Sopenharmony_ciAdd new subsections to the end of section "3.10.4 EGLStream Attributes" 9102f4aeb0Sopenharmony_ciin EGL_KHR_stream: 9202f4aeb0Sopenharmony_ci 9302f4aeb0Sopenharmony_ci 3.10.4.x EGL_STREAM_DMA_NV Attribute 9402f4aeb0Sopenharmony_ci 9502f4aeb0Sopenharmony_ci The EGL_STREAM_DMA_NV attribute may be set when the stream is 9602f4aeb0Sopenharmony_ci created, and indicates whether the DMA channels have to be used to 9702f4aeb0Sopenharmony_ci transfer the buffer contents from producer to consumer. Legal 9802f4aeb0Sopenharmony_ci values are EGL_TRUE or EGL_FALSE. The default value is EGL_FALSE. 9902f4aeb0Sopenharmony_ci 10002f4aeb0Sopenharmony_ci A value of EGL_TRUE indicates that EGL has to use DMA channels to 10102f4aeb0Sopenharmony_ci transfer buffers from producer to consumer. 10202f4aeb0Sopenharmony_ci 10302f4aeb0Sopenharmony_ci If EGL_FALSE is specified, DMA channels will not be utilized for 10402f4aeb0Sopenharmony_ci buffer transfers. 10502f4aeb0Sopenharmony_ci 10602f4aeb0Sopenharmony_ci 3.10.4.x+1 EGL_STREAM_DMA_SERVER_NV Attribute 10702f4aeb0Sopenharmony_ci 10802f4aeb0Sopenharmony_ci The EGL_STREAM_DMA_SERVER_NV attribute is a platform dependent 10902f4aeb0Sopenharmony_ci identifier which may be set when the stream is created and it 11002f4aeb0Sopenharmony_ci indicates the server, which must be contacted to handle DMA 11102f4aeb0Sopenharmony_ci transfers, if that server is not local. Legal values, aside from 11202f4aeb0Sopenharmony_ci EGL_DONT_CARE, are determined by the implementation. The default 11302f4aeb0Sopenharmony_ci value is EGL_DONT_CARE. 11402f4aeb0Sopenharmony_ci 11502f4aeb0Sopenharmony_ciIssues 11602f4aeb0Sopenharmony_ci 11702f4aeb0Sopenharmony_ci 1. What happens when application requests DMA copy using 11802f4aeb0Sopenharmony_ci EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or 11902f4aeb0Sopenharmony_ci eglCreateStreamAttribKHR API, but the system does not support 12002f4aeb0Sopenharmony_ci access to DMA channels? 12102f4aeb0Sopenharmony_ci 12202f4aeb0Sopenharmony_ci RESOLVED: The functions return EGL_NO_STREAM_KHR and 12302f4aeb0Sopenharmony_ci EGL_BAD_ATTRIBUTE error is set. 12402f4aeb0Sopenharmony_ci 12502f4aeb0Sopenharmony_ci 2. What happens when application requests DMA copy using 12602f4aeb0Sopenharmony_ci EGL_STREAM_DMA_NV attribute in eglCreateStreamKHR or 12702f4aeb0Sopenharmony_ci eglCreateStreamAttribKHR API, and the system supports DMA 12802f4aeb0Sopenharmony_ci channels, but currently none of the channels are available for 12902f4aeb0Sopenharmony_ci use? 13002f4aeb0Sopenharmony_ci 13102f4aeb0Sopenharmony_ci RESOLVED: The functions return EGL_NO_STREAM_KHR and 13202f4aeb0Sopenharmony_ci EGL_BAD_ATTRIBUTE error is set. 13302f4aeb0Sopenharmony_ci 13402f4aeb0Sopenharmony_ciRevision History 13502f4aeb0Sopenharmony_ci 13602f4aeb0Sopenharmony_ci #1 (April 15, 2019) Santanu Thangaraj 13702f4aeb0Sopenharmony_ci - Initial version 138