summaryrefslogtreecommitdiff
path: root/include/user/gxm/init.h
blob: 961b7c2c9c968fb975edf38e2b204eec3c11e431 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
	Vita Development Suite Libraries
*/

#ifndef _VDSUITE_USER_GXM_INIT_H
#define _VDSUITE_USER_GXM_INIT_H

/** @file
*/

#include_next <gxm/init.h>

#ifdef	__cplusplus
extern "C" {
#endif	// def __cplusplus

/** Flags for libgxm initialization.

	@ingroup render
*/
typedef enum SceGxmInitializeFlagsInternal
{
	SCE_GXM_INITIALIZE_FLAG_PB_USE_USER_MEMORY			=	0x00000001U,	///< Use uncached main memory for the parameter buffer.
	SCE_GXM_INITIALIZE_FLAG_PBDESCFLAGS_ZLS_OVERRIDE	=	0x00000002U,
	SCE_GXM_INITIALIZE_FLAG_PBDESCFLAGS_SHARED			=	0x00000004U,	///< The parameter buffer can be shared between rendering contexts.
	SCE_GXM_INITIALIZE_FLAG_DRIVER_MEM_SHARE			=	0x00000008U		///< Use shared driver memory for the parameter buffer.
} SceGxmInitializeFlagsInternal;

/** Initializes the libgxm library for shared sync objects.

	Internally this function will prepare this process for rendering, creating
	the parameter buffer with the given size.

	This function must be called before any other libgxm object is created, such
	as a context, or sync object.

	@param[in]	params					A pointer to a populated SceGxmInitializeParams structure.

	@retval
	SCE_OK	The operation completed successfully.
	@retval
	SCE_GXM_ERROR_INVALID_POINTER		The SceGxmInitializeParams pointer was <c>NULL</c>.
	@retval
	SCE_GXM_ERROR_INVALID_VALUE			One or more parameters were invalid.
	@retval
	SCE_GXM_ERROR_ALREADY_INITIALIZED	The operation failed because libgxm is already initialized.
	@retval
	SCE_GXM_ERROR_OUT_OF_MEMORY			There was no memory to perform the operation.
	@retval
	SCE_GXM_ERROR_DRIVER				The operation failed due to a driver error.

	@ingroup render
*/
SceGxmErrorCode sceGxmInitializeInternal(const SceGxmInitializeParams *params);

/** Checks if the libgxm library was initialized for shared sync objects.

	@return
	Returns <c>true</c> if the libgxm library was initialized for shared sync objects; otherwise <c>false</c> is returned.

	@ingroup render
*/
bool sceGxmIsInitializedInternal(void);

/** Gets PowerVR service device data.

	@return
	Pointer to device data.

	@ingroup render
*/
void *sceGxmGetDeviceData(void);

#ifdef	__cplusplus
}
#endif	// def __cplusplus

#endif /* _VDSUITE_USER_GXM_INIT_H */