Changes

1,171 bytes added ,  00:21, 12 December 2014
no edit summary
Line 1: Line 1:  +
[[Category:GFX]]
 
(this page is hugely WIP)
 
(this page is hugely WIP)
    +
== Overview ==
 +
 +
GPU internal registers are written to through GPU commands. They are used to control the GPU's behavior, ie tell it to draw stuff and how we want it drawn.
 +
There are three main types of registers :
 +
* configuration registers, which directly map to various rendering properties (for example : [[#GPUREG_FACECULLING_CONFIG|GPUREG_FACECULLING_CONFIG]])
 +
* data transfer registers, which can be seen as FIFOs that let us send sequential chunks of data to the GPU, such as shader code or 1D samplers (for example : [[#GPUREG_GSH_CODE_DATA|GPUREG_GSH_CODE_DATA]])
 +
* action triggering registers, which tell the GPU to do something, like draw a primitive (for example : [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]])
 +
 +
== Register list ==
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
! Register ID
 
! Register ID
Line 2,240: Line 2,250:  
| 022E
 
| 022E
 
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]
 
| [[#GPUREG_DRAWARRAYS|GPUREG_DRAWARRAYS]]
| ?
+
|
 
|-
 
|-
 
| 022F
 
| 022F
 
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]
 
| [[#GPUREG_DRAWELEMENTS|GPUREG_DRAWELEMENTS]]
| ?
+
|
 
|-
 
|-
 
| 0230
 
| 0230
Line 3,078: Line 3,088:  
|  
 
|  
 
|}
 
|}
 +
 +
== GPUREG_FINALIZE ==
 +
 +
Writing to this register seems to signal the GPU to stop processing GPU commands from the current buffer; any command following a write to this register will be ignored. The value written to this register does not appear to matter, although 0x12345678 is the value typically written by commercial software.
 +
Failure to write to this register in any command buffer will result in the GPU hanging.
373

edits