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
|
from generate.eglFunctionList import EGL_FUNCTIONS as GLVND_ENTRYPOINTS
|
||||||
|
|
||||||
|
|
||||||
PREFIX = 'EGL_ENTRYPOINT('
|
PREFIX1 = 'EGL_ENTRYPOINT('
|
||||||
|
PREFIX2 = 'EGL_ENTRYPOINT2('
|
||||||
SUFFIX = ')'
|
SUFFIX = ')'
|
||||||
|
|
||||||
|
|
||||||
@@ -69,9 +70,14 @@ def main():
|
|||||||
entrypoints = []
|
entrypoints = []
|
||||||
for line in lines:
|
for line in lines:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if line.startswith(PREFIX):
|
if line.startswith(PREFIX1):
|
||||||
assert line.endswith(SUFFIX)
|
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)
|
check_entrypoint_sorted(entrypoints)
|
||||||
|
|
||||||
|
@@ -242,5 +242,9 @@ EGL_FUNCTIONS = (
|
|||||||
# EGL_KHR_partial_update
|
# EGL_KHR_partial_update
|
||||||
_eglFunc("eglSetDamageRegionKHR", "display"),
|
_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
|
This file contains any EGL extension functions that are missing from
|
||||||
the normal egl.xml list.
|
the normal egl.xml list.
|
||||||
</comment>
|
</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">
|
<commands namespace="EGL">
|
||||||
<!-- EGL_WL_bind_wayland_display -->
|
<!-- EGL_WL_bind_wayland_display -->
|
||||||
<command>
|
<command>
|
||||||
@@ -77,6 +82,29 @@
|
|||||||
<param><ptype>EGLint *</ptype> <name>numerator</name></param>
|
<param><ptype>EGLint *</ptype> <name>numerator</name></param>
|
||||||
<param><ptype>EGLint *</ptype> <name>denominator</name></param>
|
<param><ptype>EGLint *</ptype> <name>denominator</name></param>
|
||||||
</command>
|
</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>
|
</commands>
|
||||||
</registry>
|
</registry>
|
||||||
|
|
||||||
|
@@ -102,6 +102,7 @@ def generateHeader(functions):
|
|||||||
#include <EGL/eglext.h>
|
#include <EGL/eglext.h>
|
||||||
#include <EGL/eglmesaext.h>
|
#include <EGL/eglmesaext.h>
|
||||||
#include <EGL/eglext_angle.h>
|
#include <EGL/eglext_angle.h>
|
||||||
|
#include <GL/mesa_glinterop.h>
|
||||||
#include "glvnd/libeglabi.h"
|
#include "glvnd/libeglabi.h"
|
||||||
|
|
||||||
""".lstrip("\n"))
|
""".lstrip("\n"))
|
||||||
|
@@ -2797,8 +2797,10 @@ PUBLIC __eglMustCastToProperFunctionPointerType EGLAPIENTRY
|
|||||||
eglGetProcAddress(const char *procname)
|
eglGetProcAddress(const char *procname)
|
||||||
{
|
{
|
||||||
static const struct _egl_entrypoint egl_functions[] = {
|
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"
|
#include "eglentrypoint.h"
|
||||||
|
#undef EGL_ENTRYPOINT2
|
||||||
#undef EGL_ENTRYPOINT
|
#undef EGL_ENTRYPOINT
|
||||||
};
|
};
|
||||||
_EGLProc ret = NULL;
|
_EGLProc ret = NULL;
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
/* core functions queryable in the presence of
|
/* core functions queryable in the presence of
|
||||||
* EGL_KHR_get_all_proc_addresses or EGL 1.5
|
* EGL_KHR_get_all_proc_addresses or EGL 1.5
|
||||||
*/
|
*/
|
||||||
|
/* clang-format off */
|
||||||
/* alphabetical order */
|
/* alphabetical order */
|
||||||
EGL_ENTRYPOINT(eglBindAPI)
|
EGL_ENTRYPOINT(eglBindAPI)
|
||||||
EGL_ENTRYPOINT(eglBindTexImage)
|
EGL_ENTRYPOINT(eglBindTexImage)
|
||||||
@@ -36,6 +37,9 @@ EGL_ENTRYPOINT(eglDupNativeFenceFDANDROID)
|
|||||||
EGL_ENTRYPOINT(eglExportDMABUFImageMESA)
|
EGL_ENTRYPOINT(eglExportDMABUFImageMESA)
|
||||||
EGL_ENTRYPOINT(eglExportDMABUFImageQueryMESA)
|
EGL_ENTRYPOINT(eglExportDMABUFImageQueryMESA)
|
||||||
EGL_ENTRYPOINT(eglExportDRMImageMESA)
|
EGL_ENTRYPOINT(eglExportDRMImageMESA)
|
||||||
|
EGL_ENTRYPOINT2(eglGLInteropExportObjectMESA, MesaGLInteropEGLExportObject)
|
||||||
|
EGL_ENTRYPOINT2(eglGLInteropFlushObjectsMESA, MesaGLInteropEGLFlushObjects)
|
||||||
|
EGL_ENTRYPOINT2(eglGLInteropQueryDeviceInfoMESA, MesaGLInteropEGLQueryDeviceInfo)
|
||||||
EGL_ENTRYPOINT(eglGetConfigAttrib)
|
EGL_ENTRYPOINT(eglGetConfigAttrib)
|
||||||
EGL_ENTRYPOINT(eglGetConfigs)
|
EGL_ENTRYPOINT(eglGetConfigs)
|
||||||
EGL_ENTRYPOINT(eglGetCurrentContext)
|
EGL_ENTRYPOINT(eglGetCurrentContext)
|
||||||
|
Reference in New Issue
Block a user