Line 1:
Line 1:
−
{{stub}}
+
{{Infobox MMIO
+
| arm = Full
+
| ppc = Full
+
| base = 0x0c200000
+
| len = 0x80000
+
| bits = 32
+
| ppcirq = 2
+
}}
+
The GX2 is the Wii U's main graphics processor, semantically a part of the [[Hardware/Latte|Latte]] despite being used directly by the [[Espresso]]. The chip is a member of the Radeon R7xx family {{ref label|ref-lt-f0f-2013|1}} (used in the Radeon HD 4330) clocked at 549.999775MHz.{{ref label|ref-clk-tweet|2}}. While documentation perfectly matching the card is yet to be found, several documents can be brought together to form a reasonable picture of the register layout.
+
+
The GX2 is only used in WiiUMode; in [[WiiMode]], the [[Hardware/GX|GX]] is used instead.
+
+
Reverse-engineering has revealed that the GX2's MMIO registers (referred to as ''GpuF0MMReg'' in AMD's docs) are at 0x0c200000; mapped at 0xfc200000 in [[Cafe OS]] userspace. The other MMIO locations (''GpuF0Pcie'', ''VGA_IO'') are not known at this point.
+
+
*[https://www.x.org/docs/AMD/old/42589_rv630_rrg_1.01o.pdf RV630 Register Reference Guide]
+
:Register guide for a similar, but not identical, card. Covers 2D graphics, CRTCs, the memory controller, etc. Does ''not'' cover 3D. This reference has been successfully used to set up a framebuffer without Cafe OS running.
+
*[https://www.x.org/docs/AMD/old/R6xx_3D_Registers.pdf Radeon R6xx/R7xx 3D Register Reference Guide]
+
:3D register guide. Applies to the whole R7xx family, so there should be no differences for the GX2.{{check}} Has not been tried on hardware at time of writing.
+
*[https://www.x.org/docs/AMD/old/R6xx_R7xx_3D.pdf Radeon R6xx/R7xx Acceleration]
+
:Conceptual document explaining how to actually use the 3D engine, shader pipelines, caches, etc. Names registers, but does not give addresses (readers should cross-reference the 3D Register Reference Guide)
+
''Not to be confused with [[gx2.rpl]], the API for interacting with the card. Also see {{hw|GX2 Registers}}.''
''Not to be confused with [[gx2.rpl]], the API for interacting with the card. Also see {{hw|GX2 Registers}}.''
−
The GX2 is the Wii U's main graphics processor, semantically a part of the Latte despite being used directly by the {{hw|Espresso}}. The chip is a member of the Radeon R7xx family{{ref label|ref-lt-f0f-2013|1}} (used in the Radeon HD 4330) clocked at 549.999775MHz.{{ref label|ref-clk-tweet|2}}
+
== Cafe OS ==
+
Cafe OS applies various APIs on top of the GX2's raw hardware registers - [[gx2.rpl]] and [[Coreinit.rpl#Screen|OSScreen]].
+
+
=== OSScreen ===
+
OSScreen is the easier of the two to reverse-engineer. It uses the registers at ''GpuF0MMReg'':0x6100 to set up one framebuffer - which matches the D1GRPH registers according to the RV630 Register Reference Guide (see chapter 2.7.1 - Primary Display Graphics Control Registers) and uses the registers at ''GpuF0MMReg'':0x6900 identically - which matches the D2GRPH registers according to the RS780 Register Reference Guide (see chapter 2.9.12 - Secondary Display Graphics Control Registers).
+
+
OSScreen uses the following D1 registers:
+
* D1CRTC_BLANK_CONTROL (sets D1CRTC_BLANK_DATA_EN)
+
* D1GRPH_ENABLE
+
* D1GRPH_CONTROL (sets D1GRPH_DEPTH to 32bpp, D1GRPH_FORMAT to ARGB 8888, and D1GRPH_ARRAY_MODE to ARRAY_LINEAR_ALIGNED)
+
* D1GRPH_PRIMARY_SURFACE_ADDRESS
+
* D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH (located at ''GpuF0MMReg'':0x6914 with its D2 counterpart at ''GpuF0MMReg'':0x6114 due to the R7xx D1 *_HIGH registers being located in the D2 block and vice versa)
+
* D1GRPH_PITCH
+
* D1OVL_PITCH (for unknown reasons, the overlay is disabled)
−
==References==
+
== References ==
*{{note label|ref-lt-f0f-2013|1}} [https://fail0verflow.com/blog/2014/console-hacking-2013-omake/#latte fail0verflow:: Console Hacking 2013: Omake - Latte]
*{{note label|ref-lt-f0f-2013|1}} [https://fail0verflow.com/blog/2014/console-hacking-2013-omake/#latte fail0verflow:: Console Hacking 2013: Omake - Latte]
*{{note label|ref-clk-tweet|2}} [https://twitter.com/marcan42/status/274120447023538176 marcan tweets Wii U clock speeds]
*{{note label|ref-clk-tweet|2}} [https://twitter.com/marcan42/status/274120447023538176 marcan tweets Wii U clock speeds]
[[Category:Hardware|{{PAGENAME}}]]
[[Category:Hardware|{{PAGENAME}}]]