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