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:

committed by
Marge Bot

parent
1b8d81f3f8
commit
48e416ee2f
@@ -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)
|
||||
|
||||
|
@@ -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"),
|
||||
)
|
||||
|
||||
|
@@ -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>
|
||||
|
||||
|
@@ -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"))
|
||||
|
@@ -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;
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user