2014-01-18 23:18:03 +01:00
|
|
|
#ifndef GSP_H
|
|
|
|
#define GSP_H
|
|
|
|
|
2014-03-02 16:01:57 +01:00
|
|
|
#define GSP_REBASE_REG(r) ((r)-0x1EB00000)
|
|
|
|
|
2014-04-23 02:18:21 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
u32 active_framebuf;//"0=first, 1=second"
|
|
|
|
u32 *framebuf0_vaddr;//"Framebuffer virtual address, for the main screen this is the 3D left framebuffer"
|
|
|
|
u32 *framebuf1_vaddr;//"For the main screen: 3D right framebuffer address"
|
|
|
|
u32 framebuf_widthbytesize;//"Value for 0x1EF00X90, controls framebuffer width"
|
|
|
|
u32 format;//"Framebuffer format, this u16 is written to the low u16 for LCD register 0x1EF00X70."
|
|
|
|
u32 framebuf_dispselect;//"Value for 0x1EF00X78, controls which framebuffer is displayed"
|
|
|
|
u32 unk;//"?"
|
|
|
|
} GSP_FramebufferInfo;
|
|
|
|
|
2014-05-20 21:49:03 +02:00
|
|
|
typedef struct//See this for GSP_CaptureInfoEntry and GSP_CaptureInfo: http://3dbrew.org/wiki/GSPGPU:ImportDisplayCaptureInfo
|
|
|
|
{
|
|
|
|
u32 *framebuf0_vaddr;
|
|
|
|
u32 *framebuf1_vaddr;
|
|
|
|
u32 format;
|
|
|
|
u32 framebuf_widthbytesize;
|
|
|
|
} GSP_CaptureInfoEntry;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
GSP_CaptureInfoEntry screencapture[2];
|
|
|
|
} GSP_CaptureInfo;
|
|
|
|
|
2014-03-17 18:38:20 +01:00
|
|
|
Result gspInit();
|
2014-02-03 18:06:58 +01:00
|
|
|
void gspExit();
|
2014-02-01 00:23:59 +01:00
|
|
|
|
|
|
|
Result GSPGPU_AcquireRight(Handle *handle, u8 flags);
|
|
|
|
Result GSPGPU_ReleaseRight(Handle *handle);
|
2014-05-20 21:49:03 +02:00
|
|
|
Result GSPGPU_ImportDisplayCaptureInfo(Handle* handle, GSP_CaptureInfo *captureinfo);
|
|
|
|
Result GSPGPU_SaveVramSysArea(Handle* handle);
|
|
|
|
Result GSPGPU_RestoreVramSysArea(Handle* handle);
|
2014-02-01 00:23:59 +01:00
|
|
|
Result GSPGPU_SetLcdForceBlack(Handle *handle, u8 flags);
|
2014-04-23 02:18:21 +02:00
|
|
|
Result GSPGPU_SetBufferSwap(Handle* handle, u32 screenid, GSP_FramebufferInfo *framebufinfo);
|
2014-02-01 00:23:59 +01:00
|
|
|
Result GSPGPU_FlushDataCache(Handle *handle, u8* adr, u32 size);
|
2014-05-27 20:47:53 +02:00
|
|
|
Result GSPGPU_InvalidateDataCache(Handle* handle, u8* adr, u32 size);
|
2014-03-02 16:01:57 +01:00
|
|
|
Result GSPGPU_WriteHWRegs(Handle *handle, u32 regAddr, u32* data, u8 size);
|
|
|
|
Result GSPGPU_WriteHWRegsWithMask(Handle* handle, u32 regAddr, u32* data, u8 datasize, u32* maskdata, u8 masksize);
|
|
|
|
Result GSPGPU_ReadHWRegs(Handle *handle, u32 regAddr, u32* data, u8 size);
|
2014-02-01 00:23:59 +01:00
|
|
|
Result GSPGPU_RegisterInterruptRelayQueue(Handle *handle, Handle eventHandle, u32 flags, Handle* outMemHandle, u8* threadID);
|
2014-02-03 18:06:58 +01:00
|
|
|
Result GSPGPU_UnregisterInterruptRelayQueue(Handle* handle);
|
2014-02-01 00:23:59 +01:00
|
|
|
Result GSPGPU_TriggerCmdReqQueue(Handle *handle);
|
2014-05-27 20:47:53 +02:00
|
|
|
|
2014-03-02 16:01:57 +01:00
|
|
|
Result GSPGPU_submitGxCommand(u32* sharedGspCmdBuf, u32 gxCommand[0x8], Handle* handle);
|
2014-01-18 23:18:03 +01:00
|
|
|
|
|
|
|
#endif
|