GSP Shared Memory: Difference between revisions

Kynex7510 (talk | contribs)
m Typo
Kynex7510 (talk | contribs)
Elaborate on GX command 0
Line 149: Line 149:
== Commands ==
== Commands ==


Addresses specified in parameters are virtual addresses. For applications these are normally located in GSP memory, while for other processes they are located in VRAM.
Addresses specified in parameters are virtual addresses. Address and size parameters except for command 0 and command 5 must be 8-byte aligned.
 
Address and size parameters except for command 0 and command 5 must be 8-byte aligned.


=== Trigger DMA Request ===
=== Trigger DMA Request ===
Line 179: Line 177:
|}
|}


This command is normally used to DMA data from the application GSP [[Memory_layout|heap]] to VRAM. When flushing is enabled and the source buffer is not located within VRAM, svcFlushProcessDataCache is used to flush the source buffer.
This command issues a [[Corelink_DMA_Engines|DMA request]] as the calling process. When the destination address is within VRAM, GSP places itself as the destination process, this makes it possible to transfer data in VRAM without needing it listed in the destination process [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|exheader mappings]]. Otherwise, both source and destination of the DMA request are the calling process.
 
The source buffer must be mapped as readable in the source process, while the destination address must be mapped as writable in the destination process. When flushing is enabled and the source address is above VRAM, [[SVC|svcFlushProcessDataCache]] is used to flush the source buffer.


=== Trigger Command List Processing ===
=== Trigger Command List Processing ===