2 * Copyright © 2010 NVIDIA Corporation
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
24 #ifdef HAVE_DIX_CONFIG_H
25 #include <dix-config.h>
31 typedef struct _SyncFence SyncFence
;
32 typedef struct _SyncTrigger SyncTrigger
;
34 typedef void (*SyncScreenCreateFenceFunc
) (ScreenPtr pScreen
,
36 Bool initially_triggered
);
37 typedef void (*SyncScreenDestroyFenceFunc
) (ScreenPtr pScreen
,
40 typedef struct _syncScreenFuncs
{
41 SyncScreenCreateFenceFunc CreateFence
;
42 SyncScreenDestroyFenceFunc DestroyFence
;
43 } SyncScreenFuncsRec
, *SyncScreenFuncsPtr
;
47 miSyncScreenCreateFence(ScreenPtr pScreen
, SyncFence
* pFence
,
48 Bool initially_triggered
);
50 miSyncScreenDestroyFence(ScreenPtr pScreen
, SyncFence
* pFence
);
52 typedef void (*SyncFenceSetTriggeredFunc
) (SyncFence
* pFence
);
53 typedef void (*SyncFenceResetFunc
) (SyncFence
* pFence
);
54 typedef Bool (*SyncFenceCheckTriggeredFunc
) (SyncFence
* pFence
);
55 typedef void (*SyncFenceAddTriggerFunc
) (SyncTrigger
* pTrigger
);
56 typedef void (*SyncFenceDeleteTriggerFunc
) (SyncTrigger
* pTrigger
);
58 typedef struct _syncFenceFuncs
{
59 SyncFenceSetTriggeredFunc SetTriggered
;
60 SyncFenceResetFunc Reset
;
61 SyncFenceCheckTriggeredFunc CheckTriggered
;
62 SyncFenceAddTriggerFunc AddTrigger
;
63 SyncFenceDeleteTriggerFunc DeleteTrigger
;
64 } SyncFenceFuncsRec
, *SyncFenceFuncsPtr
;
68 miSyncInitFence(ScreenPtr pScreen
, SyncFence
* pFence
,
69 Bool initially_triggered
);
71 miSyncDestroyFence(SyncFence
* pFence
);
73 miSyncTriggerFence(SyncFence
* pFence
);
75 extern _X_EXPORT SyncScreenFuncsPtr
miSyncGetScreenFuncs(ScreenPtr pScreen
);
77 miSyncSetup(ScreenPtr pScreen
);
80 miSyncFenceCheckTriggered(SyncFence
* pFence
);
83 miSyncFenceSetTriggered(SyncFence
* pFence
);
86 miSyncFenceReset(SyncFence
* pFence
);
89 miSyncFenceAddTrigger(SyncTrigger
* pTrigger
);
92 miSyncFenceDeleteTrigger(SyncTrigger
* pTrigger
);
95 miSyncInitFenceFromFD(DrawablePtr pDraw
, SyncFence
*pFence
, int fd
, BOOL initially_triggered
);
98 miSyncFDFromFence(DrawablePtr pDraw
, SyncFence
*pFence
);
100 #endif /* _MISYNC_H_ */