19ace9065Smrg/* 29ace9065Smrg * Copyright © 2010 NVIDIA Corporation 39ace9065Smrg * 49ace9065Smrg * Permission is hereby granted, free of charge, to any person obtaining a 59ace9065Smrg * copy of this software and associated documentation files (the "Software"), 69ace9065Smrg * to deal in the Software without restriction, including without limitation 79ace9065Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 89ace9065Smrg * and/or sell copies of the Software, and to permit persons to whom the 99ace9065Smrg * Software is furnished to do so, subject to the following conditions: 109ace9065Smrg * 119ace9065Smrg * The above copyright notice and this permission notice (including the next 129ace9065Smrg * paragraph) shall be included in all copies or substantial portions of the 139ace9065Smrg * Software. 149ace9065Smrg * 159ace9065Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 169ace9065Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 179ace9065Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 189ace9065Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 199ace9065Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 209ace9065Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 219ace9065Smrg * DEALINGS IN THE SOFTWARE. 229ace9065Smrg */ 239ace9065Smrg 249ace9065Smrg#ifdef HAVE_DIX_CONFIG_H 259ace9065Smrg#include <dix-config.h> 269ace9065Smrg#endif 279ace9065Smrg 289ace9065Smrg#ifndef _MISYNC_H_ 299ace9065Smrg#define _MISYNC_H_ 309ace9065Smrg 3125da500fSmrgtypedef struct _SyncObject SyncObject; 329ace9065Smrgtypedef struct _SyncFence SyncFence; 339ace9065Smrgtypedef struct _SyncTrigger SyncTrigger; 349ace9065Smrg 359ace9065Smrgtypedef void (*SyncScreenCreateFenceFunc) (ScreenPtr pScreen, 3635c4bbdfSmrg SyncFence * pFence, 3735c4bbdfSmrg Bool initially_triggered); 389ace9065Smrgtypedef void (*SyncScreenDestroyFenceFunc) (ScreenPtr pScreen, 3935c4bbdfSmrg SyncFence * pFence); 409ace9065Smrg 419ace9065Smrgtypedef struct _syncScreenFuncs { 4235c4bbdfSmrg SyncScreenCreateFenceFunc CreateFence; 4335c4bbdfSmrg SyncScreenDestroyFenceFunc DestroyFence; 449ace9065Smrg} SyncScreenFuncsRec, *SyncScreenFuncsPtr; 459ace9065Smrg 4635c4bbdfSmrg 479ace9065Smrgextern _X_EXPORT void 4835c4bbdfSmrgmiSyncScreenCreateFence(ScreenPtr pScreen, SyncFence * pFence, 4935c4bbdfSmrg Bool initially_triggered); 509ace9065Smrgextern _X_EXPORT void 5135c4bbdfSmrg miSyncScreenDestroyFence(ScreenPtr pScreen, SyncFence * pFence); 529ace9065Smrg 5335c4bbdfSmrgtypedef void (*SyncFenceSetTriggeredFunc) (SyncFence * pFence); 5435c4bbdfSmrgtypedef void (*SyncFenceResetFunc) (SyncFence * pFence); 5535c4bbdfSmrgtypedef Bool (*SyncFenceCheckTriggeredFunc) (SyncFence * pFence); 5635c4bbdfSmrgtypedef void (*SyncFenceAddTriggerFunc) (SyncTrigger * pTrigger); 5735c4bbdfSmrgtypedef void (*SyncFenceDeleteTriggerFunc) (SyncTrigger * pTrigger); 589ace9065Smrg 599ace9065Smrgtypedef struct _syncFenceFuncs { 6035c4bbdfSmrg SyncFenceSetTriggeredFunc SetTriggered; 6135c4bbdfSmrg SyncFenceResetFunc Reset; 6235c4bbdfSmrg SyncFenceCheckTriggeredFunc CheckTriggered; 6335c4bbdfSmrg SyncFenceAddTriggerFunc AddTrigger; 6435c4bbdfSmrg SyncFenceDeleteTriggerFunc DeleteTrigger; 659ace9065Smrg} SyncFenceFuncsRec, *SyncFenceFuncsPtr; 669ace9065Smrg 679ace9065Smrgextern _X_EXPORT void 6835c4bbdfSmrg 6935c4bbdfSmrgmiSyncInitFence(ScreenPtr pScreen, SyncFence * pFence, 7035c4bbdfSmrg Bool initially_triggered); 719ace9065Smrgextern _X_EXPORT void 7235c4bbdfSmrg miSyncDestroyFence(SyncFence * pFence); 739ace9065Smrgextern _X_EXPORT void 7435c4bbdfSmrg miSyncTriggerFence(SyncFence * pFence); 759ace9065Smrg 7635c4bbdfSmrgextern _X_EXPORT SyncScreenFuncsPtr miSyncGetScreenFuncs(ScreenPtr pScreen); 779ace9065Smrgextern _X_EXPORT Bool 7835c4bbdfSmrg miSyncSetup(ScreenPtr pScreen); 7935c4bbdfSmrg 8035c4bbdfSmrgBool 8135c4bbdfSmrgmiSyncFenceCheckTriggered(SyncFence * pFence); 8235c4bbdfSmrg 8335c4bbdfSmrgvoid 8435c4bbdfSmrgmiSyncFenceSetTriggered(SyncFence * pFence); 8535c4bbdfSmrg 8635c4bbdfSmrgvoid 8735c4bbdfSmrgmiSyncFenceReset(SyncFence * pFence); 8835c4bbdfSmrg 8935c4bbdfSmrgvoid 9035c4bbdfSmrgmiSyncFenceAddTrigger(SyncTrigger * pTrigger); 9135c4bbdfSmrg 9235c4bbdfSmrgvoid 9335c4bbdfSmrgmiSyncFenceDeleteTrigger(SyncTrigger * pTrigger); 9435c4bbdfSmrg 9535c4bbdfSmrgint 9635c4bbdfSmrgmiSyncInitFenceFromFD(DrawablePtr pDraw, SyncFence *pFence, int fd, BOOL initially_triggered); 9735c4bbdfSmrg 9835c4bbdfSmrgint 9935c4bbdfSmrgmiSyncFDFromFence(DrawablePtr pDraw, SyncFence *pFence); 1009ace9065Smrg 10135c4bbdfSmrg#endif /* _MISYNC_H_ */ 102