Merge pull request #88 from santanu-thangaraj/EGL_stream_dma
EGL_NV_stream_dma
diff --git a/api/egl.xml b/api/egl.xml
index e079e7b..c27f172 100644
--- a/api/egl.xml
+++ b/api/egl.xml
@@ -861,7 +861,9 @@
<enum value="0x336E" name="EGL_BOTTOM_NV"/>
<enum value="0x336F" name="EGL_X_AXIS_NV"/>
<enum value="0x3370" name="EGL_Y_AXIS_NV"/>
- <unused start="0x3371" end="0x339F"/>
+ <enum value="0x3371" name="EGL_STREAM_DMA_NV"/>
+ <enum value="0x3372" name="EGL_STREAM_DMA_SERVER_NV"/>
+ <unused start="0x3373" end="0x339F"/>
</enums>
<enums namespace="EGL" start="0x33A0" end="0x33AF" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 13175)">
@@ -3089,6 +3091,12 @@
<enum name="EGL_STREAM_CROSS_SYSTEM_NV"/>
</require>
</extension>
+ <extension name="EGL_NV_stream_dma" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_DMA_NV"/>
+ <enum name="EGL_STREAM_DMA_SERVER_NV"/>
+ </require>
+ </extension>
<extension name="EGL_NV_stream_fifo_next" supported="egl">
<require>
<enum name="EGL_PENDING_FRAME_NV"/>
diff --git a/extensions/NV/EGL_NV_stream_dma.txt b/extensions/NV/EGL_NV_stream_dma.txt
new file mode 100644
index 0000000..16716b0
--- /dev/null
+++ b/extensions/NV/EGL_NV_stream_dma.txt
@@ -0,0 +1,137 @@
+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
diff --git a/index.php b/index.php
index 6d1db1f..99ea4e3 100644
--- a/index.php
+++ b/index.php
@@ -337,6 +337,8 @@
</li>
<li value=134> <a href="extensions/NV/EGL_NV_stream_origin.txt">EGL_NV_stream_origin</a>
</li>
+<li value=135> <a href="extensions/NV/EGL_NV_stream_dma.txt">EGL_NV_stream_dma</a>
+</li>
</ol>
<h6> Providing Feedback on the Registry </h6>
diff --git a/registry.tcl b/registry.tcl
index ab8419c..483b191 100644
--- a/registry.tcl
+++ b/registry.tcl
@@ -694,4 +694,9 @@
flags public
filename extensions/NV/EGL_NV_stream_origin.txt
}
-# Next free extension number: 135
+extension EGL_NV_stream_dma {
+ number 135
+ flags public
+ filename extensions/NV/EGL_NV_stream_dma.txt
+}
+# Next free extension number: 136