blob: 05e4ca76978c9a48b086f129d6f5acb761058721 [file] [log] [blame]
#ifndef _SYNC_FALLBACK_SERVER_H_
#define _SYNC_FALLBACK_SERVER_H_
#include "img_types.h"
#include "sync_checkpoint.h"
#include "device.h"
typedef struct _PVRSRV_TIMELINE_SERVER_ PVRSRV_TIMELINE_SERVER;
typedef struct _PVRSRV_FENCE_SERVER_ PVRSRV_FENCE_SERVER;
typedef struct _PVRSRV_SYNC_PT_ PVRSRV_SYNC_PT;
#define SYNC_FB_TIMELINE_MAX_LENGTH PVRSRV_SYNC_NAME_LENGTH
#define SYNC_FB_FENCE_MAX_LENGTH PVRSRV_SYNC_NAME_LENGTH
/*****************************************************************************/
/* */
/* SW SPECIFIC FUNCTIONS */
/* */
/*****************************************************************************/
PVRSRV_ERROR SyncFbTimelineCreateSW(IMG_UINT32 uiTimelineNameSize,
const IMG_CHAR *pszTimelineName,
PVRSRV_TIMELINE_SERVER **ppsTimeline);
/*****************************************************************************/
/* */
/* PVR SPECIFIC FUNCTIONS */
/* */
/*****************************************************************************/
PVRSRV_ERROR SyncFbTimelineCreatePVR(IMG_UINT32 uiTimelineNameSize,
const IMG_CHAR *pszTimelineName,
PVRSRV_TIMELINE_SERVER **ppsTimeline);
PVRSRV_ERROR SyncFbFenceCreatePVR(const IMG_CHAR *pszName,
PVRSRV_TIMELINE iTl,
PSYNC_CHECKPOINT_CONTEXT hSyncCheckpointContext,
PVRSRV_FENCE *piOutFence,
IMG_UINT32 *puiFenceUID,
void **ppvFenceFinaliseData,
PSYNC_CHECKPOINT *ppsOutCheckpoint,
void **ppvTimelineUpdateSync,
IMG_UINT32 *puiTimelineUpdateValue);
PVRSRV_ERROR SyncFbFenceResolvePVR(PSYNC_CHECKPOINT_CONTEXT psContext,
PVRSRV_FENCE iFence,
IMG_UINT32 *puiNumCheckpoints,
PSYNC_CHECKPOINT **papsCheckpoints,
IMG_UINT32 *puiFenceUID);
/*****************************************************************************/
/* */
/* GENERIC FUNCTIONS */
/* */
/*****************************************************************************/
PVRSRV_ERROR SyncFbTimelineRelease(PVRSRV_TIMELINE_SERVER *psTl);
PVRSRV_ERROR SyncFbFenceRelease(PVRSRV_FENCE_SERVER *psFence);
PVRSRV_ERROR SyncFbFenceDup(PVRSRV_FENCE_SERVER *psInFence,
PVRSRV_FENCE_SERVER **ppsOutFence);
PVRSRV_ERROR SyncFbFenceMerge(PVRSRV_FENCE_SERVER *psInFence1,
PVRSRV_FENCE_SERVER *psInFence2,
IMG_UINT32 uiFenceNameSize,
const IMG_CHAR *pszFenceName,
PVRSRV_FENCE_SERVER **ppsOutFence);
PVRSRV_ERROR SyncFbFenceWait(PVRSRV_FENCE_SERVER *psFence,
IMG_UINT32 uiTimeout);
PVRSRV_ERROR SyncFbFenceDump(PVRSRV_FENCE_SERVER *psFence,
IMG_UINT32 uiLine,
IMG_UINT32 uiFileNameLenght,
const IMG_CHAR *pszFile);
PVRSRV_ERROR SyncFbRegisterDevice(PVRSRV_DEVICE_NODE *psDeviceNode);
PVRSRV_ERROR SyncFbDeregisterDevice(PVRSRV_DEVICE_NODE *psDeviceNode);
#endif /* _SYNC_FALLBACK_SERVER_H_ */