GPU/Internal Registers: Difference between revisions
m added links |
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. |