egl: Export the MESA GL Interop functions through eglGetProcAddress

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Acked-by: Antonio Gomes <antoniospg100@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24573>
This commit is contained in:
Sylvain Munaut
2023-08-08 02:03:27 +02:00
committed by Marge Bot
parent 1b8d81f3f8
commit 48e416ee2f
6 changed files with 49 additions and 4 deletions

View File

@@ -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)

View File

@@ -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"),
)

View File

@@ -31,6 +31,11 @@
This file contains any EGL extension functions that are missing from
the normal egl.xml list.
</comment>
<types>
<type>struct <name>mesa_glinterop_device_info</name>;</type>
<type>struct <name>mesa_glinterop_export_in</name>;</type>
<type>struct <name>mesa_glinterop_export_out</name>;</type>
</types>
<commands namespace="EGL">
<!-- EGL_WL_bind_wayland_display -->
<command>
@@ -77,6 +82,29 @@
<param><ptype>EGLint *</ptype> <name>numerator</name></param>
<param><ptype>EGLint *</ptype> <name>denominator</name></param>
</command>
<!-- EGL_MESA_gl_interop -->
<command>
<proto><ptype>EGLint</ptype> <name>eglGLInteropQueryDeviceInfoMESA</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLContext</ptype> <name>ctx</name></param>
<param>struct <ptype>mesa_glinterop_device_info</ptype> *<name>out</name></param>
</command>
<command>
<proto><ptype>EGLint</ptype> <name>eglGLInteropExportObjectMESA</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLContext</ptype> <name>ctx</name></param>
<param>struct <ptype>mesa_glinterop_export_in</ptype> *<name>in</name></param>
<param>struct <ptype>mesa_glinterop_export_out</ptype> *<name>out</name></param>
</command>
<command>
<proto><ptype>EGLint</ptype> <name>eglGLInteropFlushObjectsMESA</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLContext</ptype> <name>ctx</name></param>
<param>unsigned <name>count</name></param>
<param>struct <ptype>mesa_glinterop_export_in</ptype> *<name>objects</name></param>
<param>GLsync *<name>sync</name></param>
</command>
</commands>
</registry>

View File

@@ -102,6 +102,7 @@ def generateHeader(functions):
#include <EGL/eglext.h>
#include <EGL/eglmesaext.h>
#include <EGL/eglext_angle.h>
#include <GL/mesa_glinterop.h>
#include "glvnd/libeglabi.h"
""".lstrip("\n"))

View File

@@ -2798,7 +2798,9 @@ eglGetProcAddress(const char *procname)
{
static const struct _egl_entrypoint egl_functions[] = {
#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;

View File

@@ -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)