summaryrefslogtreecommitdiff
path: root/include/kernel/display.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--include/kernel/display.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/include/kernel/display.h b/include/kernel/display.h
new file mode 100644
index 0000000..0f49bee
--- /dev/null
+++ b/include/kernel/display.h
@@ -0,0 +1,87 @@
+#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);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PSP2_KERNEL_DISPLAY_H_ */
+