/*************************************************************************/ /*!
@File
@Title         PVR synchronization interface
@Copyright     Copyright (c) Imagination Technologies Ltd. All Rights Reserved
@Description   Types for server side code
@License        MIT

The contents of this file are subject to the MIT license as set out below.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

This License is also included in this distribution in the file called
"MIT-COPYING".

EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ /**************************************************************************/
#ifndef PVRSRV_SYNC_KM_H
#define PVRSRV_SYNC_KM_H

#include <powervr/pvrsrv_sync_ext.h>

#if defined (__cplusplus)
extern "C" {
#endif

/* By default, fence-sync module emits into HWPerf (of course, if enabled) and
 * considers a process (sleepable) context */
#define PVRSRV_FENCE_FLAG_NONE             (0U)
#define PVRSRV_FENCE_FLAG_SUPPRESS_HWP_PKT (1U << 0)
#define PVRSRV_FENCE_FLAG_CTX_ATOMIC       (1U << 1)

/*! Possible states for a PVRSRV_FENCE */
typedef enum
{
    PVRSRV_FENCE_NOT_SIGNALLED,             /*!< fence has not yet signalled (not all components have signalled) */
    PVRSRV_FENCE_SIGNALLED                  /*!< fence has signalled (all components have signalled/errored) */
} PVRSRV_FENCE_STATE;

/* Typedefs for opaque pointers to implementation-specific structures
 */
typedef void *SYNC_TIMELINE_OBJ;
typedef void *SYNC_FENCE_OBJ;

#if defined (__cplusplus)
}
#endif
#endif	/* PVRSRV_SYNC_KM_H */

