glx: Export the MESA GL Interop functions through glXGetProcAddress
Signed-off-by: Sylvain Munaut <tnt@246tNt.com> Acked-by: Antonio Gomes <antoniospg100@gmail.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24573>
This commit is contained in:

committed by
Marge Bot

parent
414c4583e8
commit
1b8d81f3f8
@@ -5,6 +5,8 @@
|
||||
#include "glxglvnddispatchfuncs.h"
|
||||
#include "g_glxglvnddispatchindices.h"
|
||||
|
||||
#include "GL/mesa_glinterop.h"
|
||||
|
||||
const int DI_FUNCTION_COUNT = DI_LAST_INDEX;
|
||||
/* Allocate an extra 'dummy' to ease lookup. See FindGLXFunction() */
|
||||
int __glXDispatchTableIndices[DI_LAST_INDEX + 1];
|
||||
@@ -39,6 +41,9 @@ const char * const __glXDispatchTableStrings[DI_LAST_INDEX] = {
|
||||
// glXDestroyPixmap implemented by libglvnd
|
||||
// glXDestroyWindow implemented by libglvnd
|
||||
// glXFreeContextEXT implemented by libglvnd
|
||||
__ATTRIB(GLInteropExportObjectMESA),
|
||||
__ATTRIB(GLInteropFlushObjectsMESA),
|
||||
__ATTRIB(GLInteropQueryDeviceInfoMESA),
|
||||
// glXGetClientString implemented by libglvnd
|
||||
// glXGetConfig implemented by libglvnd
|
||||
__ATTRIB(GetContextIDEXT),
|
||||
@@ -306,6 +311,63 @@ static void dispatch_DestroyGLXPbufferSGIX(Display *dpy, GLXPbuffer pbuf)
|
||||
|
||||
|
||||
|
||||
static int dispatch_GLInteropExportObjectMESA(Display *dpy, GLXContext ctx,
|
||||
struct mesa_glinterop_export_in *in,
|
||||
struct mesa_glinterop_export_out *out)
|
||||
{
|
||||
PFNMESAGLINTEROPGLXEXPORTOBJECTPROC pGLInteropExportObjectMESA;
|
||||
__GLXvendorInfo *dd;
|
||||
|
||||
dd = GetDispatchFromContext(ctx);
|
||||
if (dd == NULL)
|
||||
return 0;
|
||||
|
||||
__FETCH_FUNCTION_PTR(GLInteropExportObjectMESA);
|
||||
if (pGLInteropExportObjectMESA == NULL)
|
||||
return 0;
|
||||
|
||||
return pGLInteropExportObjectMESA(dpy, ctx, in, out);
|
||||
}
|
||||
|
||||
|
||||
static int dispatch_GLInteropFlushObjectsMESA(Display *dpy, GLXContext ctx,
|
||||
unsigned count,
|
||||
struct mesa_glinterop_export_in *resources,
|
||||
GLsync *sync)
|
||||
{
|
||||
PFNMESAGLINTEROPGLXFLUSHOBJECTSPROC pGLInteropFlushObjectsMESA;
|
||||
__GLXvendorInfo *dd;
|
||||
|
||||
dd = GetDispatchFromContext(ctx);
|
||||
if (dd == NULL)
|
||||
return 0;
|
||||
|
||||
__FETCH_FUNCTION_PTR(GLInteropFlushObjectsMESA);
|
||||
if (pGLInteropFlushObjectsMESA == NULL)
|
||||
return 0;
|
||||
|
||||
return pGLInteropFlushObjectsMESA(dpy, ctx, count, resources, sync);
|
||||
}
|
||||
|
||||
|
||||
static int dispatch_GLInteropQueryDeviceInfoMESA(Display *dpy, GLXContext ctx,
|
||||
struct mesa_glinterop_device_info *out)
|
||||
{
|
||||
PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC pGLInteropQueryDeviceInfoMESA;
|
||||
__GLXvendorInfo *dd;
|
||||
|
||||
dd = GetDispatchFromContext(ctx);
|
||||
if (dd == NULL)
|
||||
return 0;
|
||||
|
||||
__FETCH_FUNCTION_PTR(GLInteropQueryDeviceInfoMESA);
|
||||
if (pGLInteropQueryDeviceInfoMESA == NULL)
|
||||
return 0;
|
||||
|
||||
return pGLInteropQueryDeviceInfoMESA(dpy, ctx, out);
|
||||
}
|
||||
|
||||
|
||||
static GLXContextID dispatch_GetContextIDEXT(const GLXContext ctx)
|
||||
{
|
||||
PFNGLXGETCONTEXTIDEXTPROC pGetContextIDEXT;
|
||||
@@ -981,6 +1043,9 @@ const void * const __glXDispatchFunctions[DI_LAST_INDEX + 1] = {
|
||||
__ATTRIB(CreateGLXPixmapMESA),
|
||||
__ATTRIB(CreateGLXPixmapWithConfigSGIX),
|
||||
__ATTRIB(DestroyGLXPbufferSGIX),
|
||||
__ATTRIB(GLInteropExportObjectMESA),
|
||||
__ATTRIB(GLInteropFlushObjectsMESA),
|
||||
__ATTRIB(GLInteropQueryDeviceInfoMESA),
|
||||
__ATTRIB(GetContextIDEXT),
|
||||
__ATTRIB(GetCurrentDisplayEXT),
|
||||
__ATTRIB(GetDriverConfig),
|
||||
|
@@ -31,6 +31,9 @@ typedef enum __GLXdispatchIndex {
|
||||
// DestroyPixmap implemented by libglvnd
|
||||
// DestroyWindow implemented by libglvnd
|
||||
// FreeContextEXT implemented by libglvnd
|
||||
DI_GLInteropExportObjectMESA,
|
||||
DI_GLInteropFlushObjectsMESA,
|
||||
DI_GLInteropQueryDeviceInfoMESA,
|
||||
// GetClientString implemented by libglvnd
|
||||
// GetConfig implemented by libglvnd
|
||||
DI_GetContextIDEXT,
|
||||
|
@@ -2339,6 +2339,13 @@ static const struct name_address_pair GLX_functions[] = {
|
||||
GLX_FUNCTION(glXQueryCurrentRendererIntegerMESA),
|
||||
GLX_FUNCTION(glXQueryCurrentRendererStringMESA),
|
||||
|
||||
/*** GLX_MESA_gl_interop ***/
|
||||
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
|
||||
GLX_FUNCTION2(glXGLInteropQueryDeviceInfoMESA, MesaGLInteropGLXQueryDeviceInfo),
|
||||
GLX_FUNCTION2(glXGLInteropExportObjectMESA, MesaGLInteropGLXExportObject),
|
||||
GLX_FUNCTION2(glXGLInteropFlushObjectsMESA, MesaGLInteropGLXFlushObjects),
|
||||
#endif
|
||||
|
||||
{NULL, NULL} /* end of list */
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user