diff --git a/src/egl/egl-entrypoint-check.py b/src/egl/egl-entrypoint-check.py
index 967ea0646ba..c9aaa7f3515 100644
--- a/src/egl/egl-entrypoint-check.py
+++ b/src/egl/egl-entrypoint-check.py
@@ -4,7 +4,8 @@ import argparse
from generate.eglFunctionList import EGL_FUNCTIONS as GLVND_ENTRYPOINTS
-PREFIX = 'EGL_ENTRYPOINT('
+PREFIX1 = 'EGL_ENTRYPOINT('
+PREFIX2 = 'EGL_ENTRYPOINT2('
SUFFIX = ')'
@@ -69,9 +70,14 @@ def main():
entrypoints = []
for line in lines:
line = line.strip()
- if line.startswith(PREFIX):
+ if line.startswith(PREFIX1):
assert line.endswith(SUFFIX)
- entrypoints.append(line[len(PREFIX):-len(SUFFIX)])
+ entrypoints.append(line[len(PREFIX1):-len(SUFFIX)])
+ if line.startswith(PREFIX2):
+ assert line.endswith(SUFFIX)
+ entrypoint = line[len(PREFIX2):-len(SUFFIX)]
+ entrypoint = entrypoint.split(',')[0].strip()
+ entrypoints.append(entrypoint)
check_entrypoint_sorted(entrypoints)
diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
index c1777eb7592..5076ced6f11 100644
--- a/src/egl/generate/eglFunctionList.py
+++ b/src/egl/generate/eglFunctionList.py
@@ -242,5 +242,9 @@ EGL_FUNCTIONS = (
# EGL_KHR_partial_update
_eglFunc("eglSetDamageRegionKHR", "display"),
+ # EGL_MESA_gl_interop
+ _eglFunc("eglGLInteropQueryDeviceInfoMESA", "display"),
+ _eglFunc("eglGLInteropExportObjectMESA", "display"),
+ _eglFunc("eglGLInteropFlushObjectsMESA", "display"),
)
diff --git a/src/egl/generate/egl_other.xml b/src/egl/generate/egl_other.xml
index 74c70ccdbef..5a7c4adbf4f 100644
--- a/src/egl/generate/egl_other.xml
+++ b/src/egl/generate/egl_other.xml
@@ -31,6 +31,11 @@
This file contains any EGL extension functions that are missing from
the normal egl.xml list.
+
+ struct mesa_glinterop_device_info;
+ struct mesa_glinterop_export_in;
+ struct mesa_glinterop_export_out;
+
@@ -77,6 +82,29 @@
EGLint * numerator
EGLint * denominator
+
+
+
+ EGLint eglGLInteropQueryDeviceInfoMESA
+ EGLDisplay dpy
+ EGLContext ctx
+ struct mesa_glinterop_device_info *out
+
+
+ EGLint eglGLInteropExportObjectMESA
+ EGLDisplay dpy
+ EGLContext ctx
+ struct mesa_glinterop_export_in *in
+ struct mesa_glinterop_export_out *out
+
+
+ EGLint eglGLInteropFlushObjectsMESA
+ EGLDisplay dpy
+ EGLContext ctx
+ unsigned count
+ struct mesa_glinterop_export_in *objects
+ GLsync *sync
+
diff --git a/src/egl/generate/gen_egl_dispatch.py b/src/egl/generate/gen_egl_dispatch.py
index be546bbda77..dccc7f3cbaa 100644
--- a/src/egl/generate/gen_egl_dispatch.py
+++ b/src/egl/generate/gen_egl_dispatch.py
@@ -102,6 +102,7 @@ def generateHeader(functions):
#include
#include
#include
+ #include
#include "glvnd/libeglabi.h"
""".lstrip("\n"))
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index 6053eb7b8a0..d24eb04f41c 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -2797,8 +2797,10 @@ PUBLIC __eglMustCastToProperFunctionPointerType EGLAPIENTRY
eglGetProcAddress(const char *procname)
{
static const struct _egl_entrypoint egl_functions[] = {
-#define EGL_ENTRYPOINT(f) {.name = #f, .function = (_EGLProc)f},
+#define EGL_ENTRYPOINT(f) {.name = #f, .function = (_EGLProc)f},
+#define EGL_ENTRYPOINT2(n, f) {.name = #n, .function = (_EGLProc)f},
#include "eglentrypoint.h"
+#undef EGL_ENTRYPOINT2
#undef EGL_ENTRYPOINT
};
_EGLProc ret = NULL;
diff --git a/src/egl/main/eglentrypoint.h b/src/egl/main/eglentrypoint.h
index dc67301914e..88f88e77966 100644
--- a/src/egl/main/eglentrypoint.h
+++ b/src/egl/main/eglentrypoint.h
@@ -1,6 +1,7 @@
/* core functions queryable in the presence of
* EGL_KHR_get_all_proc_addresses or EGL 1.5
*/
+/* clang-format off */
/* alphabetical order */
EGL_ENTRYPOINT(eglBindAPI)
EGL_ENTRYPOINT(eglBindTexImage)
@@ -36,6 +37,9 @@ EGL_ENTRYPOINT(eglDupNativeFenceFDANDROID)
EGL_ENTRYPOINT(eglExportDMABUFImageMESA)
EGL_ENTRYPOINT(eglExportDMABUFImageQueryMESA)
EGL_ENTRYPOINT(eglExportDRMImageMESA)
+EGL_ENTRYPOINT2(eglGLInteropExportObjectMESA, MesaGLInteropEGLExportObject)
+EGL_ENTRYPOINT2(eglGLInteropFlushObjectsMESA, MesaGLInteropEGLFlushObjects)
+EGL_ENTRYPOINT2(eglGLInteropQueryDeviceInfoMESA, MesaGLInteropEGLQueryDeviceInfo)
EGL_ENTRYPOINT(eglGetConfigAttrib)
EGL_ENTRYPOINT(eglGetConfigs)
EGL_ENTRYPOINT(eglGetCurrentContext)