GSP Services: Difference between revisions

ElementW (talk | contribs)
m Add gsp::Gpu and gsp::Lcd anchors
Kynex7510 (talk | contribs)
mNo edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 61: Line 61:
| 0x000B0040
| 0x000B0040
|  
|  
| See below
| Usually not (see below)
| [[GSPGPU:SetLcdForceBlack|SetLcdForceBlack]]
| [[GSPGPU:SetLcdForceBlack|SetLcdForceBlack]]
|-
|-
Line 72: Line 72:
|  
|  
| No
| No
| SetDisplayTransfer (Stubbed)
| [[GSPGPU:SetDisplayTransfer|SetDisplayTransfer]]
|-
|-
| 0x000E0180
| 0x000E0180
|  
|  
| No
| No
| SetTextureCopy (Stubbed)
| [[GSPGPU:SetTextureCopy|SetTextureCopy]]
|-
|-
| 0x000F0200
| 0x000F0200
|  
|  
| No
| No
| SetMemoryFill (Stubbed)
| [[GSPGPU:SetMemoryFill|SetMemoryFill]]
|-
|-
| 0x00100040
| 0x00100040
Line 167: Line 167:
The GSP module starts a thread for handling commands for each service session, a maximum of 4 processes can use this service at once. Official applications have an optional code-path which [[GSPGPU:WriteHWRegs|writes]] to registers during initialization, this is normally not used however.
The GSP module starts a thread for handling commands for each service session, a maximum of 4 processes can use this service at once. Official applications have an optional code-path which [[GSPGPU:WriteHWRegs|writes]] to registers during initialization, this is normally not used however.


If a process has acquired rights, attempting to [[GSPGPU:SetLcdForceBlack|set LCDs to black]] from another process will fail.
If a process has forcefully acquired rights (ErrDisp), attempting [[GSPGPU:SetLcdForceBlack|unset LCDs black-fill]] from another process will fail.
Saving/restoring VRAM requires bit0 of process [[GSPGPU:RegisterInterruptRelayQueue|flags]] to be set.
Saving/restoring VRAM requires bit0 of process [[GSPGPU:RegisterInterruptRelayQueue|flags]] to be set.


Line 272: Line 272:
|-
|-
| [[8.0.0-18|v8196]]
| [[8.0.0-18|v8196]]
| Support for the new LINEAR memory region was implemented(for cache commands and vaddr->physaddr conversion). Support for the new process-mem 0x1E800000 region(however the GPU can't actually access this memory) was added for vaddr->physaddr conversion. Originally GSP module ignored vaddr->physaddr conversion errors(like with vaddrs outside of the handled ranges) and just wrote physaddr value0 to the GPU registers, however now GSP module returns an error for that instead(see [[GSP_Shared_Memory#Command_Buffer_Header|here]] regarding errors being written to GSP shared-mem). New services commands were added too, see above.
| Support for the new LINEAR memory region was implemented for cache commands and vaddr->paddr conversion. Support for the New3DS only [[Memory_layout#0x1F000000_.28New_3DS_only.29|QTM memory region]] was added for vaddr->paddr conversion. When vaddr->physaddr conversions fail while handling PSC commands, an error is now returned (see [[GSP_Shared_Memory#Command_Queue_Header|here]] regarding errors being written to GSP shared memory).
|}
|}