diff options
-rw-r--r-- | include/GL/internal/dri_interface.h | 2 | ||||
-rw-r--r-- | include/GL/mesa_glinterop.h | 23 | ||||
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.c | 2 | ||||
-rw-r--r-- | src/egl/main/eglapi.c | 2 | ||||
-rw-r--r-- | src/egl/main/eglapi.h | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/dri2.c | 9 | ||||
-rw-r--r-- | src/glx/dri2_priv.h | 2 | ||||
-rw-r--r-- | src/glx/dri3_priv.h | 2 | ||||
-rw-r--r-- | src/glx/dri_common_interop.c | 4 | ||||
-rw-r--r-- | src/glx/glxclient.h | 2 | ||||
-rw-r--r-- | src/glx/glxcmds.c | 2 |
11 files changed, 37 insertions, 15 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index 4008658..f80233b 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -414,7 +414,7 @@ struct __DRI2interopExtensionRec { /** Same as MesaGLInterop*ExportObject. */ int (*export_object)(__DRIcontext *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); }; diff --git a/include/GL/mesa_glinterop.h b/include/GL/mesa_glinterop.h index 0a22b9b..b805d63 100644 --- a/include/GL/mesa_glinterop.h +++ b/include/GL/mesa_glinterop.h @@ -94,6 +94,11 @@ enum { */ typedef struct _mesa_glinterop_device_info { /* The caller should set this to the version of the struct they support */ + /* The callee will overwrite it if it supports a lower version. + * + * The caller should check the value and access up-to the version supported + * by the the callee. + */ /* NOTE: Do not use the MESA_GLINTEROP_DEVICE_INFO_VERSION macro */ uint32_t version; @@ -117,6 +122,11 @@ typedef struct _mesa_glinterop_device_info { */ typedef struct _mesa_glinterop_export_in { /* The caller should set this to the version of the struct they support */ + /* The callee will overwrite it if it supports a lower version. + * + * The caller should check the value and access up-to the version supported + * by the the callee. + */ /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_IN_VERSION macro */ uint32_t version; @@ -177,6 +187,11 @@ typedef struct _mesa_glinterop_export_in { */ typedef struct _mesa_glinterop_export_out { /* The caller should set this to the version of the struct they support */ + /* The callee will overwrite it if it supports a lower version. + * + * The caller should check the value and access up-to the version supported + * by the the callee. + */ /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_OUT_VERSION macro */ uint32_t version; @@ -257,7 +272,7 @@ MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context, */ int MesaGLInteropGLXExportObject(Display *dpy, GLXContext context, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); @@ -267,7 +282,7 @@ MesaGLInteropGLXExportObject(Display *dpy, GLXContext context, */ int MesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); @@ -276,10 +291,10 @@ typedef int (PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(Display *dpy, GLXContext co typedef int (PFNMESAGLINTEROPEGLQUERYDEVICEINFOPROC)(EGLDisplay dpy, EGLContext context, mesa_glinterop_device_info *out); typedef int (PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(Display *dpy, GLXContext context, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); typedef int (PFNMESAGLINTEROPEGLEXPORTOBJECTPROC)(EGLDisplay dpy, EGLContext context, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); #ifdef __cplusplus diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 6dcfd49..f954cd5 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -2703,7 +2703,7 @@ dri2_interop_query_device_info(_EGLDisplay *dpy, _EGLContext *ctx, static int dri2_interop_export_object(_EGLDisplay *dpy, _EGLContext *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(dpy); diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index c8d7c23..098bed0 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1961,7 +1961,7 @@ MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context, int MesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out) { _EGLDisplay *disp; diff --git a/src/egl/main/eglapi.h b/src/egl/main/eglapi.h index 58327fd..4df17c0 100644 --- a/src/egl/main/eglapi.h +++ b/src/egl/main/eglapi.h @@ -195,7 +195,7 @@ struct _egl_api int (*GLInteropQueryDeviceInfo)(_EGLDisplay *dpy, _EGLContext *ctx, mesa_glinterop_device_info *out); int (*GLInteropExportObject)(_EGLDisplay *dpy, _EGLContext *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); }; diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index 3a2a3ce..0c84baf 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -1480,12 +1480,15 @@ dri2_interop_query_device_info(__DRIcontext *_ctx, out->vendor_id = screen->get_param(screen, PIPE_CAP_VENDOR_ID); out->device_id = screen->get_param(screen, PIPE_CAP_DEVICE_ID); + /* Instruct the caller that we support up-to version one of the interface */ + out->version = 1; + return MESA_GLINTEROP_SUCCESS; } static int dri2_interop_export_object(__DRIcontext *_ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out) { struct st_context_iface *st = dri_context(_ctx)->st; @@ -1704,6 +1707,10 @@ dri2_interop_export_object(__DRIcontext *_ctx, if (res->target == PIPE_BUFFER) out->buf_offset += whandle.offset; + /* Instruct the caller that we support up-to version one of the interface */ + in->version = 1; + out->version = 1; + return MESA_GLINTEROP_SUCCESS; } diff --git a/src/glx/dri2_priv.h b/src/glx/dri2_priv.h index 8a64072..edba31e 100644 --- a/src/glx/dri2_priv.h +++ b/src/glx/dri2_priv.h @@ -76,7 +76,7 @@ dri2_interop_query_device_info(struct glx_context *ctx, _X_HIDDEN int dri2_interop_export_object(struct glx_context *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); #ifdef __cplusplus diff --git a/src/glx/dri3_priv.h b/src/glx/dri3_priv.h index d4ecdf7..86ad17c 100644 --- a/src/glx/dri3_priv.h +++ b/src/glx/dri3_priv.h @@ -139,5 +139,5 @@ dri3_interop_query_device_info(struct glx_context *ctx, _X_HIDDEN int dri3_interop_export_object(struct glx_context *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); diff --git a/src/glx/dri_common_interop.c b/src/glx/dri_common_interop.c index 4733f3c..215aac4 100644 --- a/src/glx/dri_common_interop.c +++ b/src/glx/dri_common_interop.c @@ -47,7 +47,7 @@ dri2_interop_query_device_info(struct glx_context *ctx, _X_HIDDEN int dri2_interop_export_object(struct glx_context *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out) { struct dri2_screen *psc = (struct dri2_screen*)ctx->psc; @@ -76,7 +76,7 @@ dri3_interop_query_device_info(struct glx_context *ctx, _X_HIDDEN int dri3_interop_export_object(struct glx_context *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out) { struct dri3_screen *psc = (struct dri3_screen*)ctx->psc; diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h index 141e46a..16acd4b 100644 --- a/src/glx/glxclient.h +++ b/src/glx/glxclient.h @@ -234,7 +234,7 @@ struct glx_context_vtable { int (*interop_query_device_info)(struct glx_context *ctx, mesa_glinterop_device_info *out); int (*interop_export_object)(struct glx_context *ctx, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out); }; diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index b651953..589a87a 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -2721,7 +2721,7 @@ MesaGLInteropGLXQueryDeviceInfo(Display *dpy, GLXContext context, int MesaGLInteropGLXExportObject(Display *dpy, GLXContext context, - const mesa_glinterop_export_in *in, + mesa_glinterop_export_in *in, mesa_glinterop_export_out *out) { struct glx_context *gc = (struct glx_context*)context; |