My Project
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules
gsp.h
Go to the documentation of this file.
1 #pragma once
2 
3 #define GSP_REBASE_REG(r) ((r)-0x1EB00000)
4 
5 typedef struct
6 {
7  u32 active_framebuf;//"0=first, 1=second"
8  u32 *framebuf0_vaddr;//"Framebuffer virtual address, for the main screen this is the 3D left framebuffer"
9  u32 *framebuf1_vaddr;//"For the main screen: 3D right framebuffer address"
10  u32 framebuf_widthbytesize;//"Value for 0x1EF00X90, controls framebuffer width"
11  u32 format;//"Framebuffer format, this u16 is written to the low u16 for LCD register 0x1EF00X70."
12  u32 framebuf_dispselect;//"Value for 0x1EF00X78, controls which framebuffer is displayed"
13  u32 unk;//"?"
15 
16 typedef enum
17 {
24 
25 typedef struct//See this for GSP_CaptureInfoEntry and GSP_CaptureInfo: http://3dbrew.org/wiki/GSPGPU:ImportDisplayCaptureInfo
26 {
27  u32 *framebuf0_vaddr;
32 
33 typedef struct
34 {
35  GSP_CaptureInfoEntry screencapture[2];
37 
38 typedef enum
39 {
40  GSPEVENT_PSC0 = 0, // memory fill completed
44  GSPEVENT_PPF, // display transfer finished
45  GSPEVENT_P3D, // command list processing finished
47 
48  GSPEVENT_MAX, // used to know how many events there are
49 } GSP_Event;
50 
51 Result gspInit();
52 void gspExit();
53 
54 Result gspInitEventHandler(Handle gspEvent, vu8* gspSharedMem, u8 gspThreadId);
55 void gspExitEventHandler();
56 void gspWaitForEvent(GSP_Event id, bool nextEvent);
57 #define gspWaitForPSC0() gspWaitForEvent(GSPEVENT_PSC0, false)
58 #define gspWaitForPSC1() gspWaitForEvent(GSPEVENT_PSC1, false)
59 #define gspWaitForVBlank() gspWaitForVBlank0()
60 #define gspWaitForVBlank0() gspWaitForEvent(GSPEVENT_VBlank0, true)
61 #define gspWaitForVBlank1() gspWaitForEvent(GSPEVENT_VBlank1, true)
62 #define gspWaitForPPF() gspWaitForEvent(GSPEVENT_PPF, false)
63 #define gspWaitForP3D() gspWaitForEvent(GSPEVENT_P3D, false)
64 #define gspWaitForDMA() gspWaitForEvent(GSPEVENT_DMA, false)
65 
66 Result GSPGPU_AcquireRight(Handle *handle, u8 flags);
71 Result GSPGPU_SetLcdForceBlack(Handle *handle, u8 flags);
72 Result GSPGPU_SetBufferSwap(Handle* handle, u32 screenid, GSP_FramebufferInfo *framebufinfo);
73 Result GSPGPU_FlushDataCache(Handle *handle, u8* adr, u32 size);
74 Result GSPGPU_InvalidateDataCache(Handle* handle, u8* adr, u32 size);
75 Result GSPGPU_WriteHWRegs(Handle *handle, u32 regAddr, u32* data, u8 size);
76 Result GSPGPU_WriteHWRegsWithMask(Handle* handle, u32 regAddr, u32* data, u8 datasize, u32* maskdata, u8 masksize);
77 Result GSPGPU_ReadHWRegs(Handle *handle, u32 regAddr, u32* data, u8 size);
78 Result GSPGPU_RegisterInterruptRelayQueue(Handle *handle, Handle eventHandle, u32 flags, Handle* outMemHandle, u8* threadID);
81 Result GSPGPU_SubmitGxCommand(u32* sharedGspCmdBuf, u32 gxCommand[0x8], Handle* handle);
u32 framebuf_widthbytesize
Definition: gsp.h:30
Result GSPGPU_TriggerCmdReqQueue(Handle *handle)
Definition: gsp.c:233
Result GSPGPU_WriteHWRegsWithMask(Handle *handle, u32 regAddr, u32 *data, u8 datasize, u32 *maskdata, u8 masksize)
Definition: gsp.c:128
s32 Result
Definition: types.h:42
void gspExit()
Definition: gsp.c:28
Result gspInit()
Definition: gsp.c:23
Result GSPGPU_SaveVramSysArea(Handle *handle)
Definition: gsp.c:327
u32 framebuf_widthbytesize
Definition: gsp.h:10
Result GSPGPU_AcquireRight(Handle *handle, u8 flags)
Definition: gsp.c:278
Result gspInitEventHandler(Handle gspEvent, vu8 *gspSharedMem, u8 gspThreadId)
Definition: gsp.c:33
u32 Handle
Definition: types.h:41
volatile u8 vu8
Definition: types.h:31
Handle gspEvent
Definition: gfx.c:18
GSP_Event
Definition: gsp.h:38
u32 framebuf_dispselect
Definition: gsp.h:12
GSP_CaptureInfoEntry
Definition: gsp.h:31
uint8_t u8
Definition: types.h:21
u32 format
Definition: gsp.h:29
Result GSPGPU_InvalidateDataCache(Handle *handle, u8 *adr, u32 size)
Definition: gsp.c:201
Result GSPGPU_UnregisterInterruptRelayQueue(Handle *handle)
Definition: gsp.c:265
GSP_FramebufferFormats
Definition: gsp.h:16
u32 * framebuf1_vaddr
Definition: gsp.h:28
uint32_t u32
Definition: types.h:23
Result GSPGPU_RestoreVramSysArea(Handle *handle)
Definition: gsp.c:340
Result GSPGPU_ReleaseRight(Handle *handle)
Definition: gsp.c:294
Result GSPGPU_FlushDataCache(Handle *handle, u8 *adr, u32 size)
Definition: gsp.c:184
Result GSPGPU_SubmitGxCommand(u32 *sharedGspCmdBuf, u32 gxCommand[0x8], Handle *handle)
Definition: gsp.c:356
Result GSPGPU_WriteHWRegs(Handle *handle, u32 regAddr, u32 *data, u8 size)
Definition: gsp.c:109
u32 * framebuf1_vaddr
Definition: gsp.h:9
Result GSPGPU_RegisterInterruptRelayQueue(Handle *handle, Handle eventHandle, u32 flags, Handle *outMemHandle, u8 *threadID)
Definition: gsp.c:246
void gspExitEventHandler()
Definition: gsp.c:57
Result GSPGPU_ImportDisplayCaptureInfo(Handle *handle, GSP_CaptureInfo *captureinfo)
Definition: gsp.c:307
Result GSPGPU_ReadHWRegs(Handle *handle, u32 regAddr, u32 *data, u8 size)
Definition: gsp.c:149
void gspWaitForEvent(GSP_Event id, bool nextEvent)
Definition: gsp.c:70
u32 active_framebuf
Definition: gsp.h:7
Result GSPGPU_SetLcdForceBlack(Handle *handle, u8 flags)
Definition: gsp.c:219
Result GSPGPU_SetBufferSwap(Handle *handle, u32 screenid, GSP_FramebufferInfo *framebufinfo)
Definition: gsp.c:168
u32 * framebuf0_vaddr
Definition: gsp.h:8