extensions: Add EGL_EXT_device_drm_render_node (#127)
* extensions: Add EGL_EXT_device_drm_render_node
* Clarify interactions with EGL_EXT_device_drm
diff --git a/api/EGL/egl.h b/api/EGL/egl.h
index fd835d9..9c32549 100644
--- a/api/EGL/egl.h
+++ b/api/EGL/egl.h
@@ -14,7 +14,7 @@
** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl
**
-** Khronos $Git commit SHA1: 5a9a7e3fcb $ on $Git commit date: 2020-08-24 11:05:32 -0700 $
+** Khronos $Git commit SHA1: e8baa0bf39 $ on $Git commit date: 2021-04-26 17:56:26 -0600 $
*/
#include <EGL/eglplatform.h>
@@ -23,7 +23,7 @@
#define EGL_EGL_PROTOTYPES 1
#endif
-/* Generated on date 20201001 */
+/* Generated on date 20210604 */
/* Generated C header for:
* API: egl
diff --git a/api/EGL/eglext.h b/api/EGL/eglext.h
index 1383bee..a7ca1f3 100644
--- a/api/EGL/eglext.h
+++ b/api/EGL/eglext.h
@@ -14,12 +14,12 @@
** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl
**
-** Khronos $Git commit SHA1: 59522adade $ on $Git commit date: 2021-02-02 11:09:11 -0700 $
+** Khronos $Git commit SHA1: e8baa0bf39 $ on $Git commit date: 2021-04-26 17:56:26 -0600 $
*/
#include <EGL/eglplatform.h>
-#define EGL_EGLEXT_VERSION 20210419
+#define EGL_EGLEXT_VERSION 20210604
/* Generated C header for:
* API: egl
@@ -683,6 +683,11 @@
#define EGL_DRM_MASTER_FD_EXT 0x333C
#endif /* EGL_EXT_device_drm */
+#ifndef EGL_EXT_device_drm_render_node
+#define EGL_EXT_device_drm_render_node 1
+#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+#endif /* EGL_EXT_device_drm_render_node */
+
#ifndef EGL_EXT_device_enumeration
#define EGL_EXT_device_enumeration 1
#endif /* EGL_EXT_device_enumeration */
diff --git a/api/egl.xml b/api/egl.xml
index af57fcc..8180e0d 100644
--- a/api/egl.xml
+++ b/api/egl.xml
@@ -881,7 +881,8 @@
<enum value="0x3374" name="EGL_STREAM_IMAGE_ADD_NV"/>
<enum value="0x3375" name="EGL_STREAM_IMAGE_REMOVE_NV"/>
<enum value="0x3376" name="EGL_STREAM_IMAGE_AVAILABLE_NV"/>
- <unused start="0x3377" end="0x339F"/>
+ <enum value="0x3377" name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
+ <unused start="0x3378" end="0x339F"/>
</enums>
<enums namespace="EGL" start="0x33A0" end="0x33AF" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 13175)">
@@ -3427,5 +3428,10 @@
<enum name="EGL_DRIVER_NAME_EXT"/>
</require>
</extension>
+ <extension name="EGL_EXT_device_drm_render_node" supported="egl">
+ <require>
+ <enum name="EGL_DRM_RENDER_NODE_FILE_EXT"/>
+ </require>
+ </extension>
</extensions>
</registry>
diff --git a/extensions/EXT/EGL_EXT_device_drm_render_node.txt b/extensions/EXT/EGL_EXT_device_drm_render_node.txt
new file mode 100644
index 0000000..4c08844
--- /dev/null
+++ b/extensions/EXT/EGL_EXT_device_drm_render_node.txt
@@ -0,0 +1,106 @@
+Name
+
+ EXT_device_drm_render_node
+
+Name Strings
+
+ EXT_device_drm_render_node
+
+Contributors
+
+ James Jones
+ Simon Ser
+ Daniel Stone
+
+Contacts
+
+ James Jones, NVIDIA (jajones 'at' nvidia.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1 - June 4th, 2021
+
+Number
+
+ EGL Extension #144
+
+Extension Type
+
+ EGL device extension
+
+Dependencies
+
+ Written based on the wording of the EGL 1.5 specification.
+
+ EGL_EXT_device_query is required.
+
+ EGL_EXT_device_drm interacts with this extension.
+
+Overview
+
+ The EGL_EXT_device_drm extension provided a method for applications
+ to query the DRM device node file associated with a given
+ EGLDeviceEXT object. However, it was not clear whether it referred to
+ the primary or render device node. This extension adds an enum to
+ refer explicitly to the render device node and defines the existing
+ EGL_DRM_DEVICE_FILE_EXT as explicitly refering to the primary device
+ node.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted as the <name> parameter of eglQueryDeviceStringEXT
+
+ EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
+
+Changes to section 3.2 (Devices)
+
+ Add the following paragraph to the description of
+ eglQueryDeviceStringEXT:
+
+ "To obtain a DRM device file for the render node associated with an
+ EGLDeviceEXT, call eglQueryDeviceStringEXT with <name> set to
+ EGL_DRM_RENDER_NODE_FILE_EXT. The function will return a pointer to
+ a string containing the name of the device file (e.g.
+ "/dev/dri/renderDN"), or NULL if the device has no associated DRM
+ render node."
+
+ If EGL_EXT_device_drm is present, append the following to the
+ paragraph in the same section describing EGL_DRM_DEVICE_FILE_EXT:
+
+ "If the EGL_EXT_device_drm_render_node extension is supported, the
+ value returned will refer to a primary device node, and will be NULL
+ if the device has no associated DRM primary node. If
+ EGL_EXT_device_drm_render_node is not supported, the value returned
+ will refer to a primary device node if there exists one associated
+ with the device. Otherwise, it will refer to a render device node if
+ there exists one associated with the device. If neither exists, NULL
+ is returned."
+
+Issues
+
+ 1) Should this extension clarify that EGL_DRM_DEVICE_FILE_EXT refers
+ only to primary device nodes?
+
+ RESOLVED: Yes, but only when this extension is supported. Existing
+ implementations return render node paths for that string when no
+ suitable primary node is available.
+
+Revision History:
+
+ #2 (June 8th, 2021) James Jones
+ - Added issue #1 and related spec changes.
+
+ #1 (June 4th, 2021) James Jones
+ - Initial draft.
diff --git a/index.php b/index.php
index 9435ebe..8eb9f1c 100644
--- a/index.php
+++ b/index.php
@@ -353,6 +353,8 @@
</li>
<li value=143> <a href="extensions/EXT/EGL_EXT_device_persistent_id.txt">EGL_EXT_device_persistent_id</a>
</li>
+<li value=144> <a href="extensions/EXT/EGL_EXT_device_drm_render_node.txt">EGL_EXT_device_drm_render_node</a>
+</li>
</ol>
<h6> Providing Feedback on the Registry </h6>
diff --git a/registry.tcl b/registry.tcl
index 1639712..2d0df4b 100644
--- a/registry.tcl
+++ b/registry.tcl
@@ -742,4 +742,9 @@
flags public
filename extensions/EXT/EGL_EXT_device_persistent_id.txt
}
-# Next free extension number: 144
+extension EGL_EXT_device_drm_render_node {
+ number 144
+ flags public
+ filename extensions/EXT/EGL_EXT_device_drm_render_node.txt
+}
+# Next free extension number: 145