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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#ifndef _PSP2_KERNEL_DISPLAY_H_
#define _PSP2_KERNEL_DISPLAY_H_
#include <psp2/types.h>
#ifdef __cplusplus
extern "C" {
#endif
enum {
SCE_DISPLAY_ERROR_OK = 0,
SCE_DISPLAY_ERROR_INVALID_HEAD = 0x80290000,
SCE_DISPLAY_ERROR_INVALID_VALUE = 0x80290001,
SCE_DISPLAY_ERROR_INVALID_ADDR = 0x80290002,
SCE_DISPLAY_ERROR_INVALID_PIXELFORMAT = 0x80290003,
SCE_DISPLAY_ERROR_INVALID_PITCH = 0x80290004,
SCE_DISPLAY_ERROR_INVALID_RESOLUTION = 0x80290005,
SCE_DISPLAY_ERROR_INVALID_UPDATETIMING = 0x80290006,
SCE_DISPLAY_ERROR_NO_FRAME_BUFFER = 0x80290007,
SCE_DISPLAY_ERROR_NO_PIXEL_DATA = 0x80290008
};
#define SCE_DISPLAY_PIXELFORMAT_A8B8G8R8 0x00000000U
enum {
/** Buffer change effective immediately */
SCE_DISPLAY_SETBUF_IMMEDIATE = 0,
/** Buffer change effective next frame */
SCE_DISPLAY_SETBUF_NEXTFRAME = 1
};
/**
* Structure used with sceDisplaySetFrameBuf to set/update framebuffer.
* Original screen resolution is 960x544, but the following resolutions
* can also be supplied as width and height :
* 480x272, 640x368, 720x408
*
* @note - This structure is returned by sceDisplayGetFrameBuf
*/
typedef struct SceDisplayFrameBuf {
SceSize size; //!< sizeof(SceDisplayFrameBuf)
void *base; //!< Pointer to framebuffer
unsigned int pitch; //!< pitch pixels
unsigned int pixelformat; //!< use SCE_DISPLAY_PIXELFORMAT_A8B8G8R8
unsigned int width; //!< framebuffer width
unsigned int height; //!< framebuffer height
} SceDisplayFrameBuf;
/**
* Set/Update framebuffer parameters
*
* @param[in] pParam - Pointer to a ::SceDisplayFrameBuf structure.
* @param[in] sync - One of ::DisplaySetBufSync
*
* @return 0 on success, < 0 on error.
* @note - If NULL is provided as pParam pointer, output is blacked out.
*/
int sceDisplaySetFrameBuf(const SceDisplayFrameBuf *pParam, int sync);
/**
* Get current framebuffer parameters
*
* @param[out] pParam - Pointer to a ::SceDisplayFrameBuf structure
* which will receive framebuffer parameters.
*
* @param[in] sync - One of ::DisplaySetBufSync
*
* @return 0 on success, < 0 on error.
*/
int sceDisplayGetFrameBuf(SceDisplayFrameBuf *pParam, int sync);
/**
* Get current framebuffer dimensions
*
* @param[out] width - Framebuffer width
* @param[out] height - Framebuffer height
*
* @return 0 on success, < 0 on error.
*/
int sceDisplayGetFrameBufDimensions(int *width, int *height);
/**
* Wait for vertical blank start
*/
int sceDisplayWaitVblankStart(void);
/**
* Wait for vertical blank start after specified number of vertical periods
*
* @param[in] vcount - Number of vertical periods before waiting for vertical blank start
*/
int sceDisplayWaitVblankStartMulti(unsigned int vcount);
#ifdef __cplusplus
}
#endif
#endif /* _PSP2_KERNEL_DISPLAY_H_ */
|