misync.h revision 35c4bbdf
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 319ace9065Smrgtypedef struct _SyncFence SyncFence; 329ace9065Smrgtypedef struct _SyncTrigger SyncTrigger; 339ace9065Smrg 349ace9065Smrgtypedef void (*SyncScreenCreateFenceFunc) (ScreenPtr pScreen, 3535c4bbdfSmrg SyncFence * pFence, 3635c4bbdfSmrg Bool initially_triggered); 379ace9065Smrgtypedef void (*SyncScreenDestroyFenceFunc) (ScreenPtr pScreen, 3835c4bbdfSmrg SyncFence * pFence); 399ace9065Smrg 409ace9065Smrgtypedef struct _syncScreenFuncs { 4135c4bbdfSmrg SyncScreenCreateFenceFunc CreateFence; 4235c4bbdfSmrg SyncScreenDestroyFenceFunc DestroyFence; 439ace9065Smrg} SyncScreenFuncsRec, *SyncScreenFuncsPtr; 449ace9065Smrg 4535c4bbdfSmrg 469ace9065Smrgextern _X_EXPORT void 4735c4bbdfSmrgmiSyncScreenCreateFence(ScreenPtr pScreen, SyncFence * pFence, 4835c4bbdfSmrg Bool initially_triggered); 499ace9065Smrgextern _X_EXPORT void 5035c4bbdfSmrg miSyncScreenDestroyFence(ScreenPtr pScreen, SyncFence * pFence); 519ace9065Smrg 5235c4bbdfSmrgtypedef void (*SyncFenceSetTriggeredFunc) (SyncFence * pFence); 5335c4bbdfSmrgtypedef void (*SyncFenceResetFunc) (SyncFence * pFence); 5435c4bbdfSmrgtypedef Bool (*SyncFenceCheckTriggeredFunc) (SyncFence * pFence); 5535c4bbdfSmrgtypedef void (*SyncFenceAddTriggerFunc) (SyncTrigger * pTrigger); 5635c4bbdfSmrgtypedef void (*SyncFenceDeleteTriggerFunc) (SyncTrigger * pTrigger); 579ace9065Smrg 589ace9065Smrgtypedef struct _syncFenceFuncs { 5935c4bbdfSmrg SyncFenceSetTriggeredFunc SetTriggered; 6035c4bbdfSmrg SyncFenceResetFunc Reset; 6135c4bbdfSmrg SyncFenceCheckTriggeredFunc CheckTriggered; 6235c4bbdfSmrg SyncFenceAddTriggerFunc AddTrigger; 6335c4bbdfSmrg SyncFenceDeleteTriggerFunc DeleteTrigger; 649ace9065Smrg} SyncFenceFuncsRec, *SyncFenceFuncsPtr; 659ace9065Smrg 669ace9065Smrgextern _X_EXPORT void 6735c4bbdfSmrg 6835c4bbdfSmrgmiSyncInitFence(ScreenPtr pScreen, SyncFence * pFence, 6935c4bbdfSmrg Bool initially_triggered); 709ace9065Smrgextern _X_EXPORT void 7135c4bbdfSmrg miSyncDestroyFence(SyncFence * pFence); 729ace9065Smrgextern _X_EXPORT void 7335c4bbdfSmrg miSyncTriggerFence(SyncFence * pFence); 749ace9065Smrg 7535c4bbdfSmrgextern _X_EXPORT SyncScreenFuncsPtr miSyncGetScreenFuncs(ScreenPtr pScreen); 769ace9065Smrgextern _X_EXPORT Bool 7735c4bbdfSmrg miSyncSetup(ScreenPtr pScreen); 7835c4bbdfSmrg 7935c4bbdfSmrgBool 8035c4bbdfSmrgmiSyncFenceCheckTriggered(SyncFence * pFence); 8135c4bbdfSmrg 8235c4bbdfSmrgvoid 8335c4bbdfSmrgmiSyncFenceSetTriggered(SyncFence * pFence); 8435c4bbdfSmrg 8535c4bbdfSmrgvoid 8635c4bbdfSmrgmiSyncFenceReset(SyncFence * pFence); 8735c4bbdfSmrg 8835c4bbdfSmrgvoid 8935c4bbdfSmrgmiSyncFenceAddTrigger(SyncTrigger * pTrigger); 9035c4bbdfSmrg 9135c4bbdfSmrgvoid 9235c4bbdfSmrgmiSyncFenceDeleteTrigger(SyncTrigger * pTrigger); 9335c4bbdfSmrg 9435c4bbdfSmrgint 9535c4bbdfSmrgmiSyncInitFenceFromFD(DrawablePtr pDraw, SyncFence *pFence, int fd, BOOL initially_triggered); 9635c4bbdfSmrg 9735c4bbdfSmrgint 9835c4bbdfSmrgmiSyncFDFromFence(DrawablePtr pDraw, SyncFence *pFence); 999ace9065Smrg 10035c4bbdfSmrg#endif /* _MISYNC_H_ */ 101