GPU/Internal Registers: Difference between revisions

Steveice10 (talk | contribs)
Steveice10 (talk | contribs)
Line 4,586: Line 4,586:
| Enabled (0 = disabled, 1 = enabled)
| Enabled (0 = disabled, 1 = enabled)
|}
|}
=== GPUREG_TEXUNIT3_PROCTEX0 ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-2
| U-direction clamp
|-
| 3-5
| V-direction clamp
|-
| 6-9
| RGB mapping function
|-
| 10-13
| Alpha mapping function
|-
| 14
| Handle alpha separately (0 = don't separate, 1 = separate)
|-
| 15
| Noise enabled (0 = disabled, 1 = enabled)
|-
| 16-17
| U-direction shift
|-
| 18-19
| V-direction shift
|-
| 20-27
| float16 low 8 bits, Texture bias
|}
Clamp values:
{| class="wikitable" border="1"
! Value
! Description
|-
| 0
| Clamp to zero
|-
| 1
| Clamp to edge
|-
| 2
| Symmetrical repeat
|-
| 3
| Mirrored repeat
|-
| 4
| Pulse
|}
Mapping function values:
{| class="wikitable" border="1"
! Value
! Description
|-
| 0
| U
|-
| 1
| U2
|-
| 2
| V
|-
| 3
| V2
|-
| 4
| U + V
|-
| 5
| U2 + V2
|-
| 6
| sqrt(U2 + V2)
|-
| 7
| Minimum
|-
| 8
| Maximum
|-
| 9
| Rmax
|}
Shift values:
{| class="wikitable" border="1"
! Value
! Description
|-
| 0
| None
|-
| 1
| Odd
|-
| 2
| Even
|}
=== GPUREG_TEXUNIT3_PROCTEX1 ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-15
| float16, U-direction noise phase
|-
| 16-31
| fixed16, U-direction noise amplitude
|}
=== GPUREG_TEXUNIT3_PROCTEX2 ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-15
| float16, V-direction noise phase
|-
| 16-31
| fixed16, V-direction noise amplitude
|}
=== GPUREG_TEXUNIT3_PROCTEX3 ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-15
| float16, U-direction noise frequency
|-
| 16-31
| float16, V-direction noise frequency
|}
=== GPUREG_TEXUNIT3_PROCTEX4 ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-2
| Minification filter
|-
| 3-10
| 0x60
|-
| 11-18
| Texture width
|-
| 19-26
| float16 high 8 bits, Texture bias
|}
Minification filter values:
{| class="wikitable" border="1"
! Value
! Description
|-
| 0
| Nearest
|-
| 1
| Linear
|-
| 2
| Nearest, Mipmap Nearest
|-
| 3
| Linear, Mipmap Nearest
|-
| 4
| Nearest, Mipmap Linear
|-
| 5
| Linear, Mipmap Linear
|}
=== GPUREG_TEXUNIT3_PROCTEX5 ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-7
| Texture offset
|-
| 8-31
| 0xE0C080
|}
=== GPUREG_PROCTEX_LUT ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-7
| Index
|-
| 8-11
| Reference table
|}
Reference tables:
{| class="wikitable" border="1"
! Value
! Description
|-
| 0
| Noise table
|-
| 2
| RGB mapping function table
|-
| 3
| Alpha mapping function table
|-
| 4
| Color table
|-
| 5
| Color difference table
|}
==== Noise Table ====
128 elements:
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-11
| unsigned fixed12, Value
|-
| 12-23
| signed fixed12, Difference from next element
|}
==== RGB Mapping Function Table ====
128 elements:
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-11
| unsigned fixed12, Value
|-
| 12-23
| signed fixed12, Difference from next element
|}
==== Alpha Mapping Function Table ====
128 elements:
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-11
| unsigned fixed12, Value
|-
| 12-23
| signed fixed12, Difference from next element
|}
==== Color Table ====
256 elements:
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-7
| u8, Red
|-
| 8-15
| u8, Green
|-
| 16-23
| u8, Blue
|-
| 24-31
| u8, Alpha
|}
==== Color Difference Table ====
256 elements:
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-7
| signed fixed8, Red difference between current and next color table elements
|-
| 8-15
| signed fixed8, Green difference between current and next color table elements
|-
| 16-23
| signed fixed8, Blue difference between current and next color table elements
|-
| 24-31
| signed fixed8, Alpha difference between current and next color table elements
|}
=== GPUREG_PROCTEX_LUT_DATA''i'' ===
{| class="wikitable" border="1"
! Bits
! Description
|-
| 0-31
| LUT data
|}
These registers behave as a FIFO queue. Each write to these registers writes the provided value to the table selected with GPUREG_PROCTEX_LUT, sequentially.


== Framebuffer registers ==
== Framebuffer registers ==