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