X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fegl%2Fmain%2Feglsync.h;h=1d2eb11a7a06891e5e00d435b327be1e49c747a0;hb=b5045e29917a783be74becee5e72566e2b0e3535;hp=25c467175e97bcd7020ec1b609648f6e78bb2e8c;hpb=6c03c576cc49bbb008de66d374f4302ff0fe0390;p=mesa.git diff --git a/src/egl/main/eglsync.h b/src/egl/main/eglsync.h index 25c467175e9..1d2eb11a7a0 100644 --- a/src/egl/main/eglsync.h +++ b/src/egl/main/eglsync.h @@ -1,14 +1,41 @@ +/************************************************************************** + * + * Copyright 2010 LunarG, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + **************************************************************************/ + + #ifndef EGLSYNC_INCLUDED #define EGLSYNC_INCLUDED +#include "c99_compat.h" + #include "egltypedefs.h" #include "egldisplay.h" -#ifdef EGL_KHR_reusable_sync - - /** * "Base" class for device driver syncs. */ @@ -20,46 +47,50 @@ struct _egl_sync EGLenum Type; EGLenum SyncStatus; EGLenum SyncCondition; + EGLAttribKHR CLEvent; }; -PUBLIC EGLBoolean +extern EGLBoolean _eglInitSync(_EGLSync *sync, _EGLDisplay *dpy, EGLenum type, - const EGLint *attrib_list); - - -extern _EGLSync * -_eglCreateSyncKHR(_EGLDriver *drv, _EGLDisplay *dpy, - EGLenum type, const EGLint *attrib_list); + const EGLint *attrib_list, const EGLAttribKHR *attrib_list64); extern EGLBoolean -_eglDestroySyncKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync); - - -extern EGLint -_eglClientWaitSyncKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, - EGLint flags, EGLTimeKHR timeout); +_eglGetSyncAttribKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, + EGLint attribute, EGLint *value); -extern EGLBoolean -_eglSignalSyncKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, - EGLenum mode); +/** + * Increment reference count for the sync. + */ +static inline _EGLSync * +_eglGetSync(_EGLSync *sync) +{ + if (sync) + _eglGetResource(&sync->Resource); + return sync; +} -extern EGLBoolean -_eglGetSyncAttribKHR(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, - EGLint attribute, EGLint *value); +/** + * Decrement reference count for the sync. + */ +static inline EGLBoolean +_eglPutSync(_EGLSync *sync) +{ + return (sync) ? _eglPutResource(&sync->Resource) : EGL_FALSE; +} /** - * Link a sync to a display and return the handle of the link. + * Link a sync to its display and return the handle of the link. * The handle can be passed to client directly. */ -static INLINE EGLSyncKHR -_eglLinkSync(_EGLSync *sync, _EGLDisplay *dpy) +static inline EGLSyncKHR +_eglLinkSync(_EGLSync *sync) { - _eglLinkResource(&sync->Resource, _EGL_RESOURCE_SYNC, dpy); + _eglLinkResource(&sync->Resource, _EGL_RESOURCE_SYNC); return (EGLSyncKHR) sync; } @@ -67,7 +98,7 @@ _eglLinkSync(_EGLSync *sync, _EGLDisplay *dpy) /** * Unlink a linked sync from its display. */ -static INLINE void +static inline void _eglUnlinkSync(_EGLSync *sync) { _eglUnlinkResource(&sync->Resource, _EGL_RESOURCE_SYNC); @@ -78,7 +109,7 @@ _eglUnlinkSync(_EGLSync *sync) * Lookup a handle to find the linked sync. * Return NULL if the handle has no corresponding linked sync. */ -static INLINE _EGLSync * +static inline _EGLSync * _eglLookupSync(EGLSyncKHR handle, _EGLDisplay *dpy) { _EGLSync *sync = (_EGLSync *) handle; @@ -91,7 +122,7 @@ _eglLookupSync(EGLSyncKHR handle, _EGLDisplay *dpy) /** * Return the handle of a linked sync, or EGL_NO_SYNC_KHR. */ -static INLINE EGLSyncKHR +static inline EGLSyncKHR _eglGetSyncHandle(_EGLSync *sync) { _EGLResource *res = (_EGLResource *) sync; @@ -100,21 +131,4 @@ _eglGetSyncHandle(_EGLSync *sync) } -/** - * Return true if the sync is linked to a display. - * - * The link is considered a reference to the sync (the display is owning the - * sync). Drivers should not destroy a sync when it is linked. - */ -static INLINE EGLBoolean -_eglIsSyncLinked(_EGLSync *sync) -{ - _EGLResource *res = (_EGLResource *) sync; - return (res && _eglIsResourceLinked(res)); -} - - -#endif /* EGL_KHR_reusable_sync */ - - #endif /* EGLSYNC_INCLUDED */