Changes

3,659 bytes removed ,  05:34, 5 December 2015
m
Replaced content with "This page is obsolete, see here for GPU register information, including that of textures."
Line 1: Line 1: −
This page describes the [[GPU_Commands|GPU commands]] used for textures.
+
This page is obsolete, see [[GPU/Internal_Registers|here]] for GPU register information, including that of textures.
 
  −
== General information ==
  −
Individual texels in a texture are laid out in memory as a [http://en.wikipedia.org/wiki/Z-order_curve Z-order curve]. Mipmap data is stored directly following the main texture data.
  −
 
  −
== Texture unit setup: Register 0x80 ==
  −
Register 0x80 is used to enable individual texture units.
  −
 
  −
{| class="wikitable" border="1"
  −
!  Bit
  −
!  Description
  −
|-
  −
| 0
  −
| Enable texture unit 0.
  −
|-
  −
| 1
  −
| Enable texture unit 1.
  −
|-
  −
| 2
  −
| Enable texture unit 2.
  −
|}
  −
 
  −
== Configuration of texture unit 0 ==
  −
{| class="wikitable" border="1"
  −
!  Register ID
  −
!  Description
  −
|-
  −
| 0x0081
  −
| Border color (unverified)
  −
|-
  −
| 0x0082
  −
| Bits 16-31 are the texture width. Bits 0-15 are the texture height. The maximum texture size in either direction is 1024.
  −
|-
  −
| 0x0083
  −
| Texture parameters (filtering, wrapping), see below.
  −
|-
  −
| 0x0084
  −
| LOD setup?
  −
|-
  −
| 0x0085
  −
| Physical address of texture data (divided by 8).
  −
|-
  −
| 0x0086
  −
| Physical address of texture data for cube mapping?
  −
|-
  −
| 0x0087
  −
| Physical address of texture data for cube mapping?
  −
|-
  −
| 0x0088
  −
| Physical address of texture data for cube mapping?
  −
|-
  −
| 0x0089
  −
| Physical address of texture data for cube mapping?
  −
|-
  −
| 0x008A
  −
| Physical address of texture data for cube mapping?
  −
|-
  −
| 0x008B
  −
| Shadow related?
  −
|-
  −
| 0x008E
  −
| Texture format (see below)
  −
|}
  −
 
  −
== Configuration of texture units 1 and 2 ==
  −
Texture units 1 and 2 use a configuration block similar to the one of texture unit 0. They are based at registers 0x0091 and 0x0099.
  −
 
  −
{| class="wikitable" border="1"
  −
!  Index word
  −
!  Description
  −
|-
  −
| 0-4
  −
| Same as for texture unit 0
  −
|-
  −
| 5
  −
| Texture format (see below)
  −
|}
  −
 
  −
== Configuration of texture unit 3 ==
  −
The configuration block for texture unit 3 seems to be vastly different from the other texture units. Instead, registers 0x00A8 through 0x00B7 are used to configure [[GPU/Procedural_Texture_Generation|procedural texturing]] features.
  −
 
  −
== Texture parameters ==
  −
{| class="wikitable" border="1"
  −
!  Bit
  −
!  Description
  −
!  GL parameter name
  −
|-
  −
| 0
  −
| Normally this is value 0.
  −
|
  −
|-
  −
| 1
  −
| 0 = point sampling (GL_NEAREST), 1 = linear interpolation (GL_LINEAR)
  −
| GL_TEXTURE_MAG_FILTER
  −
|-
  −
| 2
  −
| 0 = point sampling (GL_NEAREST*), 1 = linear interpolation (GL_LINEAR*)
  −
| GL_TEXTURE_MIN_FILTER
  −
|-
  −
| 3
  −
| Unused?
  −
| ?
  −
|-
  −
| 5-4
  −
| 2 = texture color type 0xC, 0 otherwise.(Enable/disable texture data compression?) 0 = unknown, 1 = unknown, 3 = same effect as value 2.
  −
|
  −
|-
  −
| 7-6
  −
| Unused
  −
|-
  −
| 11-8
  −
| 0 = GL_CLAMP_TO_EDGE, 1 = GL_CLAMP_TO_BORDER, 2 = GL_REPEAT, 3 = GL_MIRRORED_REPEAT
  −
| GL_TEXTURE_WRAP_S
  −
|-
  −
| 15-12
  −
| Same values as GL_TEXTURE_WRAP_S.
  −
| GL_TEXTURE_WRAP_T
  −
|-
  −
| 24
  −
| 0 = no LOD interpolation (GL_*_MIPMAP_NEAREST), 1 = linear LOD interpolation (GL_*_MIPMAP_LINEAR)
  −
| GL_TEXTURE_MIN_FILTER
  −
|-
  −
| 27-25
  −
| Unused?
  −
|-
  −
| 30-28
  −
| When some flag=1: value1=GL_TEXTURE_2D, value0 when the input parameter is not GL_TEXTURE_2D. When some flag=0: 0=GL_TEXTURE_2D, 1-4=unknown.
  −
| ?
  −
|-
  −
| 31
  −
| Unused?
  −
| ?
  −
|}
  −
 
  −
== Texture color types ==
  −
{| class="wikitable" border="1"
  −
!  Value
  −
!  Description
  −
!  GL Format
  −
!  GL Data Type
  −
|-
  −
| 0x0
  −
| RGBA8888
  −
| GL_RGBA
  −
| GL_UNSIGNED_BYTE
  −
|-
  −
| 0x1
  −
| RGB888
  −
| GL_RGB
  −
| GL_UNSIGNED_BYTE
  −
|-
  −
| 0x2
  −
| RGBA5551
  −
| GL_RGBA
  −
| GL_UNSIGNED_SHORT_5_5_5_1
  −
|-
  −
| 0x3
  −
| RGB565
  −
| GL_RGB
  −
| GL_UNSIGNED_SHORT_5_6_5
  −
|-
  −
| 0x4
  −
| RGBA4444
  −
| GL_RGBA
  −
| GL_UNSIGNED_SHORT_4_4_4_4
  −
|-
  −
| 0x5
  −
| IA8
  −
| GL_LUMINANCE_ALPHA
  −
| GL_UNSIGNED_BYTE
  −
|-
  −
| 0x6
  −
| HILO8
  −
|
  −
|
  −
|-
  −
| 0x7
  −
| I8
  −
| GL_LUMINANCE
  −
| GL_UNSIGNED_BYTE
  −
|-
  −
| 0x8
  −
| A8
  −
| GL_ALPHA
  −
| GL_UNSIGNED_BYTE
  −
|-
  −
| 0x9
  −
| IA44
  −
| GL_LUMINANCE_ALPHA
  −
| GL_UNSIGNED_BYTE_4_4_EXT
  −
|-
  −
| 0xA
  −
| I4
  −
|
  −
|
  −
|-
  −
| 0xB
  −
| A4
  −
| GL_ALPHA
  −
| GL_UNSIGNED_NIBBLE_EXT
  −
|-
  −
| 0xC
  −
| ETC1
  −
| GL_ETC1_RGB8_OES
  −
|
  −
|-
  −
| 0xD
  −
| ETC1A4
  −
|
  −
|
  −
|}
  −
 
  −
[[Category:GPU]]
 
1,434

edits